我目前正在研究一些关于挂钩移动应用程序的技术,并遇到了一些框架,如 Xposed (Android)、Frida (Android 和 iOS) 和 Cycript (iOS)。
关于 Xposed 和 Frida 的文档很好地解释了他们是如何做到的。Xposed 状态来操作二进制文件,启动 Zygote 进程并加载一个额外的 JAR 文件,以帮助挂钩方法。Frida 文档解释说,简而言之,如果我理解正确的话,它使用 ptrace(在 Linux 环境中)附加到进程,分配和填充加载线程以启动包含 frida 代理的 .so 文件的引导程序。
我找不到关于 Cycript 所采用的策略的有用文档。我知道它是建立在 Cydia Substrate 之上的,可以进行实际的挂钩。我也找不到关于 Substrate 究竟是如何做到这一点的详细信息。
我进一步了解,在 iOS 上,objective-c 运行时支持运行时操作,因为它是面向运行时的。
有人知道 Cycript / Cydia Substrate 究竟是如何挂钩/注入应用程序的吗?
提前致谢。