本文共 1237 字,大约阅读时间需要 4 分钟。
在《核心工程逆向原理》中看到的,记录一下,所有流程都是以Hello World.exe为例
注:仅适用于被调试的代码量不大、且程序功能明确的情况
原理:程序功能非常明确时,逐条执行指令来查找所需查找的位置鼠标右键菜单–Search for–All referenced text strings
当OD载入程序时,会经历一个预分析过程。这个过程中,程序中被引用的字符串和被调用的API都会被摘录出来,整理至另外一个列表中。 使用All referenced text strings命令会弹出一个窗口,其中列出了程序代码所引用的字符串,如图:鼠标右键菜单–Search for–All intermodular calls
原理:在Windows编程中,如果想向显示器显示内容,则需要使用Win32 API想OS请求显示输出。简而言之,就是需要程序内部调用Win32 API。通过推测用到的API来定位地址鼠标右键–Search for–Name in all modules
注:OD并不能把所有文件的API函数调用列表都列出。当使用压缩器/保护器工具对可执行文件进行压缩和保护之后,文件的结构就会发生改变,此时OD就无法列出API的调用表(甚至调试都会非常困难)。 原理:这种情况下,DLL代码库被加载到进程内存后,我们可以直接向DLL代码库添加断点。 OD菜单栏下选择View-Memory菜单(快捷键Alt-M),打开内存映射窗口,可以看到其中显示的一部分"Hello World"和USER32库被加载的内存,如图:第四种方法我还是搞不明白,所出现的地址与书上不符,不知道因为什么…
转载地址:http://yqrkk.baihongyu.com/