没有合适的资源?快使用搜索试试~ 我知道了~
OD教程 文库.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 100 浏览量
2023-02-22
19:27:15
上传
评论
收藏 257KB DOCX 举报
温馨提示
.OD教程。。文库.docx
资源推荐
资源详情
资源评论
OD教程文库.txt曾经拥有的不要忘记;不能得到的更要珍惜;属于自己的不要放弃;已经失
去的留作回忆。OllyDbg完全教程
一,什么是 OllyDbg?
OllyDbg 是一种具有可视化界面的 32 位汇编-分析调试器。它的特别之处在于可以在没有源
代码时解决问题,并且可以处理其它编译器无法解决的难题。
Version 1.10 是最终的发布版本。 这个工程已经停止,我不再继续支持这个软件了。但不
用担心:全新打造的 OllyDbg 2.00 不久就会面世!
运行环境: OllyDbg 可以以在任何采用奔腾处理器的 Windows 95、98、ME、NT 或是 XP(未
经完全测试)操作系统中工作,但我们强烈建议您采用300-MHz以上的奔腾处理器以达到最
佳效果。还有,OllyDbg 是极占内存的,因此如果您需要使用诸如追踪调试[Trace]之类的
扩展功能话,建议您最好使用 128MB以上的内存。
支持的处理器: OllyDbg 支持所有 80x86、奔腾、MMX、3DNOW!、Athlon 扩展指令集、SSE
指令集以及相关的数据格式,但是不支持 SSE2指令集。
配置: 有多达百余个(天呀!)选项用来设置 OllyDbg 的外观和运行。
数据格式: OllyDbg 的数据窗口能够显示的所有数据格式:HEX、ASCII、UNICODE、 16/32
位有/无符号/HEX整数、32/64/80位浮点数、地址、反汇编(MASM、IDEAL或是 HLA)、PE文
件头或线程数据块。
帮助: 此文件中包含了关于理解和使用 OllyDbg 的必要的信息。如果您还有 Windows API
帮助文件的话(由于版权的问题 win32.hlp 没有包括在内),您可以将它挂在 OllyDbg 中,
这样就可以快速获得系统函数的相关帮助。
启动: 您可以采用命令行的形式指定可执行文件、也可以从菜单中选择,或直接拖放到
OllyDbg 中,或者重新启动上一个被调试程序,或是挂接[Attach]一个正在运行的程序。
OllyDbg支持即时调试。OllyDbg根本不需要安装,可直接在软盘中运行!
调试 DLLs: 您可以利用 OllyDbg调试标准动态链接库 (DLLs)。OllyDbg 会自动运行一个可
执行程序。这个程序会加载链接库,并允许您调用链接库的输出函数。
源码级调试: OllyDbg 可以识别所有 Borland 和 Microsoft 格式的调试信息。这些信息包
括源代码、函数名、标签、全局变量、静态变量。有限度的支持动态(栈)变量和结构。
代码高亮: OllyDbg 的反汇编器可以高亮不同类型的指令(如:跳转、条件跳转、入栈、出
栈、调用、返回、特殊的或是无效的指令)和不同的操作数(常规[general]、
FPU/SSE、段/系统寄存器、在栈或内存中的操作数,常量)。您可以定制个性化高亮方案。
线程: OllyDbg 可以调试多线程程序。因此您可以在多个线程之间转换,挂起、恢复、终止
线程或是改变线程优先级。并且线程窗口将会显示每个线程的错误(就像调用 GETLASTERROR
返回一样)。
分析:OllyDbg 的最大特点之一就是分析。它会分析函数过程、循环语句、选择语句、表
[tables]、常量、代码中的字符串、欺骗性指令[tricky constructs]、API调用、函数中
参数的数目,import表等等。. 这些分析增加了二进制代码的可读性,减少了出错的可能性,
使得我们的调试工作更加容易。
Object 扫描。 OllyDbg 可以扫描 Object 文件/库(包括 OMF 和 COFF 格式),解压代码段
[code segments]并且对其位置进行定向。
Implib 扫描。 由于一些 DLL 文件的输出函数使用的索引号,对于人来说,这些索引号没有
实际含义。如果您有与DLL相应的输入库[import library],OllyDbg 就可以将序号转换成
符号名称。
完全支持 Unicode: 几乎所有支持 ASCII 的操作同时也支持 UNICODE,反之亦然。
名称: OllyDbg 可以根据 Borland 和 Microsoft 格式的调试信息,显示输入/输出符号及
名称。Object 扫描器可以识别库函数。其中的名称和注释您可任意添加。如果 DLL中的某些
函数是通过索引号输出的,则您可通过挂接输入库[import library]来恢复原来的函数名
称。不仅如此,OllyDbg还能识别大量的常量符号名(如:窗口消息、错误代码、位域[bit
fields]„)并能够解码为已知的函数调用。
已知函数:OllyDbg 可以识别 2300 多个 C 和 Windows API 中的常用函数及其使用的参数。
您可以添加描述信息、预定义解码。您还可以在已知函数设定 Log 断点并可以对参数进行记
录。
函数调用: OllyDbg 可以在没有调试信息或函数过程使用非标准的开始部分[prolog]和结
尾部分[epilog]的情况下,对递归调用进行回溯。
译者注:
004010D0 push ebp
004010D1 mov ebp,esp
004010D3 sub esp,10h
004010D6 push ebx
004010D7 push esi
004010D8 push edi
„„
\
|
|prolog
|
|
/
004010C5 pop edi
004010C6 pop esi
004010C7 pop ebx
004010C8 mov esp,ebp
\
|
|epilog
|
004010CA pop ebp
004010CB ret
|
/
栈:在栈窗口中,OllyDbg 能智能识别返回地址和栈框架[Stack Frames]。并会留下一些先
前的调用。如果程序停在已知函数上,堆栈窗口将会对其参数进行分析解码。
译者注:栈框架[Stack Frames]是指一个内存区域,用于存放函数参数和局部变量。
SEH 链: 跟踪栈并显示结构化异常句柄链。全部链会显示在一个单独的窗口中。
搜索:方法真是太多了!可精确、模糊搜索命令或命令序列,搜索常数,搜索二进制、文本
字符串,搜索全部命令地址,搜索全部常量或地址域[address range],搜索所有能跳到选
定地址的跳转,搜索所有调用和被调用的函数,搜索所有参考字符串,在不同模块中搜索所
有调用、搜索函数名称,在全部已分配的内存中搜索二进制序列。如果搜索到多个结果,您
可以对其进行快速操作。
窗口:OllyDbg 能够列出关于调试程序中的各种窗口,并且可以在窗口、类甚至选定的消息
上设置断点。
资源:如果 Windows API 函数使用了参考资源串,OllyDbg 可以显示它。其支持显示的类型
仅限于附带资源[attached resources]的列表、数据显示及二进制编辑、。
断点: OllyDbg 支持各种断点:一般断点、条件断点、记录断点(比如记录函数参数到记录
窗口)、内存读写断点、硬件断点(只适用于 ME/NT/2000)等。在 Hit 跟踪情况下,可以在
模块的每条命令上都设置 INT3断点。在使用 500-MHZ处理器的 Windows NT 中 ,OllyDbg 每
秒可以处理高达 5000 个中断。
监视与监察器:每个监视都是一个表达式并能实时显示表达式的值。您可以使用寄存器、常
数、地址表达式、布尔值以及任何复杂代数运算,您还可以比较ASCII和 UNICODE
字符串。监察器[inspectors]是一种包含了两个的索引序列的监视[Watches],它以二维
表的形式呈现,可以对数组和结构进行解码分析。
Heap walk.:在基于 Win95的系统中,OllyDbg 可以列出所有的已分配的堆。
句柄:在基于 NT的系统中,OllyDbg 可列出被调试程序的所有系统句柄。
执行:.您可以单步执行、步入子程序或者步过子程序。您也可以执行程序直到函数返回时、
执行到指定地址处,还可以自动执行。当程序运行时,您仍然可以操纵程序并能够查看内存、
设置断点甚至修改代码。您也可以任意的暂停或重启被调试的程序。
Hit跟踪:.Hit跟踪可以显示出目前已执行的指令或函数过程,帮助您检验代码的各个分支。
Hit跟踪会在指定指令到达之前设置断点,而在这个指令执行后,会把这个断点清除掉。
译者注:Hit 在英文中是“击中”的意思,指令如果运行了就表示这个指令被“击中”了,
没有执行的指令就是“未击中”,这样我们就很容易看出被调试程序哪些部分运行了,而哪些
没有运行。
Run跟踪: Run跟踪可以单步执行程序,它会在一个很大的循环缓冲区中模拟运行程序。这
个模拟器包含了除了 SSE指令集以外的所以寄存器、标志、线程错误、消息、已经函数的参
数。您可以保存命令,这样可以非常方便地调试自修改代码(译者注:比如加壳程序。)您可
以设置条件中断,条件包括地址范围、表达式、命令。您可以将Run
跟踪信息保存到一个文件中,这样就可以对比两次运行的差别。Run 跟踪可以回溯分析已执
行过的上百万条命令的各种细节。
统计: 统计[Profiler]可以在跟踪时计算某些指令出现的次数。因此您就能了解代码的哪
一部分被频繁执行。
补丁: 内置汇编器能够自动找到修改过的代码段。二进制编辑器则会以ASCII、UNICODE或
者十六进制的形式同步显示修改后的数据。修改后的数据同其它数据一样,能够进行复制 -
粘贴操作。原来的数据会自动备份,以便数据恢复时使用。您可以把修改的部分直接复制到
执行文件中,OllyDbg会自动修正。OllyDbg还会记录以前调试过程中使用的所有补丁。您可
以通过空格键实现补丁的激活或者禁止。
自解压文件: 当调试自解压文件时,您往往希望跳过解压部分,直接停在程序的原始入口点。
OllyDbg 的自解压跟踪将会使您实现这一目的。如果是加保护的自解压段,自解压跟踪往往
会失败。而一旦 OllyDbg找到了入口点,它将会跳过解压部分,并准确的到达入口点。
插件:您可以把自己的插件添加到 OllyDbg 中,以增加新的功能。OllyDbg 的插件能够访问
几乎所有重要的数据的结构、能够在 OllyDbg 的窗口中添加菜单和快捷键,能够使用 100
个以上的插件 API函数。插件 API函数有详细的说明文档。默认安装已经包含了两个插件:
命令行插件和书签插件。
UDD:OllyDbg 把所有程序或模块相关的信息保存至单独的文件中,并在模块重新加载时继续
使用。这些信息包括了标签、注释、断点、监视、分析数据、条件等等
更多:这里介绍的功能,仅仅是 OllyDbg 的部分功能。因为其具有如此丰富的功能,以至于
OllyDbg 能成为非常方便的调试器!
冷血书生 2005-12-14 06:24
二,一般原理[General principles]
我希望您能对 80x86系列处理器的内部结构有所了解,同时具有一定的编写汇编程序的能力。
对于 Microsoft Windows方面的知识,您也要熟悉。
OllyDbg是运行在 Windows 95、Windows 98、Windows ME、Windows NT 和 Windows 2000系
统下的一个单进程、多线程的分析代码级调试工具。它可以调试 PE格式的执行文件及动态链
接库,并可以对其打补丁。“代码级”意味着您可以直接与比特、字节或处理器指令打交道。
OllyDbg 仅使用已公开的 Win32 API 函数,因此它可以在所有 Windows 操作系统及后继版
本中使用。但是由于我没有对 XP 系统进行彻底测试,因此不能保证 OllyDbg 功能的充分发
挥。注意:OllyDbg 不支持对 .NET 程序的调试。
OllyDbg不是面向编译器的。它没有特别的规则规定必须是哪一个编译器产生的代码。因此,
OllyDbg可以非常好的处理通过编译器生成的代码,或是直接用汇编写入的代码。
OllyDbg 可以并行调试程序。您无须暂停执行程序,就可以浏览代码和数据,设置断点、停
止或恢复线程,甚至直接修改内存。(这可以视为一种软件调试的模式,与之相对的硬件模式
则是当进程在运行时调试器被阻滞,反之亦然)。假使所需的操作比较复杂,OllyDbg会让进
程终止一小段时间,但是这种暂停对于用户来说是透明的。
有时进程会发生非法操作。您可以把 OllyDbg设置成即时[just-in-time]调试器,它会挂
接出错程序,并停在程序产生异常的地方。
通过 OllyDbg,您可以调试单独的 DLL[standalone DLLs]文件。操作系统不能直接运行 DLL
文件,因此 OllyDbg 将一个可以加载 DLL 的小程序压缩到资源里,这个程序允许您调用最
多 10个参数的输出函数。
OllyDbg是完全面向模块[module-oriented]的。模块[Module]包括可执行文件(扩展名通
常为.EXE)和在启动时加载或需要时动态加载的动态链接库(扩展名通常为.DLL
)。在调试期间,您可以设置断点[breakpoints]、定义新的标签[labels]、注释[comment]
汇编指令,当某个模块从内存中卸载[unload]时,调试器会把这些信息保存在文件中,文
件名就是模块的名称,扩展名为.UD(D 表示 用户自定义文件[User-Defined Data])当 OllyDbg
下一次加载该模块时,它会自动恢复所有的调试信息,而不管是哪一个程序使用这个模块。
假设您正在调试程序 Myprog1,这个程序使用了 Mydll。您在 Mydll 中设置了一些断点,然
后您开始调试 Myprog2,这个程序同样使用了 Mydll。这时您会发现,所有 Mydll 中的断点
依然存在,即使 Mydll 加载到不同的位置!
一些调试器把被调试进程的内存当作一个单一的(并且大部分是空的)大小为2 ^32字节的
区域。OllyDbg 采用了与之不同的技术:在这里,内存由许多独立的块组成,任何对内存内
容的操作都被限制在各自的块内。在大多数情况下,这种方式工作得很好并且方便了调试。
但是,如果模块包含好几个可执行段[executable sections],您将不能一次看到全部代码,
然而这种情况是非常少见的。
OllyDbg 是一个很占用内存的程序[memory-hungry application]。它在启动时就需要 3 MB,
并且当您第一次装载被调试的程序时还需要一到两兆的内存。每一次的分析、备份、跟踪或
者文件数据显示都需要占用一定的内存。因此当您调试一个很大的项目,发现程序管理器显
示有 40 或 60 兆内存被占用时,请不要惊慌。
为了有效地调试一些不带源码的程序,您必须首先理解它是如何工作的。OllyDbg 包含的大
量特性可以使这种理解变得非常容易。
首先,OllyDbg 包含一个内置的代码分析器。分析器遍历整个代码,分出指令和数据,识别
出不同的数据类型和过程,分析出标准 API函数(最常用的大约有 1900个)的参数并且试着
猜 出 未 知 函 数 的 参 数 数 目 。 您 也 可 以 加 入 自 己 的 函 数 说 明 [ your own function
剩余63页未读,继续阅读
资源评论
春哥111
- 粉丝: 1w+
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C# winform -类火车头采集器、采集工具、任务新建和编辑、网址采集、 标签编辑、数据采集、数据发布、发布配置的修改,编辑和测试、发布模块的修改和
- 全国铁路线路数据.rar
- Vue开源项目Pure Admin二次开发:实现前后端柱状图
- 2000-2023年全国各市CPI数据集.xlsx
- 2000-2023年全国+各省通货膨胀率数据集.xlsx
- 纯电动汽车电池系统HIL测试库
- Java+JSP+Mysql实现Web学生图书管理系统源码+数据库
- 基于SSM框架的农业信息管理系统的实现
- 自己毕业论文配套代码,B站有讲解 和运行效果
- Java+JSP+Mysql实现Web学生图书管理系统源码
- 可靠有效springboot使用netty搭建TCP服务器
- Firefox-latest.exe
- Modbus测试与仿真.rar
- PCIE参考时钟架构详解:同源与非同源的区别
- Java+JSP+Mysql实现Web学生图书管理系统
- 新年海报,讲稿,文案封面
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功