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