OllyDbg入门完全教程(完美排版)
OllyDBG 完美教程(超强入门级)
关键词:OD、OllyDBG、破解入门、调试专用工具、反汇编一、OllyDBG 的安装与配置OllyDBG 1.10 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。
汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 OllyDBG.exe 即可:OllyDBG 中各个窗口的功能如上图。
简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的 CPU 寄存器内容。
同样点击标签寄存器 (FPU) 可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈。
要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下 OllyDBG 就可以生效了。
启动后我们要把插件及 UDD 的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签:因为我这里是把 OllyDBG 解压在 F:\OllyDBG 目录下,所以相应的 UDD 目录及插件目录按图上配置。
还有一个常用到的标签就是上图后面那个字体,在这里你可以更改 OllyDBG 中显示的字体。
上图中其它的选项可以保留为默认,若有需要也可以自己修改。
修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动 OllyDBG。
在这个对话框上点确定,重新启动一下 OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。
OD使用完全教程
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 入门系列(五)-消息断点及 RUN 跟踪
OllyDBG 入门系列(五)-消息断点及 RUN 跟踪作者:CCDebuger找了几十个不同语言编写的 crackme,发现只用消息断点的话有很多并不能真正到达我们要找的关键位置,想想还是把消息断点和 RUN 跟踪结合在一起讲,更有效一点。
关于消息断点的更多内容大家可以参考 jingulong 兄的那篇《几种典型程序Button处理代码的定位》的文章,堪称经典之作。
今天仍然选择 镜像打包中的一个名称为 cycle 的 crackme。
按照惯例,我们先运行一下这个程序看看:我们输入用户名 CCDebuger,序列号 78787878,点上面那个“Check”按钮,呵,没反应!看来是要注册码正确才有动静。
现在关掉这个 crackme,用 PEiD 查一下壳,原来是 MASM32 / TASM32 [Overlay]。
启动 OllyDBG 载入这个程序,F9让它运行。
这个程序按我们前面讲的采用字串参考或函数参考的方法都很容易断下来。
但我们今天主要学习的是消息断点及 RUN 跟踪,就先用消息断点来断这个程序吧。
在设消息断点前,有两个内容我们要简单了解一下:首先我们要了解的是消息。
Windows 的中文翻译就是“窗口”,而 Windows 上面的应用程序也都是通过窗口来与用户交互的。
现在就有一个问题,应用程序是如何知道用户作了什么样的操作的?这里就要用到消息了。
Windows 是个基于消息的系统,它在应用程序开始执行后,为该程序创建一个“消息队列”,用来存放该程序可能创建的各种不同窗口的信息。
比如你创建窗口、点击按钮、移动鼠标等等,都是通过消息来完成的。
通俗的说,Windows 就像一个中间人,你要干什么事是先通知它,然后它才通过传递消息的方式通知应用程序作出相应的操作。
说到这,又有个问题了,在 Windows 下有多个程序都在运行,那我点了某个按钮,或把某个窗口最大化,Windows 知道我是点的哪个吗?这里就要说到另一个内容:句柄(handle)了。
OllyDBG完美教程
OllyDBG完美教程(超强入门级)关键词:OD、OllyDBG、破解入门、调试专用工具、反汇编一、OllyDBG 的安装与配置OllyDBG 1.10 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。
汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 OllyDBG.exe 即可:OllyDBG 中各个窗口的功能如上图。
简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的 CPU 寄存器内容。
同样点击标签寄存器 (FPU) 可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈。
要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下 OllyDBG 就可以生效了。
启动后我们要把插件及 UDD 的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签:因为我这里是把 OllyDBG 解压在 F:\OllyDBG 目录下,所以相应的 UDD 目录及插件目录按图上配置。
还有一个常用到的标签就是上图后面那个字体,在这里你可以更改 OllyDBG 中显示的字体。
上图中其它的选项可以保留为默认,若有需要也可以自己修改。
修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动 OllyDBG。
在这个对话框上点确定,重新启动一下 OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。
Ollydbg使用方法和技巧
如果有寄存器参数,OllyDbg还是不认识也不包括在上面的统计中。分析器采用了
一个安全的方法。例如,它不分辨无参数过程和返回前用POP恢复寄存器代替舍弃
参数的case语句。然而,能分辨出的函数数目相当多,并非常有助于提高代码的
Alt+X-中断OllyDbg。
多数窗口可以使用下列快捷键:
Alt+F3--关闭活动窗口。
Ctrl+F4--关闭活动窗口。
F5--最大化或恢复活动窗口。
F6--激活下一个窗口。
Shift+F6--激活前一个窗口。
F10--打开激活窗口或面板的右键菜单。
LeftArrow--左移一个字符。
这些快捷键在OllyDbg中通用,不依赖于当前活动窗口。
Ctrl+F2---OllyDbg重置,重新开始调试。如果没有活动程序,OllyDbg装入历史列表中的第一个程序。OllyDbg重置会释放内存移除硬断点。
Alt+F2--关闭被调试的程序。如果程序还在活动状态,你会被询问是否执行该操作。
F3--显示“Open 32-bit .exe file”对话框,这里可以选择可执行文件和指定参数
WM_PAINT 或者 EXCEPTION_ACCESS_VIOLATION。如果命令序列不修改寄存器(只
由比较命令构成),那么不大可能是switch语句,但可能是if嵌套:
if (i==0) {...}
else if (i==5) {...}
else if (i==10) {...}
让OllyDbg解码if嵌套为switch,选择Analysis1中相应的选项。
OllyDbg入门完全教程(完美排版)
OllyDbg完全教程目录第一章概述 (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)五、可执行模块窗口[Executable modules window] (16)六、内存映射窗口[Memory map window] (17)七、监视与监察器[Watches and inspectors] (19)八、线程[Threads] (19)九、调用栈[Call stack] (20)十、调用树[Call tree] (21)十一、选项[Options] (21)十二、搜索[Search] (22)十三、自解压文件[Self—extracting (SFX) files] (22)十四、单步执行与自动执行[Step—by—step execution and animation] (23)十五、Hit跟踪[Hit trace] (23)十六、Run 跟踪[Run trace] (24)十七、快捷键 (26)十八、插件[Plugins] (29)十九、技巧提示[Tips and tricks] (29)第四章其他功能 (30)一、调试独立的DLL[Debugging of stand—alone DLLs] (30)二、解码提示[Decoding hints] (32)三、表达式赋值[Evaluation of expressions] (32)四、自定义函数描述[Custom function descriptions] (34)第一章概述OllyDbg 是一种具有可视化界面的32 位汇编—分析调试器。
OllyICE使用教程
OllyICE使用说明与示例一、OllyDBG 的安装与配置OllyDBG 1.10 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。
汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 OllyDBG.exe 即可:OllyDBG 中各个窗口的功能如上图。
简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的 CPU 寄存器内容。
同样点击标签寄存器 (FPU) 可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈。
要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下 OllyDBG 就可以生效了。
启动后我们要把插件及 UDD 的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签:因为我这里是把 OllyDBG 解压在 F:\OllyDBG 目录下,所以相应的 UDD 目录及插件目录按图上配置。
还有一个常用到的标签就是上图后面那个字体,在这里你可以更改 OllyDBG 中显示的字体。
上图中其它的选项可以保留为默认,若有需要也可以自己修改。
修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动 OllyDBG。
在这个对话框上点确定,重新启动一下 OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。
有人可能知道插件的作用,但对那个 UDD 目录不清楚。
OllyDBG 入门系统(六) - 消息断点及RUN跟踪补充
OllyDBG 入门系统(六) - 消息断点及RUN跟踪补充看完了《OllyDBG 入门系统(五)-消息断点及RUN 跟踪》之后感觉如何?会否有如下问题:1、是否觉得不知道在哪下断?2、为什么要这样子下断?3、如何确定断下来后的位置就是正确的?好,就本着这几个问题来分析一遍。
首先,先回顾下Windows的消息机制。
要点:所有要处理的消息必然会由程序自己处理,不处理的消息都交由Windows处理。
Windows的消息处理函数的格式,如下:LRESULT CALLBACK WindowProc(HWND hwnd, // handle of windowUINT uMsg, // message identifierWPARAM wParam, // first message parameterLPARAM lParam // second message parameter);其中uMsg就是关键,它代表消息的类型,如:WM_COMMAND,WM_GETTEXT等。
记好哦。
下面,我们来用实例讲解。
这个CrackMe是用对话框做的(你是怎么知道的?)。
1、用OllyDbg加载,Crtl N,找到函数:USER32.DialogBoxParamA,右击->“在每个参考上设置断点”。
2、F9,运行。
看,被拦了下来,如图:3、其中DlgProc的内容,就是我们需要找的东东。
这个地址是消息处理函数的入口点。
现在来解释为什么要在窗口那才有消息断点,看图,要下消息断点,首先得找到具有Windows消息处理函数格式的函数,然后,再根据栈的数据来判断消息,如果符合下断的消息,那么,OllyDbg就会拦下来(还会觉得不知道在哪下消息断点了吗?知道该如何下消息断点了吧?)。
很明显有一点,这个消息断点的功能是有限的,比如,要拦主窗口中的菜单消息呢?所以,消息断点的功能还是有限的。
如何扩展?扯远了,下面再讲。
4、Ctrl G来到cyle.0041029,我们来到了消息处理函数了,但是,OllyDbg并未识别出这个函数是消息处理函数。
OD(OllyDbg)使用教程
修改这一反汇编代码段,双击反汇编列后者按空格键, 修改这一反汇编代码段,双击反汇编列后者按空格键, 键入NOP,点汇编 键入 ,
最后 F9运行,你会看到: 运行, 运行 你会看到:
下面就介绍一些分析常用的汇编代码含义: 下面就介绍一些分析常用的汇编代码含义: MOV 传送字或字节 如MOV A B,就是将 中的字传给 中的字传给A ,就是将B中的字传给 PUSH 把字压入堆栈 CALL 子程序调用指令 XOR 异或运算 所谓异或,就是两值不同,则为真,反之,为假 所谓异或,就是两值不同,则为真,反之, RET 子程序返回指令 CMP 比较 两操作数作减法 仅修改标志位 不回送结果 比较.(两操作数作减法 仅修改标志位,不回送结果 两操作数作减法,仅修改标志位 不回送结果) JNZ(或 JNZ(或jNE) OPR --------------结果不为零转移,测试条件ZF=0 --------------结果不为零转移 测试条件ZF=0 结果不为零转移,测试条件 DEC 减 1 INC 加 1 JZ(或jE) OPR---------------结果为零转移 测试条件 结果为零转移, 或 结果为零转移 测试条件ZF=1 SUB 减法 LEA 装入有效地址 例: LEA DX,string ;把偏移地址存到 把偏移地址存到DX. 把偏移地址存到 MOVSX 先符号扩展 再传送 先符号扩展,再传送 REP 当CX/ECX0时重复 时重复 AND 与运算 TEST 测试.(两操作数作与运算 仅修改标志位,不回送结果 测试 两操作数作与运算,仅修改标志位 不回送结果) 两操作数作与运算 仅修改标志位 不回送结果
注意:此时的领空是模块USER32,领空就是在 注意:此时的领空是模块 ,
某一时刻, 某一时刻,CPU的CS:EIP所指向代码的所有者 的 所指向代码的所有者
OllyDBG破解工具入门教程
OllyDBG破解工具入门教程一、OllyDBG 的安装与配置OllyDBG 1.10 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。
汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 OllyDBG.exe 即可:OllyDBG 中各个窗口的功能如上图。
简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单 界面选项->隐藏标或显示标题 来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的 CPU 寄存器内容。
同样点击标签 寄存器 (FPU) 可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈。
要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下 OllyDBG 就可以生效了。
启动后我们要把插件及 UDD 的目录配置为绝对路径,点击菜单上的 选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签:因为我这里是把 OllyDBG 解压在 F:\OllyDBG 目录下,所以相应的 UDD 目录及插件目录按图上配置。
还有一个常用到的标签就是上图后面那个字体,在这里你可以更改 OllyDBG 中显示的字体。
上图中其它的选项可以保留为默认,若有需要也可以自己修改。
修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动 OllyDBG。
在这个对话框上点确定,重新启动一下 OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。
有人可能知道插件的作用,但对那个 UDD 目录不清楚。
OD入门系列图文详细教程-破解做辅助起步(一)
OllyDBG的安装与配置OllyDBG1.10版的发布版本是个ZIP压缩包,只要解压到一个目录下,运行OllyDBG.exe就可以了。
汉化版的发布版本是个RAR压缩包,同样只需解压到一个目录下运行OllyDBG.exe即可:学习各种外挂制作技术,马上去百度搜索"魔鬼作坊"点击第一个站进入、快速成为做挂达人。
OllyDBG中各个窗口的功能如上图。
简单解释一下各个窗口的功能,更详细的内容可以参考TT小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的CPU寄存器内容。
同样点击标签寄存器(FPU)可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈。
要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下OllyDBG就可以生效了。
启动后我们要把插件及UDD的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签:因为我这里是把OllyDBG解压在F:\OllyDBG目录下,所以相应的UDD目录及插件目录按图上配置。
还有一个常用到的标签就是上图后面那个字体,在这里你可以更改OllyDBG中显示的字体。
上图中其它的选项可以保留为默认,若有需要也可以自己修改。
修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动OllyDBG。
在这个对话框上点确定,重新启动一下OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。
有人可能知道插件的作用,但对那个UDD目录不清楚。
OllyDbg插件开发入门(肖梓航)
OllyDbg插件开发入门0.11版肖梓航(Claud)2010年2月E-mail:iClaudXiao@Website/Blog:依据署名—非商业性使用—相同方式共享协议3.0发布文档编号:2010-004最后更新:2010年2月19日目 录前言 (2)一、前期准备 (3)1、OllyDbg插件工作原理 (3)(1)从OllyDbg的角度 (3)(2)从插件的角度 (3)2、学习建议 (4)3、开发资源与环境 (4)4、必要的设置 (5)(1)Visual C++中的设置 (5)(2)C++程序中的设置 (5)二、常用函数 (6)1、回调函数 (6)(1)必须的回调函数 (6)(2)可选的回调函数 (8)2、插件函数 (12)(1)注册窗口类 (12)(2).ini文件交互 (13)(3)查询系统信息 (13)(4).udd文件交互 (14)3、其他函数 (14)三、实例分析 (15)1、Hello,world (15)2、Command (18)3、Bookmark (28)参考文献 (43)前言我是一个菜鸟,这是毫无疑问的。
开发OllyDbg插件,大抵不是一件难事。
因为网络上没有多少资料——只有API手册和两三篇文章而已,但依然有人开发了大量的插件。
而我却花了不少时间才初窥门径。
也正因为水平太低,我不得不努力地去理解插件是怎么工作的、去阅读每一个函数、去分析每一行示例代码、去花费N天写一个hello,world。
为了防止又把它们给忘了,还得记录下来,以便需要的时候查阅。
再后来,我想,干脆写得更傻瓜一点吧,让其他人不费脑子不费时间地也能学会。
于是就有了这个文档。
但我的水平实在太低,老实说,除了hello,world还没写出第二个插件。
所以这个文档将会随着进一步学习,不定期添加新的内容。
如果你希望看到后续版本,或者有好的建议,或者发现了错误,或者找不到文章中提到的资源,或者想骂我太菜,都可以访问下面这个页面:/2010/02/ollydbg_plugin/我会尽量保证它的长期可用性。
OD入门系列图文详细教程、破解做辅助起步
一、OllyDBG 的安装与配置OllyDBG 1.10 版的发布版本是个ZIP 压缩包,只要解压到一个目录下,运行OllyDBG.exe 就可以了。
汉化版的发布版本是个RAR 压缩包,同样只需解压到一个目录下运行OllyDBG.exe 即可:OllyDBG 中各个窗口的功能如上图。
简单解释一下各个窗口的功能,更详细的内容可以参考TT 小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的CPU 寄存器内容。
同样点击标签寄存器(FPU) 可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈。
要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下OllyDBG 就可以生效了。
启动后我们要把插件及UDD 的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签:因为我这里是把OllyDBG 解压在F:\OllyDBG 目录下,所以相应的UDD 目录及插件目录按图上配置。
还有一个常用到的标签就是上图后面那个字体,在这里你可以更改OllyDBG 中显示的字体。
上图中其它的选项可以保留为默认,若有需要也可以自己修改。
修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动OllyDBG。
在这个对话框上点确定,重新启动一下OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。
有人可能知道插件的作用,但对那个UDD 目录不清楚。
我这简单解释一下:这个UDD 目录的作用是保存你调试的工作。
OllyICE使用教程
OllyICE使用说明与示例一、OllyDBG 的安装与配置OllyDBG 1.10 版的发布版本是个ZIP 压缩包,只要解压到一个目录下,运行OllyDBG.exe 就可以了。
汉化版的发布版本是个RAR 压缩包,同样只需解压到一个目录下运行OllyDBG.exe 即可:OllyDBG 中各个窗口的功能如上图。
简单解释一下各个窗口的功能,更详细的内容可以参考TT 小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的CPU 寄存器内容。
同样点击标签寄存器(FPU) 可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈。
要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下OllyDBG 就可以生效了。
启动后我们要把插件及UDD 的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签:因为我这里是把OllyDBG 解压在F:\OllyDBG 目录下,所以相应的UDD 目录及插件目录按图上配置。
还有一个常用到的标签就是上图后面那个字体,在这里你可以更改OllyDBG 中显示的字体。
上图中其它的选项可以保留为默认,若有需要也可以自己修改。
修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动OllyDBG。
在这个对话框上点确定,重新启动一下OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。
有人可能知道插件的作用,但对那个UDD 目录不清楚。
我这简单解释一下:这个UDD 目录的作用是保存你调试的工作。
使用OllyDbg从零开始Cracking 第十章-断点
第十章-断点本章将介绍各种类型的断点。
断点可以让你在程序代码执行到合适的时候暂停下来。
这次我们的实验的对象还是CrueHead’a的CrackMe。
普通断点这是一个很普通的断点,我们前面章节已经使用了。
在SoftIce中我们可以使用BPX命令来设置断点。
OD中可以使用BP命令或者F2快捷键来设置断点。
也可以再按一次F2快捷键来取消断点。
我们来到CrueHead’a的CrackMe的入口点处。
举个例子,拿401018这行来说吧,按F2键-这行就会以红色突出显示,在该地址处设置的断点就会加入了断点列表中。
我们来看看断点列表刚刚设置的断点,此时该断点是激活状态。
断点列表中Active栏显示的是Always。
在该行上单击鼠标右键会弹出一些操作断点的菜单项。
Remove:从列表中删除断点。
Disable:禁用断点但并不将断点从列表中删除。
禁用时,断点并不会触发。
Edit condition:给断点设置触发条件,我们后面再来讨论。
Follow in disassembler:在反汇编窗口中显示断点。
Disable all or enable all:禁用/启用列表中的全部断点。
这里没有启用的选项,因为列表中唯一的断点没有被禁用。
Copy to Clipboard:把选中断点的信息复制到剪贴板。
我们来实验一下。
我们选择Whole line拷贝整行,Whole Table可以拷贝整个列表的断点信息。
Breakpoints, item 0Address=00401018Module=CRACKMEActive=AlwaysDisassembly=OR EAX,EAX拷贝下来的信息显示了断点的地址,对应的指令以及激活状态。
按下F9键-CrackMe运行起来了。
然后正如猜想的一样中断了下来。
在状态栏显示暂停状态。
暂停的原因如下:我们来了解一下当设置一个断点以后,二进制代码会发生什么变化。
单击鼠标右键选择-Follow in Dump-Selection我们看看数据窗口中401018地址处的内容:我们初看一下数据窗口中的内容和反汇编代码中代码是一样的:数据窗口和反汇编代码中我们看到的都是0B C0,对应的是OR EAX,EAX。
OD入门系列图文详细教程
一、OllyDBG 的安装与配置详细OllyDBG只要解压到一个目录下,运行OllyDBG.exe 就可以了。
汉化版的发布版本是个RAR 压缩包,运行OllyDBG.exe 即可:OllyDBG 中各个窗口的功能如上图。
简单解释一下各个窗口的功能,更详细的内容可以参考TT 小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的CPU 寄存器内容。
同样点击标签寄存器(FPU) 可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈。
要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下OllyDBG 就可以生效了。
启动后我们要把插件及UDD 的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签:因为我这里是把OllyDBG 解压在F:\OllyDBG 目录下,所以相应的UDD 目录及插件目录按图上配置。
还有一个常用到的标签就是上图后面那个字体,在这里你可以更改OllyDBG 中显示的字体。
上图中其它的选项可以保留为默认,若有需要也可以自己修改。
修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动OllyDBG。
在这个对话框上点确定,重新启动一下OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。
有人可能知道插件的作用,但对那个UDD 目录不清楚。
我这简单解释一下:这个UDD 目录的作用是保存你调试的工作。
比如你调试一个软件,设置了断点,添加了注释,一次没做完,这时OllyDBG 就会把你所做的工作保存到这个UDD 目录,以便你下次调试时可以继续以前的工作。
OllyDBG入门系列(二)-字串参考
OllyDBG⼊门系列(⼆)-字串参考引⽤:感谢 chuxuezhe 朋友的反馈:经检查才发现原来是写⽂章前曾⽤修改过的 Ultra String Reference 插件查找过字串,这个修改后的插件会把找到的字串⾃动添加到代码后⾯作为注释,且所有字母都⼀律⼩写,导致原来⽂章写的时候注释中的⼤⼩写分不清楚,⽐较混乱。
这次把⽂章⼀些地⽅修改了⼀下,全部⽤OD⾃带功能进⾏操作,重新制作了⼏个图⽚。
因为我⾃⼰的失误,在此对给⼤家造成了阅读中的困惑表⽰抱歉!OllyDBG ⼊门系列(⼆)-字串参考作者:CCDebuger上⼀篇是使⽤⼊门,现在我们开始正式进⼊破解。
今天的⽬标程序是看雪兄《加密与解密》第⼀版附带光盘中的 镜像打包中的 CFF Crackme #3,采⽤⽤户名/序列号保护⽅式。
原版加了个 UPX 的壳。
刚开始学破解先不涉及壳的问题,我们主要是熟悉⽤OllyDBG 来破解的⼀般⽅法。
我这⾥把壳脱掉来分析,附件是脱壳后的⽂件,直接就可以拿来⽤。
先说⼀下⼀般软件破解的流程:拿到⼀个软件先别接着马上⽤ OllyDBG 调试,先运⾏⼀下,有帮助⽂档的最好先看⼀下帮助,熟悉⼀下软件的使⽤⽅法,再看看注册的⽅式。
如果是序列号⽅式可以先输个假的来试⼀下,看看有什么反应,也给我们破解留下⼀些有⽤的线索。
如果没有输⼊注册码的地⽅,要考虑⼀下是不是读取注册表或 Key ⽂件(⼀般称 keyfile,就是程序读取⼀个⽂件中的内容来判断是否注册),这些可以⽤其它⼯具来辅助分析。
如果这些都不是,原程序只是⼀个功能不全的试⽤版,那要注册为正式版本就要⾃⼰来写代码完善了。
有点跑题了,呵呵。
获得程序的⼀些基本信息后,还要⽤查壳的⼯具来查⼀下程序是否加了壳,若没壳的话看看程序是什么编译器编的,如 VC、Delphi、VB 等。
这样的查壳⼯具有PEiD 和 FI。
有壳的话我们要尽量脱了壳后再来⽤ OllyDBG 调试,特殊情况下也可带壳调试。
OllyDBG2.01软件调试入门教程
OllyDBG2.01 入门系列(一)-认识OllyDBG一、OllyDBG的安装与配置OllyDBG1.10版的发布版本是个ZIP压缩包,只要解压到一个目录下,运行OllyDBG.exe就可以了。
汉化版的发布版本是个RAR压缩包,同样只需解压到一个目录下运行OllyDBG.exe即可:OllyDBG中各个窗口的功能如上图。
简单解释一下各个窗口的功能,更详细的内容可以参考TT小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的CPU寄存器内容。
同样点击标签寄存器(FPU)可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈。
要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下OllyDBG就可以生效了。
启动后我们要把插件及UDD的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签:因为我这里是把OllyDBG解压在F:\OllyDBG目录下,所以相应的UDD目录及插件目录按图上配置。
还有一个常用到的标签就是上图后面那个字体,在这里你可以更改OllyDBG中显示的字体。
上图中其它的选项可以保留为默认,若有需要也可以自己修改。
修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动OllyDBG。
在这个对话框上点确定,重新启动一下OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OllyDbg完全教程目录第一章概述 (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)五、可执行模块窗口[Executable modules window] (16)六、内存映射窗口[Memory map window] (17)七、监视与监察器[Watches and inspectors] (19)八、线程[Threads] (19)九、调用栈[Call stack] (20)十、调用树[Call tree] (21)十一、选项[Options] (21)十二、搜索[Search] (22)十三、自解压文件[Self—extracting (SFX) files] (22)十四、单步执行与自动执行[Step—by—step execution and animation] (23)十五、Hit跟踪[Hit trace] (23)十六、Run 跟踪[Run trace] (24)十七、快捷键 (26)十八、插件[Plugins] (29)十九、技巧提示[Tips and tricks] (29)第四章其他功能 (30)一、调试独立的DLL[Debugging of stand—alone DLLs] (30)二、解码提示[Decoding hints] (32)三、表达式赋值[Evaluation of expressions] (32)四、自定义函数描述[Custom function descriptions] (34)第一章概述OllyDbg 是一种具有可视化界面的32 位汇编—分析调试器。
它的特别之处在于可以在没有源代码时解决问题,并且可以处理其它编译器无法解决的难题。
Version 1.10 是最终的发布版本。
这个工程已经停止,我不再继续支持这个软件了。
但不用担心:全新打造的OllyDbg2.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 |>prolog004010D6 push ebx |004010D7 push esi |004010D8 push edi /……004010C5 pop edi \004010C6 pop esi |004010C7 pop ebx |>epilog004010C8 mov esp,ebp |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跟踪信息保存到一个文件中,这样就可以对比两次运行的差别。