我正在尝试修补使用 Objective-C 开发的 cydia 调整。我想修改一段代码以满足我的需要。
我正在使用 IDA Pro V6.8 进行检查。检查后,我认识到每个十六进制字节将代表装配线代码的一部分。
看上面的截图,我们需要8个字节(4A F2 A6 50 C0 F2 01 00)来表示一条“MOV”指令。让我来谈谈这 8 个字节:
- 据我所知,前四个字节(4A F2 A6 50)代表您在屏幕截图中看到的“#(cfstr_UnknownCallbac - 0x9F56)”。
- 后面的两个字节(C0 F2)代表一条 MOV 指令。
- 最后两个字节(01 00)会告诉系统将值从字符串移动到寄存器中,在这种情况下,寄存器是 R0。
我对 MOV 指令和前四个 HEX 字节 (4A F2 A6 50) 有一些担忧
指令中的“0x9F56”是什么意思?
系统如何知道前四个字节正确反映到“#(cfstr_UnknownCallbac - 0x9F56)”而不是任何其他字符串变量?
我需要创建一个新字符串,然后我将使用它来替换现有的 "#(cfstr_UnknownCallbac - 0x9F56)"。我相信我只需要替换前四个十六进制字节,以便它指向新字符串,但我不知道这里应该有什么十六进制代码。
任何帮助表示赞赏,非常感谢。
