cycript / substrate 如何工作以挂钩到进程中?
How does cycript / substrate work to hook into a process?
我目前正在研究有关挂接移动应用程序的技术,并遇到了一些框架,如 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 是如何 hook/inject 进入应用程序的吗?
提前致谢。
它发现通过将 DYLD_INSERT_LIBRARIES 添加到程序的启动清单中显然是有效的,因此每次启动应用程序时,它都会通过加载动态库来加载恶意负载。
还有其他技术如何在 Android 和 iOS 上执行运行时挂钩/操作吗?
我目前正在研究有关挂接移动应用程序的技术,并遇到了一些框架,如 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 是如何 hook/inject 进入应用程序的吗?
提前致谢。
它发现通过将 DYLD_INSERT_LIBRARIES 添加到程序的启动清单中显然是有效的,因此每次启动应用程序时,它都会通过加载动态库来加载恶意负载。
还有其他技术如何在 Android 和 iOS 上执行运行时挂钩/操作吗?