我使用GDB并希望修改iOS应用。 (例如:改变游戏中的得分)
所以,我设置了断点,例如:
b *0x0032c870
在断点处,我输入
info r
之后,gdb显示
r0 0x92717c0 153556928
r1 0x7d47a0 8210336
r2 0x0 0
现在我知道我需要的是将r2改为1
set $r2=1
现在游戏中的价值会发生变化。
好的,有一个问题,如何在hexeditor中编辑以设置r2 = 1而不是每次都使用gdb?
谢谢
答案 0 :(得分:1)
如何在hexeditor中编辑以设置r2 = 1而不是每次使用gdb
你不能:r2
的值是寄存器的值;在程序运行之前它不存在。
您需要做的是弄清楚该值加载到注册表中的位置,并更改代码 以使其加载1
而不是0
。
根据加载值的方式,这可能非常简单或棘手:如果将其作为常量加载(只需更改指令以加载不同的常量),则很容易。但是很有可能它被作为某个函数的返回值加载,在这种情况下,你必须更改该函数以返回不同的值。