如何在应用程序运行时修改各个汇编指令?
我有一个移动基板调整,我正在为现有的应用程序编写。在调整的构造函数(MSInitialize
)中,我需要能够在应用程序的代码中重写单独的指令。我的意思是,在应用程序的地址空间中可能有多个我希望修改的位置,但在每个实例中,只需要修改一条指令。我已经为应用程序禁用了ASLR,并且知道要打补丁的指令的确切内存地址,并且我有新指令的十六进制字节(作为char[],但这并不重要,如果需要可以更改)。我只需要弄清楚如何执行更改。
我知道iOS使用数据执行保护(DEP)来指定可执行内存页面不能也是可写的,反之亦然,但我知道在越狱设备上可以绕过这一点。我还知道iDevices使用的ARM处理器有一个指令缓存,需要更新以反映变化。然而,我甚至不知道从哪里开始做这个。
所以,为了回答这个肯定会被问到的问题,我没有尝试任何东西。这并不是因为我懒惰,而是因为我完全不知道如何才能做到这一点。任何帮助都将不胜感激。
编辑:
如果它有任何帮助,我的最终目标是将其用于挂接App Store应用程序的移动底层调整中。以前,为了修改这个应用程序,人们必须首先破解它来解密应用程序,这样二进制文件才能被修补。我想让人们不必破解应用程序,因为这会导致盗版,而我强烈反对盗版。我不能正常使用移动底层,因为所有的工作都是在C++中完成的,而不是Objective-C,而且应用程序被剥离了,没有留下任何符号来使用MSHookFunction
。
https://stackoverflow.com/questions/13598571
复制相似问题