python修改内存数据_IDA调试修改内存数据

本文介绍了如何使用IDA调试Python程序,包括修改寄存器值以改变程序流程,篡改内存数据来改变字符串内容,以及NOP函数或代码以避免执行特定函数。通过这些技巧,可以深入理解程序运行机制并进行逆向工程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一: 修改寄存器的值

以图所示的BLX R3这个函数为例,执行完毕后,他的返回值在右面的R0寄存器,对它进行修改。

62e84d2d71a113952add5ed6b02db8f8.png

1.将鼠标移到R0寄存器,右键,选择“Modify value”选项,可以修改为任意值,如下图所示。

802dc4e54d2ce82b50e5de518dfeb0ab.png

2.除了选择“Modify value”选项外,还可以选择“Zero value”选项,直接置零,如下图所示。

a6f2945d30d104bd45958fb7ad6dfda9.png

二:篡改内存数据

在函数头打断点,点击F9,程序成功在函数头断下,紧接着F8往下走,当走到“ADD R2, PC, R2”这条指令时,该指令使用的是相对寻址方式,PC寄存器的值加上R2寄存器的值得到的是一个地址,该地址存放的是一个字符串,即Activity,如下图所示。

f06c110b93bf85678e1c799fb587fbf3.png

1.点开十六进制窗口,同步R2寄存器,如下图所示。

17c5cb5ff01d91218c51eba1cc8476a9.png

2.同步后的值,如下图所示。

280b501e047558faed17608232110482.png

3.直接F2进行修改,如下图所示。

eb4b3cfbde63cb2960fc57c344844069.png

4.“31”代表的是“1”,如下图所示。

10ce363056eddbf9b2a48687b779dc50.png

5.完成上述流程,提交后的效果,如下图所示。

9b99c1c67008ff6f98dbf6854fd3336b.png

三:NOP函数或代码

以BL zhengchu函数为例。

当程序执行到这里,如果继续往下单步,会执行下面这个函数,如下图所示。

eb2edab952bcbd0379ad003e0384ed7c.png

若不想执行此函数,则进行下面的操作流程:

1.进入十六进制窗口,点击鼠标右键,选择Synchronize with再选择IDA View PC同步PC寄存器,如下图所示。

0014f183c279a1c079ba7e005a9fea03.png

2.同步后的效果如下图所示。

8d38e3deaec3016f5df4e6b6d6a46676.png

3.PC寄存器的值永远指向当前指令,所以此刻同步当前PC寄存器的值就是即将要执行的函数BL的值。直接右键选择edit或者直接快捷键F2,如下图所示。

3a0b0aad5a552824fdffa7b145f7f700.png

4.将其全部修改为零,如下图所示。

6844b13e33d37647e49cd6edb56970b3.png

5.修改后,继续右键,F2提交,如下图所示。

5c1f49656c5efb047870971e5b294c50.png

6.完成上述流程,查看原函数,已变成一条无效的指令,如下图所示。

3db23412930249da6ba0dd91286006b7.png

7.直接单步往下走,不会再进入该函数,而是执行下一条指令,如下图所示。

5ce2ec2c80e8d6d8fe7c6c73a4a2dfc9.png

执行到这里,已将函数成功NOP掉,变为一条无效的空指令。

小结

​我们知道如何修改对应寄存器的值:鼠标右键,选择“Modify value”选项,可以改为任意值,或者选择“Zero value”选项,直接置零,同时修改寄存器的值可以实现篡改内存数据,这里需要注意的是NOP函数或代码实现不跳转或者不执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值