OD加载程序过程2个方法

来源:互联网 发布:新的淘宝店铺怎么装修 编辑:程序博客网 时间:2024/05/22 03:34

OllyDbg可以用两种方式加载目标程序调试,一种是通过CreateProcess创建进程;另一种是利用DebugActiveProcess函数将调试器捆绑到一个正在运行的进程上。

1.利用CreateProcess创建进程

单击菜单“File/Open”或按快捷键F3打开目标文件,这样会调用CreateProcess创建一个用以调试的新进程。OllyDbg将接收到目标进程发生的调试事件,而对其子进程的调试事件将不予理睬。

OllyDbg除了直接加载目标程序外,也支持带参数的程序,方法是:在打开对话框中的“Arguments”栏中输入参数行,如图2.7所示。

 图2.7  带参数调试程序

2.将OllyDbg附加到一个正在运行的进程上(据说od 载入会调用PsSuspendThread)

OllyDbg的一个实用的功能是可以调试正在运行的程序,这个功能称为“附加(Attach)”。其原理是利用DebugActiveProcess函数可以将调试器捆绑到一个正在运行的进程上,如果执行成功,则效果类似于利用CreateProcess创建的新进程。

单击菜单“File/Attach”打开附加对话框,如图2.8所示。选中正在运行的目标进程,单击Attach按钮即可附加目标进程。附加后,目标程序会暂停在Ntdll.dll的DbgBreakPoint处,在OllyDbg里按一下F9键或Shift+F9键让程序继续运行。接着就可对目标程序进行调试分析了。

 图2.8  附加目标进程

注意:附加一个程序时,尽量用新打开的OllyDbg,这样附加的成功率高些。

如果是隐藏进程,就不能用上述方法附加了。OllyDbg有一个-p启动参数,只要得到进程的pid就可以附加了。用IceSword等工具获得隐藏进程的pid,然后在控制台窗口用-p参数附加即可。注意,pid的值是十进制。

C:\OllyDbg.exe –p pid值 
如果附加不成功,可以巧妙利用OllyDbg的即时调试器功能来调试。先看一个例子,运行A.exe,其会调用B.exe,此时用OllyDbg附加B.exe,OllyDbg会无响应。解决办法:在“Options/Just-in-time debugging”中设置OllyDbg为即时调试器,将B.exe的入口改成CC,即INT 3指令,同时记下原指令。运行A.exe,其调用B.exe,运行到INT 3指令会导致异常,OllyDbg会作为即时调试器启动并加载B.exe,此时再将INT 3指令恢复原指令,继续调试。
原创粉丝点击