第3章 熟悉调试工具OllyDbg
工具的目的主要是起到杠杆的作用,用最省力的办法干最大的事情。在物理学中有杠杆,在金融界有杠杆,在计算机世界中也需要杠杆。在计算机诞生之初,对程序的调试需要使用各种控制按钮与指示灯(在早期可能有比这更艰苦的调试方式)。控制按钮用来改变和操作程序的流程,指示灯用来给操作者反馈当前程序的执行情况或执行状态,由于程序的复杂,用按钮和指示灯是无法很好地满足程序的调试的。不过值得庆幸的是,用控制按钮和指示灯调试程序是计算机诞生之初的事情了,笔者与读者所处的时代,已经有了更先进、更直观和更好用的调试利器。下面,笔者就带领准备入行的新人来接触一下本书的第一款逆向工具——OllyDbg,简称OD。
本章关键字:OllyDbg调试OD插件OD脚本
3.1认识OD调试环境
OllyDbg是一款应用层下具有可视化界面的32位反汇编动态分析调试器。OD被众多的安全爱好者所喜欢,常常被用来进行脱壳、功能分析、漏洞挖掘等。同时,OD有良好的扩展性,提供了丰富的接口,目前拥有相当多的插件供OD使用者进行使用,使得OD在原有的基础上更加的强大。
3.1.1启动调试
调试者在通过OD调试器准备调试一个软件或程序时,要让OD调试器和准备调试的软件或程序建立调试关系。OD调试器与被调试的软件或程序有3种方式建立调试关系,分别是“直接打开被调试程序”“附加到被调试程序所产生的进程上”和“实时调试”。
1.直接打开被调试程序
打开被调试软件或程序最直接的方式就是通过OD菜单栏的“文件”→“打开”(或按下快捷键F3)来完成。打开对话框如图3-1所示。
通过菜单“文件”→“打开”后,会弹出如图3-1所示的“打开32位可执行文件”的对话框,在该对话框中可以选择一个可执行程序进行调试,通常调试的是EXE文件,有时也会调试DLL文件。选中要调试的可执行程序后,单击“打开”按钮,被选中的软件或程序就与OD调试器建立起了调试关系。
在图3-1所示对话框的最下方有一个可以输入“参数”的输入框。通常情况下,在使用OD调试程序时可以直接打开程序,但是有些可执行程序是需要带入参数才能被正确执行的,比如常用的一些命令,如“ping”、“netstat”等。在这种情况下,则需要在“参数”后面的输入框中输入相应的参数。在图3-1中,选择的被调试的程序为ping命令,传入的参数是127.0.0.1。
注意:在“参数”输入框中输入的参数会原样地带入到被调试程序中,比如有的命令的参数开关需要“-”或者 “/”字样等,则直接在参数框中进行输入即可。
2.附加到被调试程序所产生的进程上
OD直接打开被调试程序,是从被调试程序开始创建时,调试器就接管了被调试的可执行程序。OD也可以直接调试正在运行中的程序,即调试器附加到被调试程序所创建的进程上来进行调试。比如为了进行“爆”破,等待被逆向程序弹出类似“注册失败”的对话框后,再通过OD附加到被逆向程序的进程上,从而分析弹出对话框的流程。
附加到被调试程序所创建的进程上的方法,是通过OD菜单的“文件”→“附加”弹出“选择要附加的进程”的对话框,如图3-2所示。
在图3-2“选择要附加的进程”窗口中,有一个进程列表,在进程列表中选中相应的进
程,然后单击“附加”按钮,OD就会附加到进程上,从而可以对进程进行调试。
注意:在“选择要附加的进程”窗口中的进程列表中,红色的进程代表被当前
将上面的代码编译、连接并运行,运行后会先由MessageBox弹出一个“hello”字符串的对话框。然后由INT 3触发一个软件中断,触发软件中断后,如图3-4所示。
在出现该对话框后,单击“调试程序”即可通过设置好的实时调试器,即OD进行调试,OD调试崩溃的软件时停留在崩溃的地址处,如图3-5所示。
从图3-5可以看出,当OD作为实时调试器来调试产生异常的程序后,会直接停留在产生异常的地址处,这样就可以通过OD中的其他窗口来分析产生异常的原因了。
如果希望通过OD调试自己编写的程序,为了只调试关键部分,可在关键的部分处写一条INT3指令让其触发软件中断,然后就可以使用实时调试器进行调试。这种方法不仅限于使用OD调试器。
谢谢分享 每天都能学到新知识,赞! 有楼主这样的热心人真好 谢谢分享 再发点啊,我喜欢你发的 学习永不停歇 必火 正好需要谢谢分享啊 回复,顶帖,赚币,谢谢楼主 谢谢分享