如何从GDB获取值后编辑二进制文件



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

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

最新更新