因此,如果从学习的角度来讲,建议选择原版的OD进行使用。在使用的过程中,除了会掌握很多调试技巧外,还会学到很多反调试的技巧,从而掌握反反调试的技巧。如果在实际的应用中,则可以直接使用修改版的OD,避免OD被软件反调试,从而提高逆向调试分析的速度。
2.熟悉OD主界面
OD的发行是一个压缩包,解压即可运行使用,运行OD解压目录总的ollydbg.exe程序,就会出现一个分布恰当、有菜单有面板和能输入命令的看着很强大的软件窗口,如图1-4所示。
在图1-4的OD调试主窗口中的工作区大致可以分为6个部分,按照从左往右、从上往下,这6部分分别是反汇编窗口、信息提示窗口、数据窗口、寄存器窗口、栈窗口和命令窗口。下面分别介绍各个窗口的用法。
反汇编窗口:该窗口用于显示反汇编代码,调试分析程序主要在这个窗口中进行,这也是进行调试分析的主要工作窗口。
数据窗口:该窗口用于以多种格式显示内存中的内容,可使用的格式有Hex、文本、短型、长型、浮点、地址和反汇编等。
寄存器窗口:该窗口用于显示各个寄存器的内容,包括前面介绍的通用寄存器、段寄存器、标志寄存器、浮点寄存器。另外,还可以在寄存器窗口中的右键菜单选择显示MMX寄存器、3DNow!寄存器和调试寄存器等。
栈窗口:该窗口用于显示栈内容、栈帧,即ESP或EBP寄存器指向的地址部分。
命令窗口:该窗口用于输入命令来简化调试分析的工作,该窗口并非基本窗口,而是由OD的插件提供的功能,由于几乎所有的OD使用者都会使用该插件,因此有必要把它也列入主窗口中。

图1-4OD调试主窗口
3.在数据窗口中查看数据
前面已经介绍,OD是一款应用层下的调试工具,它除了可以进行软件的调试以外,还可以帮助我们学习前面介绍的数据宽度、进制转换等知识,而且能够帮助我们学习汇编语言。本节主要介绍通过OD的数据窗口来观察数据宽度。
为了能够直观地观察内存中的数据,我们通过RadAsm创建一个没有资源的汇编工程,然后编写一段自己的汇编代码,代码如下:

在上面的代码中,定义了10个全局变量。首先,var1、var2和var3分别定义了dword类型的3个变量,其中var1的值是十六进制的12h,var2的值是十进制的12,var3的值是2进制的11b。b1到b4四个变量是字节类型的,w1和w2两个变量是字类型的,d变量是dword类型的。
这10个全局变量就是我们要考察的关键。在RadAsm中进行编译连接后,直接按下Ctrl + D这个快捷键,即可在RadAsm安装时自带的OD中打开。在OD调试器中打开该程序后,观察它的数据窗口(如图1-5所示)。

图1-5数据窗口中查看变量
在图1-5中,数据窗口一共有3列,分别是地址列、HEX数据列和ASCII列。这3个列,可以通过单击鼠标右键来改变现实方式和显示的列数。在地址00403000处开始的4个字节12 00 00 00是十六进制的12,也就是在汇编代码中定义的var1;在地址00403004处的4个字节0C 00 00 00是十六进制0C,也就是在汇编代码中定义的var2,var2变量定义的值是十进制的12,也就是十六进制的0C;在地址00403008处的4个字节03 00 00 00是十六进制的03,也就是在汇编代码中定义的var3,var3变量定义的值是2进制的11,也就是十六进制的03。
这3个变量在我们定义的时候都是以dd进行的,都是dword类型的变量,分别各占用4字节,因此在内存中,前3个变量分别是12 00 00 00、0C 00 00 00和03 00 00 00。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-59929-4.html
不行贿能行吗
千玺千玺千玺
更新后