1

我使用 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?

谢谢

4

1 回答 1

1

如何在 hexeditor 中进行编辑以设置 r2=1 而不是每次都使用 gdb

不能: 的值r2寄存器的值;在程序运行之前它不存在。

您需要做的是找出该值加载到寄存器中的位置,并更改那里的代码以使其加载1而不是0.

这可能非常容易,也可能很棘手,具体取决于该值的加载方式:如果将其作为常量加载(只需更改指令以加载不同的常量),则很容易。但很可能它是作为某个函数的返回值加载的,在这种情况下,您必须更改该函数以返回不同的值。

于 2012-11-17T15:26:49.240 回答