2012-11-17 43 views
1

我使用GDB并希望修改iOS应用程序。 (例如:在游戏变化得分)如何在从GDB获取值后编辑二进制文件

所以,我设置断点,例如:

b *0x0032c870 

,并在断点,我进入

info r 

在此之后,GDB显示

r0    0x92717c0 153556928 
r1    0x7d47a0 8210336 
r2    0x0 0 

现在我知道我需要的是改变R2 1

​​

现在游戏中的值发生变化。

好的,有一个问题,我怎么能编辑hexeditor设置r2 = 1而不是每次使用gdb?

谢谢

回答

1

我怎么能在16进制软件进行编辑设定R2 = 1而不是用gdb每次

不能:的r2值是的价值注册号;它在程序运行之前不存在。

你需要做的是找出在该值加载到寄存器,并更改代码使其加载1,而不是0

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

相关问题