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键让程序继续运行。接着就可对目标程序进行调试分析了。
注意:附加一个程序时,尽量用新打开的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指令恢复原指令,继续调试。
- OD加载程序过程2个方法
- OD加载程序在retn停下的问题
- 程序阻碍OD调试的方式2
- java 程序加载过程---1-类直接调用静态方法
- od加载微软符号
- OD加载微软符号
- java程序加载过程
- Java 程序加载过程
- Linux程序加载过程
- java程序加载过程
- OD断方法
- 几种用OD脱壳方法
- 如何在OD加载程序遇到入口点之前执行代码之一:线程局部存储
- 如何在OD加载程序遇到入口点之前执行代码之二:静态装载DLL
- OD加载微软符号库
- Java程序的加载过程
- 程序集的加载过程
- java程序的加载过程
- 【模板】最长递增公共子序列
- 定时div
- 华东师范大学2020 加密2
- SetRenderState()函数
- 通过JDBC链接Sybase的方法
- OD加载程序过程2个方法
- mysql status字段信息
- curl伪造IP和来路
- java poi读写excel
- 对弹出的弹出窗口操作的处理
- errno的含义
- ComboBox或DataGridViewComboBoxColumn绑定到数据源
- 5.线程的属性和状态
- 程序员的野心:让GPU像CPU一样运行