OllyDbg学习入门完全教学教材(完美排版~).doc
《OllyDbg学习入门完全教学教材(完美排版~).doc》由会员分享,可在线阅读,更多相关《OllyDbg学习入门完全教学教材(完美排版~).doc(43页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、#*OllyDbgOllyDbg 完全教程完全教程目录目录第一章 概述.1 第二章 组件.5 一、一般原理General prnciples.5 二、反汇编器Disassembler.8 三、分析器Analysis.9 四、Object 扫描器Object scanner .12 五、Implib 扫描器 Implib scanner .12 第三章 OllyDbg 的使用 .13 一、如何开始调试How to start debugging session.13 二、CPU 窗口CPU window.14 三、断点Breakpoints.14 四、数据窗口Dump.15 五、可执行模块窗口E
2、xecutable modules window.16 六、内存映射窗口Memory map window.17 七、监视与监察器Watches and inspectors.19 八、线程Threads.19 九、调用栈Call stack.20 十、调用树Call tree.21 十一、选项Options.21 十二、搜索Search.22 十三、自解压文件Selfextracting (SFX) files.22 十四、单步执行与自动执行Stepbystep execution and animation.23 十五、Hit 跟踪Hit trace .23 十六、Run 跟踪Run tr
3、ace.24 十七、 快捷键.26 十八、插件Plugins.29 十九、技巧提示Tips and tricks.29 第四章 其他功能.30 一、调试独立的 DLLDebugging of standalone DLLs .30 二、解码提示Decoding hints.32 三、表达式赋值Evaluation of expressions.32 四、自定义函数描述Custom function descriptions.341第一章第一章 概述概述OllyDbg 是一种具有可视化界面的 32 位汇编分析调试器。它的特别之处在于可以 在没有源代码时解决问题,并且可以处理其它编译器无法解决的难
4、题。Version 1.10 是最终的发布版本。 这个工程已经停止,我不再继续支持这个软件了。 但不用担心:全新打造的 OllyDbg2.00 不久就会面世!运行环境:OllyDbg 可以以在任何采用奔腾处理器的 Windows 95、98、ME、NT 或 是 XP(未经完全测试)操作系统中工作,但我们强烈建议你采用 300MHz 以上的奔腾 处理器以达到最佳效果。还有,OllyDbg 是极占内存的,因此如果你需要使用诸如追踪调 试Trace之类的扩展功能话,建议你最好使用 128MB 以上的内存。支持的处理器:OllyDbg 支持所有 80x86、奔腾、MMX、3DNOW!、Athlon 扩
5、展指 令集、SSE 指令集以及相关的数据格式,但是不支持 SSE2 指令集。配置: 有多达百余个选项用来设置 OllyDbg 的外观和运行。数据格式:OllyDbg 的数据窗口能够显示的所有数据格式: HEX、ASCII、UNICODE、 16/32 位有/无符号/HEX 整数、32/64/80 位浮点数、地址、反 汇编(MASM、IDEAL 或是 HLA) 、PE 文件头或线程数据块。帮助: 此文件中包含了关于理解和使用 OllyDbg 的必要的信息。如果你还有 Windows API 帮助文件的话(由于版权的问题 win32.hlp 没有包括在内) ,你可以将它挂在可以将它挂在 OllyD
6、bg 中,这样就可以快速获得系统函数的相关帮助中,这样就可以快速获得系统函数的相关帮助。启动: 你可以采用命令行的形式指定可执行文件、也可以从菜单中选择,或直接拖放 到 OllyDbg 中,或者重新启动上一个被调试程序,或是挂接Attach一个正在运行的程 序。OllyDbg 支持即时调试。OllyDbg 根本不需要安装,可直接在软盘中运行! 调试 DLLs: 你可以利用 OllyDbg 调试标准动态链接库 (DLLs)。OllyDbg 会自动运 行一个可执行程序。这个程序会加载链接库,并允许你调用链接库的输出函数。源码级调试:OllyDbg 可以识别所有 Borland 和 Microsof
7、t 格式的调试信息。这些信 息包括源代码、函数名、标签、全局变量、静态变量。有限度的支持动态(栈)变量和结 构。代码高亮:OllyDbg 的反汇编器可以高亮不同类型的指令(如:跳转、条件跳转、入 栈、出栈、调用、返回、特殊的或是无效的指令)和不同的操作数(常规general 、 FPU/SSE、段/系统寄存器、在栈或内存中的操作数,常量) 。你可以定制个性化高亮方案。线程:OllyDbg 可以调试多线程程序。因此你可以在多个线程之间转换,挂起、恢复、 终止线程或是改变线程优先级。并且线程窗口将会显示每个线程的错误(就像调用 GETLASTERROR 返回一样) 。分析:OllyDbg 的最大特
8、点之一就是分析。它会分析函数过程、循环语句、选择语句、 表tables 、常量、代码中的字符串、欺骗性指令tricky constructs 、API 调用、函数中 参数的数目,import 表等等。这些分析增加了二进制代码的可读性,减少了出错的可能性,2使得我们的调试工作更加容易。Object 扫描:OllyDbg 可以扫描 Object 文件/库(包括 OMF 和 COFF 格式) ,解压代 码段code segments并且对其位置进行定向。Implib 扫描: 由于一些 DLL 文件的输出函数使用的索引号,对于人来说,这些索引 号没有实际含义。如果你有与 DLL 相应的输入库impor
9、t library ,OllyDbg 就可以将序号 转换成符号名称。完全支持 Unicode: 几乎所有支持 ASCII 的操作同时也支持 UNICODE,反之亦然。名称:OllyDbg 可以根据 Borland 和 Microsoft 格式的调试信息,显示输入/输出符号 及名称。Object 扫描器可以识别库函数。其中的名称和注释你可任意添加。如果 DLL 中 的某些函数是通过索引号输出的,则你可通过挂接输入库import library来恢复原来的 函数名称。不仅如此,OllyDbg 还能识别大量的常量符号名(如:窗口消息、错误代码、 位域bit fields)并能够解码为已知的函数调用。
10、已知函数:OllyDbg 可以识别 2300 多个 C 和 Windows API 中的常用函数及其使用 的参数。你可以添加描述信息、预定义解码。你还可以在已知函数设定 Log 断点并可以 对参数进行记录。函数调用:OllyDbg 可以在没有调试信息或函数过程使用非标准的开始部分prolog 和结尾部分epilog的情况下,对递归调用进行回溯。译者注:004010D0 push ebp 004010D1 mov ebp,esp |004010D3 sub esp,10h |prolog004010D6 push ebx |004010D7 push esi |004010D8 push edi
11、 /004010C5 pop edi 004010C6 pop esi |004010C7 pop ebx |epilog004010C8 mov esp,ebp |004010CA pop ebp |004010CB ret/栈:在栈窗口中,OllyDbg 能智能识别返回地址和栈框架Stack Frames 。并会留下 一些先前的调用。如果程序停在已知函数上,堆栈窗口将会对其参数进行分析解码。译者注:栈框架Stack Frames是指一个内存区域,用于存放函数参数和局部变量。SEH 链: 跟踪栈并显示结构化异常句柄链。全部链会显示在一个单独的窗口中。搜索:方法真是太多了!可精确、模糊搜索命令
12、或命令序列,搜索常数,搜索二进制、 文本字符串,搜索全部命令地址,搜索全部常量或地址域address range ,搜索所有能跳 到选定地址的跳转,搜索所有调用和被调用的函数,搜索所有参考字符串,在不同模块中3搜索所有调用、搜索函数名称,在全部已分配的内存中搜索二进制序列。如果搜索到多个 结果,你可以对其进行快速操作。窗口:OllyDbg 能够列出关于调试程序中的各种窗口,并且可以在窗口、类甚至选定 的消息上设置断点。 资源:如果 Windows API 函数使用了参考资源串,OllyDbg 可以显示它。其支持显 示的类型仅限于附带资源attached resources的列表、数据显示及二进
13、制编辑。断点:OllyDbg 支持各种断点:一般断点、条件断点、记录断点(比如记录函数参数 到记录窗口) 、内存读写断点、硬件断点(只适用于 ME/NT/2000)等。在 Hit 跟踪情况下, 可以在模块的每条命令上都设置 INT3 断点。在使用 500MHZ 处理器的 Windows NT 中, OllyDbg 每秒可以处理高达 5000 个中断。 监视与监察器:每个监视都是一个表达式并能实时显示表达式的值。你可以使用寄存 器、常数、地址表达式、布尔值以及任何复杂代数运算,你还可以比较 ASCII 和 UNICODE 字符串。监察器inspectors是一种包含了两个的索引序列的监视Watc
14、hes , 它以二维表的形式呈现,可以对数组和结构进行解码分析。 Heap walk.:在基于 Win95 的系统中,OllyDbg 可以列出所有的已分配的堆。句柄:在基于 NT 的系统中,OllyDbg 可列出被调试程序的所有系统句柄。执行:.你可以单步执行、步入子程序或者步过子程序。你也可以执行程序直到函数返 回时、执行到指定地址处,还可以自动执行。当程序运行时,你仍然可以操纵程序并能够 查看内存、设置断点甚至修改代码。你也可以任意的暂停或重启被调试的程序。Hit 跟踪:跟踪:.Hit 跟踪可以显示出目前已执行的指令或函数过程,帮助你检验代码的各个 分支。Hit 跟踪会在指定指令到达之前设
15、置断点,而在这个指令执行后,会把这个断点清除 掉。 译者注:Hit 在英文中是“击中”的意思,指令如果运行了就表示这个指令被“击中”了, 没有执行的指令就是“未击中”,这样我们就很容易看出被调试程序哪些部分运行了,而哪 些没有运行。Run 跟踪:跟踪: Run 跟踪可以单步执行程序,它会在一个很大的循环缓冲区中模拟运行程 序。这个模拟器包含了除了 SSE 指令集以外的所以寄存器、标志、线程错误、消息、已经 函数的参数。你可以保存命令,这样可以非常方便地调试自修改代码(译者注:比如加壳 程序) 。你可以设置条件中断,条件包括地址范围、表达式、命令。你可以将 Run 跟踪信 息保存到一个文件中,这
16、样就可以对比两次运行的差别。Run 跟踪可以回溯分析已执行过 的上百万条命令的各种细节。统计: 统计Profiler可以在跟踪时计算某些指令出现的次数。因此你就能了解代 码的哪一部分被频繁执行。补丁:内置汇编器能够自动找到修改过的代码段。二进制编辑器则会以 ASCII、UNICODE 或者十六进制的形式同步显示修改后的数据。修改后的数据同其它数据 一样,能够进行复制粘贴操作。原来的数据会自动备份,以便数据恢复时使用。你可以 把修改的部分直接复制到执行文件中,OllyDbg 会自动修正。 OllyDbg 还会记录以前调试 过程中使用的所有补丁。你可以通过空格键实现补丁的激活或者禁止。自解压文件:
17、自解压文件: 当调试自解压文件时,你往往希望跳过解压部分,直接停在程序的原始4入口点。OllyDbg 的自解压跟踪将会使你实现这一目的。如果是加保护的自解压段,自解 压跟踪往往会失败。而一旦 OllyDbg 找到了入口点,它将会跳过解压部分,并准确的到达 入口点。插件:你可以把自己的插件添加到 OllyDbg 中,以增加新的功能。OllyDbg 的插件能 够访问几乎所有重要的数据的结构、能够在 OllyDbg 的窗口中添加菜单和快捷键,能够使 用 100 个以上的插件 API 函数。插件 API 函数有详细的说明文档。默认安装已经包含了两 个插件:命令行插件和书签插件。 UDD:OllyDbg
18、 把所有程序或模块相关的信息保存至单独的文件中,并在模块重新加 载时继续使用。这些信息包括了标签、注释、断点、监视、分析数据、条件等等更多:这里介绍的功能,仅仅是 OllyDbg 的部分功能。因为其具有如此丰富的功能, 以至于 OllyDbg 能成为非常方便的调试器! 5第二章第二章 组件组件一、一般原理一、一般原理GeneralGeneral prnciplesprnciples我希望你能对 80x86 系列处理器的内部结构有所了解,同时具有一定的编写汇编程序 的能力。对于 Microsoft Windows 方面的知识,你也要熟悉。OllyDbg 是运行在 Windows 95、Windo
19、ws 98、Windows ME、Windows NT 和 Windows 2000 系统下的一个单进程、多线程的分析代码级调试工具。它可以调试 PE 格式 的执行文件及动态链接库,并可以对其打补丁。 “代码级”意味着你可以直接与比特、字节或 处理器指令打交道。OllyDbg 仅使用已公开的 Win32 API 函数,因此它可以在所有 Windows 操作系统及后继版本中使用。但是由于我没有对 XP 系统进行彻底测试,因此 不能保证 OllyDbg 功能的充分发挥。注意:OllyDbg 不支持对 .NET 程序的调试。OllyDbg 不是面向编译器的。它没有特别的规则规定必须是哪一个编译器产生
20、的代码。 因此,OllyDbg 可以非常好的处理通过编译器生成的代码,或是直接用汇编写入的代码。OllyDbg 可以并行调试程序。你无须暂停执行程序,就可以浏览代码和数据,设置断 点、停止或恢复线程,甚至直接修改内存。 (这可以视为一种软件调试的模式,与之相对的 硬件模式则是当进程在运行时调试器被阻滞,反之亦然) 。假使所需的操作比较复杂, OllyDbg 会让进程终止一小段时间,但是这种暂停对于用户来说是透明的。有时进程会发 生非法操作。你可以把 OllyDbg 设置成即时justintime调试器,它会挂接出错程序, 并停在程序产生异常的地方。通过 OllyDbg,你可以调试单独的 DLL
21、standalone DLLs文件。操作系统不能直接 运行 DLL 文件,因此 OllyDbg 将一个可以加载 DLL 的小程序压缩到资源里,这个程序 允许你调用最多 10 个参数的输出函数。OllyDbg 是完全面向模块moduleoriented的。模块Module包括可执行文件(扩 展名通常为.EXE)和在启动时加载或需要时动态加载的动态链接库(扩展名通常为.DLL) 。 在调试期间,你可以设置断点在调试期间,你可以设置断点breakpoints 、定义新的标签、定义新的标签labels 、注释、注释comment 汇编指令,当某个模块从内存中卸载汇编指令,当某个模块从内存中卸载unlo
22、ad时,调试器会把这些信息保存在文件中,时,调试器会把这些信息保存在文件中, 文件名就是模块的名称,扩展名为文件名就是模块的名称,扩展名为.UDD(表示 用户自定义文件UserDefined Data ) 当当 OllyDbg 下一次加载该模块时,它会自动恢复所有的调试信息,而不管是哪一个程序使下一次加载该模块时,它会自动恢复所有的调试信息,而不管是哪一个程序使 用这个模块。用这个模块。假设你正在调试程序 Myprog1,这个程序使用了 Mydll。你在 Mydll 中设置 了一些断点,然后你开始调试 Myprog2,这个程序同样使用了 Mydll。这时你会发现,所 有 Mydll 中的断点依
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OllyDbg 学习 入门 完全 教学 教材 完美 排版
限制150内