OllyDebug调试技巧(三)

Chinese:

1、GetModuleHandleA这个api用于获取程序的ImageBase(基地址),可以从PEInfo获取。

2、MessageBox有一个参数是OwnerHandle(父窗口句柄),如果为0则表示桌面的句柄,我们可以通过将这个值改为一个不存在的句柄,例如1,这样这个MessageBox就不会显示出来了。

3、可以通过查找PE结构里面的程序入口,然后只要修改这个程序入口的地址,那么就可以跳过一些不必要的指令了。

4、如果想让一些指令不执行,可以通过jmp直接跳到后面的地址,也可以将这些指令用nop填充,但是要注意不能损坏正常的程序运行逻辑。

5、有些文件篡改了PE头的信息,虽然程序可以正常运行,但是却使得程序无法被OllyDebug反调试,这个时候需要去查看PE文件头的信息,找到被篡改的值将其修复。

6、SEH(Structured Exception Handling),结构化异常处理。SEH是Windows操作系统提供的功能,和开发工具无关。

7、异常也可以当作是一种消息,应用程序发生异常时就触发了该消息并告知系统,接收后同样会找它的回调函数,也就是我们的异常处理例程。

8、如果程序中没有做异常处理,系统也不会置之不理,它将弹出常见的错误框,然后结束该程序。

9、在OD中,也可以SHIFT+F9来忽略异常,也可在设置里面设置忽略的异常Code。

10、在OD中先暂停,使用ALT+F9会自动返回到用户程序的领空。

11、Ctrl+N可以查看输入表,可以通过右键下api断点。

12、右键->查找->所有参考文本字符串 可以查询字符串,记得从头开始查询,然后双击查询到的字符串即可跳到对应的地址。

13、右键->查找参考->选定命令 可以跟踪这条指令

14、右键->查找->所有模块中的调用 可以用来查询api

posted @ 2013-08-07 23:39  我是枫子  阅读(1716)  评论(0编辑  收藏  举报