外挂编写必备工具2OllyDBG (OD)入门系列
- 格式:doc
- 大小:569.50 KB
- 文档页数:33
OllyDBG新手使用说明书范文OLLYDBG完全教程(一)一、什么是OllyDbg?OllyDbg是一种具有可视化界面的32位汇编-分析调试器。
它的特别之处在于可以在没有源代码时解决问题,并且可以处理其它编译器无法解决的难题。
Verion1.10是最终的发布版本。
这个工程已经停止,我不再继续支持这个软件了。
但不用担心:全新打造的OllyDbg2.00不久就会面世!运行环境:OllyDbg可以以在任何采用奔腾处理器的Window95、98、ME、NT或是某P(未经完全测试)操作系统中工作,但我们强烈建议您采用300-MHz以上的奔腾处理器以达到最佳效果。
还有,OllyDbg是极占内存的,因此如果您需要使用诸如追踪调试[Trace]之类的扩展功能话,建议您最好使用128MB以上的内存。
支持的处理器:OllyD的数据格式,但是不支持SSE2指令集。
bg支持所有80某86、奔腾、MM某、3DNOW!、Athlon扩展指令集、SSE指令集以及相关配置:有多达百余个(天呀!)选项用来设置OllyDbg的外观和运行。
数据格式:OllyDbg的数据窗口能够显示的所有数据格式:HE某、ASCII、UNICODE、16/32位有/无符号/HE某整数、32/64/80位浮点数、地址、反汇编(MASM、IDEAL或是HLA)、PE文件头或线程数据块。
帮助:此文件中包含了关于理解和使用OllyDbg的必要的信息。
如果您还有WindowAPI帮助文件的话(由于版权的问题win32.hlp没有包括在内),您可以将它挂在OllyDbg中,这样就可以快速获得系统函数的相关帮助。
启动:您可以采用命令行的形式指定可执行文件、也可以从菜单中选择,或直接拖放到OllyDbg中,或者重新启动上一个被调试程序,或是挂接[Attach]一个正在运行的程序。
OllyDbg支持即时调试。
OllyDbg根本不需要安装,可直接在软盘中运行!调试DLL:您可以利用OllyDbg调试标准动态链接库(DLL)。
OllyDBG 新手使用说明书OLLYDBG完全教程(一)一、什么是 OllyDbg ?OllyDbg 是一种具有可视化界面的 32 位汇编 - 分析调试器。
它的特别之处在于可以在没有源代码时解决问题,并且可以处理其它编译器无法解决的难题。
Version 1.10 是最终的发布版本。
这个工程已经停止,我不再继续支持这个软件了。
但不用担心:全新打造的OllyDbg 2.00 不久就会面世!运行环境: OllyDbg 可以以在任何采用奔腾处理器的Windows 95、98、ME、NT或是 XP(未经完全测试)操作系统中工作,但我们强烈建议您采用 300-MHz以上的奔腾处理器以达到最佳效果。
还有, OllyDbg 是极占内存的,因此如果您需要使用诸如追踪调试[ Trace ]之类的扩展功能话,建议您最好使用 128MB以上的内存。
支持的处理器:OllyD 的数据格式,但是不支持SSE2 指令集。
bg 支持所有80x86、奔腾、 MMX、3DNOW!、 Athlon 扩展指令集、 SSE指令集以及相关配置:有多达百余个(天呀!)选项用来设置OllyDbg 的外观和运行。
数据格式: OllyDbg 的数据窗口能够显示的所有数据格式: HEX、ASCII 、UNICODE、 16/32 位有 / 无符号 /HEX 整数、32/64/80 位浮点数、地址、反汇编( MASM、IDEAL或是 HLA)、PE文件头或线程数据块。
帮助:此文件中包含了关于理解和使用 OllyDbg 的必要的信息。
如果您还有 Windows API帮助文件的话(由于版权的问题 win32.hlp 没有包括在内),您可以将它挂在 OllyDbg 中,这样就可以快速获得系统函数的相关帮助。
启动:您可以采用命令行的形式指定可执行文件、也可以从菜单中选择,或直接拖放到 OllyDbg 中,或者重新启动上一个被调试程序,或是挂接[ Attach ]一个正在运行的程序。
使用OD编写连连看外挂BYPhython邮箱:csfoffice2@给刚用OD想写外挂或是破解软件的新手准备,大鸟请直接无视。
工具准备:OllyDebug、连连看4.8连连看4.8其实长这样点击开始游戏后变成了这样我们的最终目标是要变成下图这样!!是不是很神奇?废话少说,现在开始。
第一步用OD打开zzllk.exe打开之后OD停留在了主程序入口界面思考一下,连连看使用鼠标左键单击来玩的游戏,因此一定有一个响应鼠标左键的消息处理函数,核心部分一定在这个函数中,目前的当务之急就是想办法找到这个函数。
在windows编程中,通常要用RegisterClassEx这个API函数来注册一个窗口类,它含有一个参数就是窗口过程回调函数用来处理类似鼠标单击之类的消息。
于是我们用Ctrl+G来寻找这个函数。
然而。
好遗憾!竟然没有找到这个函数,那么我们就得另想办法了!可是还有什么办法呢???我们知道,在程序退出的时候系统会向窗口过程回调函数发送一个WM_CLOSE的消息,在接收到这个消息的时候,程序员一般会在回调函数里用PostQuitMessage这个命令来退出程序。
因此,突破口就是这个PostQuitMessage结果还真的找到了!!目前停留在系统API的领空里,我们回到用户领空在这句下一个断点,然后运行连连看,点击右上角的关闭按钮会发现程序断在这里查看堆栈窗口,发现是从00438EEC调用过来的我们转到00438EEC上图就是44328EEC处的程序代码,就在这里调用了PostQuitMessage函数但是这段代码所处的函数很短,怀疑还有上一层函数,依旧用同样的方式,下断点并且返回,不过这次需要在OD中重新打开游戏了。
(我们在函数头部也就是00438ED2下断点,重新打开游戏,单击关闭按钮,程序停在下面这个界面)查看堆栈发现是从0042EECE附近调用过来的转到这里没错调用它的地址就是0042EEC9,我们给他加个注释“退出”理论上来说处理消息的回调函数就在这一层。
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 位汇编—分析调试器。
OllyDBG入门教程作者:CCDebuger一、认识OllyDBGOllyDBG 1.10 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。
汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 OllyDBG.exe 即可:OllyDBG 中各个窗口的功能如上图。
简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的 CPU 寄存器内容。
同样点击标签寄存器 (FPU) 可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈。
要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下 OllyDBG 就可以生效了。
启动后我们要把插件及 UDD 的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签:因为我这里是把 OllyDBG 解压在 F:\OllyDBG 目录下,所以相应的 UDD 目录及插件目录按图上配置。
还有一个常用到的标签就是上图后面那个字体,在这里你可以更改 OllyDBG 中显示的字体。
上图中其它的选项可以保留为默认,若有需要也可以自己修改。
修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动 OllyDBG。
在这个对话框上点确定,重新启动一下 OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。
有人可能知道插件的作用,但对那个 UDD 目录不清楚。
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 目录不清楚。
一、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完全教程目录第一章概述 (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 位汇编—分析调试器。
字串参考(2)学习各种外挂制作技术,马上去百度搜索"魔鬼作坊"点击第一个站进入、快速成为做挂达人。
OllyDbg是一种具有可视化界面的32位汇编—分析调试器。
它的特别之处在于可以在没有源代码时解决问题,并且可以处理其它编译器无法解决的难题。
Version1.10是最终的发布版本。
这个工程已经停止,我不再继续支持这个软件了。
但不用担心:全新打造的OllyDbg2.00不久就会面世!运行环境:OllyDbg可以以在任何采用奔腾处理器的Windows95、98、ME、NT或是XP(未经完全测试)操作系统中工作,但我们强烈建议你采用300—MHz以上的奔腾处理器以达到最佳效果。
还有,OllyDbg是极占内存的,因此如果你需要使用诸如追踪调试[Trace]之类的扩展功能话,建议你最好使用128MB以上的内存。
支持的处理器:OllyDbg支持所有80x86、奔腾、MMX、3DNOW!、Athlon扩展指令集、SSE指令集以及相关的数据格式,但是不支持SSE2指令集。
配置:有多达百余个选项用来设置OllyDbg的外观和运行。
我们在上图中地址00440F2C处按F2键设个断点,现在我们按F9键,程序已运行起来了。
我在上面那个编辑框中随便输入一下,如CCDebuger,下面那个编辑框我还保留为原来的“754-GFX-IER-954”,我们点一下那个“Register now!”按钮,呵,OllyDBG跳了出来,暂停在我们下的断点处。
我们看一下信息窗口,你应该发现了你刚才输入的内容了吧?我这里显示是这样:学习各种外挂制作技术,马上去百度搜索"魔鬼作坊"点击第一个站进入、快速成为做挂达人。
堆栈SS:[0012F9AC]=00D44DB4,(ASCII"CCDebuger")EAX=00000009上面的内存地址00D44DB4中就是我们刚才输入的内容,我这里是CCDebuger。
一、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新手使用说明书OLLYDBG完全教程(一)一、什么是 OllyDbg?OllyDbg 是一种具有可视化界面的 32 位汇编-分析调试器。
它的特别之处在于可以在没有源代码时解决问题,并且可以处理其它编译器无法解决的难题。
Version 1.10 是最终的发布版本。
这个工程已经停止,我不再继续支持这个软件了。
但不用担心:全新打造的 OllyDbg 2.00 不久就会面世!运行环境: OllyDbg 可以以在任何采用奔腾处理器的 Windows 95、98、ME、NT 或是 XP(未经完全测试)操作系统中工作,但我们强烈建议您采用300-MHz以上的奔腾处理器以达到最佳效果。
还有,OllyDbg 是极占内存的,因此如果您需要使用诸如追踪调试[Trace]之类的扩展功能话,建议您最好使用128MB以上的内存。
支持的处理器: OllyD的数据格式,但是不支持SSE2指令集。
bg 支持所有80x86、奔腾、MMX、3DNOW!、Athlon 扩展指令集、SSE指令集以及相关配置:有多达百余个(天呀!)选项用来设置 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 的安装与配置详细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⼊门系列(⼆)-字串参考引⽤:感谢 chuxuezhe 朋友的反馈:经检查才发现原来是写⽂章前曾⽤修改过的 Ultra String Reference 插件查找过字串,这个修改后的插件会把找到的字串⾃动添加到代码后⾯作为注释,且所有字母都⼀律⼩写,导致原来⽂章写的时候注释中的⼤⼩写分不清楚,⽐较混乱。
这次把⽂章⼀些地⽅修改了⼀下,全部⽤OD⾃带功能进⾏操作,重新制作了⼏个图⽚。
因为我⾃⼰的失误,在此对给⼤家造成了阅读中的困惑表⽰抱歉!OllyDBG ⼊门系列(⼆)-字串参考作者:CCDebuger上⼀篇是使⽤⼊门,现在我们开始正式进⼊破解。
今天的⽬标程序是看雪兄《加密与解密》第⼀版附带光盘中的 镜像打包中的 CFF Crackme #3,采⽤⽤户名/序列号保护⽅式。
原版加了个 UPX 的壳。
刚开始学破解先不涉及壳的问题,我们主要是熟悉⽤OllyDBG 来破解的⼀般⽅法。
我这⾥把壳脱掉来分析,附件是脱壳后的⽂件,直接就可以拿来⽤。
先说⼀下⼀般软件破解的流程:拿到⼀个软件先别接着马上⽤ OllyDBG 调试,先运⾏⼀下,有帮助⽂档的最好先看⼀下帮助,熟悉⼀下软件的使⽤⽅法,再看看注册的⽅式。
如果是序列号⽅式可以先输个假的来试⼀下,看看有什么反应,也给我们破解留下⼀些有⽤的线索。
如果没有输⼊注册码的地⽅,要考虑⼀下是不是读取注册表或 Key ⽂件(⼀般称 keyfile,就是程序读取⼀个⽂件中的内容来判断是否注册),这些可以⽤其它⼯具来辅助分析。
如果这些都不是,原程序只是⼀个功能不全的试⽤版,那要注册为正式版本就要⾃⼰来写代码完善了。
有点跑题了,呵呵。
获得程序的⼀些基本信息后,还要⽤查壳的⼯具来查⼀下程序是否加了壳,若没壳的话看看程序是什么编译器编的,如 VC、Delphi、VB 等。
这样的查壳⼯具有PEiD 和 FI。
有壳的话我们要尽量脱了壳后再来⽤ OllyDBG 调试,特殊情况下也可带壳调试。
OllyDBG 入门系列(一)-认识OllyDBG一、OllyDBG 的安装与配置OllyDBG 1.10 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。
汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 OllyDBG.exe 即可:图片1OllyDBG 中各个窗口的功能如上图。
简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的 CPU 寄存器内容。
同样点击标签寄存器 (FPU) 可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈。
要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下 OllyDBG 就可以生效了。
启动后我们要把插件及 UDD 的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签:因为我这里是把 OllyDBG 解压在F:\OllyDBG 目录下,所以相应的 UDD 目录及插件目录按图上配置。
还有一个常用到的标签就是上图后面那个字体,在这里你可以更改 OllyDBG 中显示的字体。
上图中其它的选项可以保留为默认,若有需要也可以自己修改。
修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动 OllyDBG。
在这个对话框上点确定,重新启动一下 OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。
从零开始的程序逆向之路基础篇第⼆章——⽤OllyDbg(OD)分析⼀个简单的软件作者:Crazyman_Army原⽂来⾃:0x00知识回顾 (由于笔者省事,没开XP虚拟机,⽽且没关闭ASLR,所以每次重载的内存地址会不⼀样)在第⼀章的内容中,笔者已经讲了OllyDbg(简称OD)的界⾯介绍以及基础的操作,普及了常⽤的汇编指令上次课在底下的附件中,我留下了⼀个演⽰样例,⼤家载⼊OD后搜索到字符串点击跟踪到反汇编窗⼝的时候会发现与第⼀章所讲的程序的框架不太⼀样.尤其可见多出了很多的call指令,call指令在汇编中就是调⽤⼦程序,下⾯放出代码,各位同学可以⽐对⼀下与上篇⽂件所贴出代码的不同代码如下:#include <windows.h>#include <tlhelp32.h>#include <stdio.h>BOOL getProcess(const char *procressName);BOOL getProcess(const char *procressName){char pName[MAX_PATH];strcpy(pName, procressName);CharLowerBuff(pName, MAX_PATH);PROCESSENTRY32 currentProcess;currentProcess.dwSize = sizeof(currentProcess);HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (hProcess == INVALID_HANDLE_VALUE){printf("CreateToolhelp32Snapshot()调⽤失败!\n");return FALSE;}_asm NOP;BOOL bMore = Process32First(hProcess, ¤tProcess);while (bMore){CharLowerBuff(currentProcess.szExeFile, MAX_PATH);if (strcmp(currentProcess.szExeFile, pName) == 0){CloseHandle(hProcess);return TRUE;}bMore = Process32Next(hProcess, ¤tProcess);}CloseHandle(hProcess);return FALSE;}int main(){char* process = "explorer.exe";if (getProcess(process)){printf("发现explorer.exe\n");system("pause");exit(0);}else{printf("没有发现explorer.exe\n");printf("Cracke Success!");}getchar();return 0;}从代码⾓度来看,很明显,这次笔者讲判断进程封装成⼀个返回布尔值的函数,所以才会在核⼼判断部分出现如此多的调⽤,那这当然不能像上次⼀样改⼀步简单的跳转就解决问题,如果改得不对就会造成程序的崩溃。