可扩展才是OD真正的意义,可以自己写DLL与OD通信,从而操控OD。

利用内存或者硬件断点,对指定地址下断,一旦有指令对该地址操作了,就记录下寄存器,并打印出来。类似CE里边的,查找访问此地址的代码。这样可以从汇编角度,利用动态地址定位到基址。进而分析程序结构。

工具/原料

  • od dll

方法/步骤

  1. 1

    首先设置,采用内存访问断点,记录eax的值。并且在stop后合并重复的EIP,使每个EIP只出现一次,避免某些地址访问过多影响我们的判断。

  2. 2

    第二就点击插件中的Start菜单,开始下断,并响应断点回调。

    使用DebugView可以查看到每次断下的信息,可以用“@@@”过滤。

  3. 3

    点击stop后,停止记录。可以看到“###”开头的会合并相同的EIP输出。

  4. 4

    再来试试硬下断点,看是否结果一样

  5. 5

    这次我们去掉合并重复EIP,采用硬件访问,长度默认都是1,记录三个寄存器。

  6. 6

    发现硬件断点和内存断点记录的并不一样。

    因为硬断的特殊性吧,大小是1,记录不完全,并且记录的EIP是在下一行断下的。

    内存断点因为内存页面大小和频繁的切换属性,会影响监视进程的速度。

  7. 7

    需要着重提到,监控频繁访问的内存地址的话,会很卡。

    END

注意事项

  • 需要着重提到,监控频繁访问的内存地址的话,会很卡。
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。