可扩展才是OD真正的意义,可以自己写DLL与OD通信,从而操控OD。
利用内存或者硬件断点,对指定地址下断,一旦有指令对该地址操作了,就记录下寄存器,并打印出来。类似CE里边的,查找访问此地址的代码。这样可以从汇编角度,利用动态地址定位到基址。进而分析程序结构。
工具/原料
- od dll
方法/步骤
- 1
首先设置,采用内存访问断点,记录eax的值。并且在stop后合并重复的EIP,使每个EIP只出现一次,避免某些地址访问过多影响我们的判断。
- 2
第二就点击插件中的Start菜单,开始下断,并响应断点回调。
使用DebugView可以查看到每次断下的信息,可以用“@@@”过滤。
- 3
点击stop后,停止记录。可以看到“###”开头的会合并相同的EIP输出。
- 4
再来试试硬下断点,看是否结果一样
- 5
这次我们去掉合并重复EIP,采用硬件访问,长度默认都是1,记录三个寄存器。
- 6
发现硬件断点和内存断点记录的并不一样。
因为硬断的特殊性吧,大小是1,记录不完全,并且记录的EIP是在下一行断下的。
内存断点因为内存页面大小和频繁的切换属性,会影响监视进程的速度。
- 7
需要着重提到,监控频繁访问的内存地址的话,会很卡。
END
注意事项
- 需要着重提到,监控频繁访问的内存地址的话,会很卡。
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。