Ollydbg简易教学

Ollydbg介绍

      Ollydbg(简称OD)是Windows平台下Ring3级的程序调试利器。程序调试有静态调试和动态调试两种。静态调试是指将程序源代码编译成可执行程序之前,用手工或编译程序等方法对程序源代码进行测试,来查找和修正程序中的语法错误和逻辑错误。动态调试则是在可执行程序的运行过程中,来查找和修正程序中的语法错误和逻辑错误。随着系统安全与逆向工程的不断发展,程序调试已经成为信息安全爱好者所必备的一种技术。OD结合了静态调试和动态调试的方法,功能强大,已经成为了Windows平台下普通应用程序的调试利器。

      OD官网:http://www.ollydbg.de/(Windows 95、98、ME、NT、XP、Win7)。

      OD汉化版请自行百度。

 

反汇编介绍

      在计算机语言的进化过程中,是由低级语言(机器语言)向高级语言(C、C++、C#、Java等)逐步发展的,但是在实际的运行过程中,计算机能识别的只有机器语言(01代码)。所有高级语言在编译、链接、执行过程中转化为机器语言,并由CPU解释并执行。

      机器语言不仅晦涩难懂,而且难以记忆,因此在计算机语言的进化过程中出现了汇编语言。汇编语言是一种与硬件紧密相关的程序设计低级语言,汇编语言使机器语言以便于记忆和理解的符号形式(又称为助记符)存在。

      汇编是将汇编代码编译、链接成可执行文件的过程。反汇编则是将可执行文件还原成汇编代码的过程。反汇编技术常常应用在逆向分析、软件破解、漏洞挖掘等场景中,主要目的是逆向分析程序中的逻辑,然后改变程序的运行逻辑,达到更改程序执行的目的。

 

1. 熟悉OD的CPU窗口

      打开OD。OD的默认主界面是CPU窗口。CPU窗口由5个子窗口(面板)组成,分别是反汇编窗口,信息窗口,寄存器窗口,数据窗口,堆栈窗口。图示OD现在并没有载入程序,因此所有窗口都是空的。

      

      通过OD菜单–[文件]–[打开](或者快捷键F3)选择一个可执行程序文件(EXE、COM、DLL文件都可以)打开(这里打开OD的测试程序Test.exe)。可以看到OD加载可执行程序时的界面状态。

      

      CPU窗口中的反汇编窗口用于显示被调试程序的代码。它有四个栏,地址栏[address]、十六进制数据栏[hex dump]、反汇编代码栏[disassembled commands]和注释栏[comments]。最后一栏可以改变显示模式为:相关源代码或运行统计[run profile],如果列标题栏可见的话,点列标题栏就可以改变显示模式。

      地址栏[Address] - 显示距双击地址处的相对地址。再次双击基地址,则恢复为标准地址显示模式;

      十六进制数据栏[Hex dump] - 设置或取消非条件断点;

      反汇编栏[Disassembly] - 调用汇编器,修改命令;

      注释栏[Comment] - 增加或修改与命令相关的注释。

 

      CPU窗口中的信息窗口用于解码反汇编窗口中选中的第一个命令的参数,信息窗口也会显示隐含的参数。

      CPU窗口中的数据窗口用于显示内存或文件的内容。可以从以下预处理格式中选择一种显示方式:字节[byte]、文本[text]、整数[integer]、浮点数[float]、地址[address],反汇编[disassembly]、PE头[PE Header]。

      CPU窗口中的寄存器窗口用于显示和解释当前所选线程的CPU寄存器中的内容。该窗口同样允许修改寄存器,并可以跟进地址到其它CPU窗口。

      CPU窗口的堆栈窗口用于显示当前线程的堆栈。当被调试程序暂停运行时,堆栈窗口一般会自动滚动将当前ESP指向的地址放在窗口的第一条。并且这个地址被高亮显示。在某些情况下禁止滚动会更方便一些,可以通过在堆栈窗口右键单击[锁定堆栈]来禁止堆栈自动滚动。

 

2. 熟悉OD的其他窗口

      OD默认主界面是CPU窗口,因为在实际调试程序的过程中,用的最多的是CPU窗口,其他的许多窗口是辅助作用但是也非常实用。用OD打开测试程序Test.exe后,通过菜单->查看->可执行模块,打开可执行模块窗口(快捷键ALT+E)可以查看程序的模块调用信息。

      

      

      其他的窗口还有,记录数据窗口(L)、内存映射窗口(M)、线程窗口(T)、窗口面板(W)、句柄窗口(H)、补丁窗口(/)、调用堆栈窗口(K)、断点窗口(B)、参考窗口(R)、RUN跟踪窗口(…)、源码窗口(S)。详细说明查看OD系统帮助(使用说明书)。

3.如何使用OD开始调试

      在用OD打开测试程序Test.exe时,OD只是载入程序,并没有开始调试程序。在OD最右下角(堆栈窗口右下面)有一个黄色的状态提示窗,若显示为“暂停”,则表示OD处于暂停状态(例如程序尚未运行或者运行到断点位置)。此时,可以单击快捷菜单F9或者打开菜单[调试] – [运行]来运行程序。

      用OD调试程序时,经常交换使用F7/F8/F9快捷键。其中F7表示[单步步入](遇到子函数时跟进到子函数内部,并停在子函数的第一条命令上),F8表示[单步步过](遇到子函数时直接运行完子函数),F9表示[运行]。

      

      在运行Test.exe程序之后,可能会有程序异常导致程序中断。此时根据OD左下角的提示窗口信息可能需要Shift+F7/F8/F9来忽略异常继续执行程序。使用快捷键F9或者Shift+F9直到Text.exe程序入口点,此时OD的左下角信息提示窗口提示[程序入口点],表示已经运行到Text.exe的真实入口点。

      继续使用快捷键F9运行程序,观察在不设置断点的情况下,OD调试器进入到Test.exe程序主界面的运行状态。

      

       单击Test.exe主界面的[Close]按钮,观察Test.exe程序终止时OD的运行状态。

      

4.常用OD设置

      OD调试器提供了非常多的调试设置选项。

      打开OD菜单-[选项]-[界面],设置OD的外观。包含字体,颜色,代码高亮等设置,其中目录的UDD路径提供了OD默认保存的修改过的调试程序和备份用的调试程序,插件路径提供了OD的插件存放的路径。.\表示OD主程序所在目录的当前绝对路径。.\UDD即表示OD当前目录的UDD目录下。

      

5.常用OD快捷键

      是否熟练使用快捷键是衡量使用者技术水平的一个重要标准。OD的快捷键相当丰富,当然我们经常用到的也不过那么十几个,请自行练习使用以下OD快捷键。

      (1) Enter(回车键):将选中的命令添加到命令历史[command history]中,如果当前命令是一个跳转、函数或者是转换表的一个部分,则进入到目的地址;

      (2) F2:在CPU窗口的反汇编窗口中,在选择的命令上开关INT3断点[Breakpoint],也可以双击该行第二列[HEX数据];

      (3) F7:表示[单步步入](遇到子函数时跟进到子函数内部,并停在子函数的第一条命令上);

      (4) F8:表示[单步步过](遇到子函数时直接运行完子函数);

      (5) F9:表示[运行],在遇到断点后可以单击F9继续运行程序;

      (6) Shift+F7/F8/F9:忽略异常,继续运行程序;

      (7) Ctrl+F2:重新载入调试程序;

      (8) Alt+F2:关闭调试程序;

      (9) 空格键:汇编代码修改。可在CPU窗口中的反汇编窗口中以汇编代码修改实际代码或输入新代码,也可以在想要修改的代码处双击鼠标;

      (10) Alt+B/C/E/K/L/M:显示断点窗口/CPU窗口/模块窗口/调用栈窗口/日志窗口/内存窗口;

      (11) Alt+X:关闭OD;

      (12) Ctrl+B:二进制(十六进制)搜索;

      (13) Ctrl+E:二进制(十六进制)编辑所选内容;

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

b1ackc4t

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值