IDA调试修改内存数据
一: 修改寄存器的值
以图所示的BLX R3这个函数为例,执行完毕后,他的返回值在右面的R0寄存器,对它进行修改。
1.将鼠标移到R0寄存器,右键,选择“Modify value”选项,可以修改为任意值,如下图所示。
2.除了选择“Modify value”选项外,还可以选择“Zero value”选项,直接置零,如下图所示。
需要相关资料的朋友,可以【加入此处即可打包获取】
二:篡改内存数据
在函数头打断点,点击F9,程序成功在函数头断下,紧接着F8往下走,当走到“ADD R2, PC, R2”这条指令时,该指令使用的是相对寻址方式,PC寄存器的值加上R2寄存器的值得到的是一个地址,该地址存放的是一个字符串,即Activity,如下图所示。
1.点开十六进制窗口,同步R2寄存器,如下图所示。
2.同步后的值,如下图所示。
3.直接F2进行修改,如下图所示。
4.“31”代表的是“1”,如下图所示。
5.完成上述流程,提交后的效果,如下图所示。
三:NOP函数或代码
以BL zhengchu函数为例。
当程序执行到这里,如果继续往下单步,会执行下面这个函数,如下图所示。
若不想执行此函数,则进行下面的操作流程:
1.进入十六进制窗口,点击鼠标右键,选择Synchronize with再选择IDA View PC同步PC寄存器,如下图所示。
2.同步后的效果如下图所示。
3.PC寄存器的值永远指向当前指令,所以此刻同步当前PC寄存器的值就是即将要执行的函数BL的值。直接右键选择edit或者直接快捷键F2,如下图所示。
4.将其全部修改为零,如下图所示。
5.修改后,继续右键,F2提交,如下图所示。
6.完成上述流程,查看原函数,已变成一条无效的指令,如下图所示。
7.直接单步往下走,不会再进入该函数,而是执行下一条指令,如下图所示。
执行到这里,已将函数成功NOP掉,变为一条无效的空指令。
小结
我们知道如何修改对应寄存器的值:鼠标右键,选择“Modify value”选项,可以改为任意值,或者选择“Zero value”选项,直接置零,同时修改寄存器的值可以实现篡改内存数据,这里需要注意的是NOP函数或代码实现不跳转或者不执行。
**感兴趣的小伙伴可以关注公众号“宸道移动安全团队”。
- IDA附加调试apk程序,并修改内存,编写IDA脚本程序,把修改后的dex文件dump到本地
- Ida动态修改android程序的内存数据和寄存器数值,绕过so文件的判断语句
- Ida动态修改android程序的内存数据和寄存器数值,绕过so文件的判断语句
- Android逆向之旅---Android中分析某音短视频的数据请求加密协议(IDA动态调试SO)第一篇
- Fiddler4 开启调试(修改请求和返回数据)
- android加固系列—2.加固前先要学会破解,调试内存值修改程序走向
- [OpenGL调试]保存并查看内存中的数据图像
- 修改内存数据程序(MFC)
- stm32调试-- 获取内存数据
- Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
- Oracle 修改一行数据内存主要变化
- 从配置文件(*.config)读到内存中,手动修改配置文件后,内存中数据改变问题.
- 【ABAP系列】SAP ABAP如何在调试查看EXPORT/IMPORT 内存数据
- Android逆向之旅---Android中分析某短视频的数据请求加密协议(IDA动态调试SO)第二篇
- 2、lib7z-Memory从内存或网络解压数据(分析源码,修改源码)
- ABAP如何在调试查看EXPORT/IMPORT 内存数据
- [cocos2dx]防止八门神器修改内存数据
- 修改内存表中的数据
- android加固系列—2.加固前先要学会破解,调试内存值修改程序走向
- Android动态调试so之dump内存数据