1. OllyDbg可以用两种方式加载被调试的目标程序,一是通过CreateProcess创建进程,二是用函数DebugActiveProcess将OD
绑定到一个正在运行的程序上。
1.1 用CreateProcess创建进程
1.1.1 单击菜单“File / Open” 或 快捷键F3打开要调试的可执行程序,OD会调用CreateProcess创建一个用以调试的新进程。
OD将接收新进程发生的调试事件,而对新进程创建的子进程的调试事件不予理会。
1.1.2 如何调试需要带命令行参数的程序:
用1.1.1中方法打开可执行程序时,在打开对话框中的“Arguments”栏中输入需要的参数即可。
1.2 把OD附加到一个正在运行的程序上
1.2.1 用调试器调试一个正在运行的程序叫附加(Attach)。其原理是利用DebugActiveProcee函数可以把调试器 绑定到一
个正在运行的程序上。
1.2.2 方法是单击菜单“File/Attach”打开附加对话框,在正在运行的进程列表中选择要调试的进程,再单击Attach按钮即可。
附加后,目标进程会暂停在Ntdll.dll中的DbgBreakPoint处,按 F9 或 Shift + F9即可让程序继续运行。
1.2.3 附加到隐藏进程。
OD有一个命令行启动参数 -p ,先用其它工具获取到隐藏进程的pid,再在命令行上用 -p 参数附加即可。
> OllyDbg.exe -p pid
(注意:pid是十进制的值)
1.3 用OD的即时调试器功能来调试。
1.3.1 设置OD为即时调试器
单击 “ Options/Just-in-time debugging”。
1.3.2 举例说明:
有两个exe文件:A.exe 和 B.exe,运行A.exe时,其会调用B.exe,此时用OD附加B.exe,OD无法调试B.exe。
若将B.exe的程序入口点处指令改为0xCC,再运行A.exe,当其调用B.exe时会产生INT 3 ( 0xCC )异常,此时
OD将作为即时调试器调试B.exe,将INT 3指令恢复为原始指令后进行调试。