CCDebuger的OllyDBG入门教学
OllyDBG新手使用说明书
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(OllyDbg)使用教程
程序运行之后,在系统 空间里会触发一个INT3
文件入口点
程序的Winmain()函数入口点, 但一般都是在文件入口点
设置完成之后,载入文件,出现如图所示:
虚拟地址
机器码:
CPU执行的机器 代码
汇编指令: 和机器码对应的
程序代码
3、单步跟踪
调试器一个最基本功能就是动态跟踪,OllyDbg单步跟踪功能键:
目的:可以让软件运行的时候停在设断点的地方,以方便 反复跟踪调试
当关闭程序时,OllyDbg会将设置好的断点保存在UDD文件 中,下次运行时还有效。
5、调试分析:
调试分析其实就是分析程序代码的意义,如图:
阅读这些代码时,首先要搞清楚各API函数的定义,还弄明白 那些汇编程序代码的具体含义
6、保存修改后的文件
这里又回到traceme的领空了我们可以按altb调出断点窗口然后将getdlgitemtexta的断点改为已禁止202137chenli18接下来就在004011ae下一个断点因为这里有调用到getdlgitemtexta这个函数然后就要开始分析这些汇编代码的意义所以我们在使用这个软件的时候一定要明白这些代码的含义现在我们只是先认识一下这个软件的作用所以就不为大家做出分析接下来就是修改代码了
注意:此时的领空是模块USER32,领空就是在
某一时刻,CPU的CS:EIP所指向代码的所有者
领空
接着,在USER32的领空中,在77D6B05E代码行按下F2, 下断点,然后按F9运行,然后键入下图所示:
点check,可以看到程序被OD截停在下断点的地方,如图所示: 接着,按Alt+F9,返回到用户代码,可以回到:
图中红色的就是我们修改的地方,然后就点右键,复制到 文件,就可以保存当前的修改
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完美教程
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破解工具入门教程一、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 的安装与配置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 目录的作用是保存你调试的工作。
OD新手入门教程,制作辅助必备。
运行环境: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 中,这样就可以快速获得系统函数的相关帮助。
OD 新手入门教程,制作辅助必备 第一章 概述
OllyDbg 是一种具有可视化界面的 32 位汇编—分析调试器。 它的特别之处在于可以在 没有源代码时解决问题,并且可以处理其它编译器无法解决的难题。 Version 1.10 是最终的发布版本。 这个工程已经停止,我不再继续支持这个软件了。 但不用担心:全新打造的 OllyDbg2.00 不久就会面世!
push ebx push esi push edi
OllyDbg完全教程
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新手使用说明书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支持即时调试。
OD新手入门教程,制作辅助必备。
的哪一部分被频繁执行。 补丁:内 置汇编器能够自 动找到修改过的代 码段。二进制编 辑器则会以 ASCII 、 UNICODE 或者十六进制的形式同步显示修改后的数据。修改后的数据同其它数据一样, 能 够进行复制—粘贴操作。原来的数据会自动备份,以便数据恢复时使用。你可以把修改的部 分直接复制到执行文件中, OllyDbg 会自动修正。 OllyDbg 还会记录以前调试过程中使用的 所有补丁。你可以通过空格键实现补丁的激活或者禁止。 自解压文件: 当调试自解压文件时,你往往希望跳过解压部分,直接停在程序的原始 入口点。OllyDbg 的自解压跟踪将会使你实现这一目的。如果是加保护的自解压段,自解压 跟踪往往会失败。而一旦 OllyDbg 找到了入口点,它将会跳过解压部分,并准确的到达入口 点。 插件:你可以把自己的插件添加到 OllyDbg 中,以增加新的功能。OllyDbg 的插件能够 访问几乎所有重要的数据的结构、能够在 OllyDbg 的窗口中添加菜单和快捷键,能够使用 100 个以上的插件 API 函数。 插件 API 函数有详细的说明文档。 默认安装已经包含了两个插 件:命令行插件和书签插件。 UDD: OllyDbg 把所有程序或模块相关的信息保存至单独的文件中,并在模块重新加 载时继续使用。这些信息包括了标签、注释、断点、监视、分析数据、条件等等 更多:这里介绍的功能,仅仅是 OllyDbg 的部分功能。因为其具有如此丰富的功能, 以 至于 OllyDbg 能成为非常方便的调试器!
push ebx push esi push edi
/
ห้องสมุดไป่ตู้
/
1
栈:在栈窗口中,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]可以在跟踪时计算某些指令出现的次数。因此你就能了解代码
od使用方法
转Draren总结的ollydbg v1.09d 中文版使用说明一点一滴的积累,也就会了.之所以选择ollydbg1.我的os是winXP,无法使用trw2000,而softice装了多次均未成功,还蓝屏死机多次.郁闷.2.友好的gui界面,不像softice.可以边干活边听歌,不像softice,把整个os都挂起了.多用两次,连时间都不知道了.3.强大的内存查看功能,再不用什么-d了,而且跳转方便,爽!一目了然.4.强大的右键菜单功能ollydbg的界面:菜单:文件:1.其中包括该菜单的下部有上次打开的纪录,该纪录保存有上次未清除的断点.2.附加.对付那些Anti-Debug程序.先运行程序,再运行od,文件-->附加.查看:1.执行模块(Alt+E),查看程序使用的动态链接库2.查看断点.Alt+B调试:1.运行(F9)加载程序后,运行!2.暂停(F12)3.单步进入(F7)遇见CALL进入!进入该子程序.4.单步跳过(F8)遇见CALL不进去!5.执行到返回(ALT+F9)就是执行到该子程的返回语句ollydbg的16进制编辑功能.类似与hiew,hex workshop查看-->文件二进制文件编辑功能.查看-->文件,打开的文件是二进制显示.选中要改变的机器指令,空格,修改,右击-->保存.ollydbg的四个区域左上角是cpu窗口,分别是地址,机器码,汇编代码,注释;注释添加方便,而且还能即时显示函数的调用结果,返回值.右上角是寄存器窗口,但不仅仅反映寄存器的状况,还有好多东东;双击即可改变Eflag的值,对于寄存器,指令执行后发生改变的寄存器会用红色显示. cpu窗口下面还有一个小窗口,显示当前操作改变的寄存器状态. 不错;左下角是内存窗口.可以ascii或者unicode两种方式显示内存信息;右下角的是当前堆栈情况,还有注释啊.F3选择打开程序.使用F9执行程序.下断点:1.对函数下下断点在代码区右击-->搜索-->当前模块中的名称(ctrl+N),在跳出来的对话框中选择需要下的断点函数.->右击->查找导入参考(enter),按F2下断点.如果有多个地方调用了该函数就这样操作。
OllyDBG入门系列(二)-字串参考
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 是一种具有可视化界面的 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根本不需要安装,可直接在软盘中运行!调试DLLs:您可以利用OllyDbg调试标准动态链接库 (DLLs)。
OllyDbg完全教程
OLLYDBG完全教程(一) (1)OLLYDBG完全教程(二) (7)OLLYDBG完全教程(三) (13)OLLYDBG完全教程(四) (15)OLLYDBG完全教程(五) (19)OLLYDBG完全教程(六) (20)OLLYDBG完全教程(七) (22)OLLYDBG完全教程(八) (25)OLLYDBG完全教程(九) (28)OLLYDBG完全教程(十) (31)OLLYDBG完全教程(十一) (32)OLLYDBG完全教程(十二) (33)OLLYDBG完全教程(十三) (35)OLLYDBG完全教程(十四) (37)OLLYDBG完全教程(十五) (50)OLLYDBG完全教程(十六) (61)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完全教程
代码中的字符串、欺骗性指令[tricky constructs]、API调用、函数中参数的数目,import表等等。.这些
分析增加了二进制代码的可读性,减少了出错的可能性,使得我们的调试工作更加容易。
Run跟踪:Run跟踪可以单步执行程序,它会在一个很大的循环缓冲区中模拟运行程序。这个模拟器包含了除
了SSE指令集以外的所以寄存器、标志、线程错误、消息、已经函数的参数。您可以保存命令,这样可以非常
方便地调试自修改代码(译者注:比如加壳程序)。您可以设置条件中断,条件包括地址范围、表达式、命令
。您可以将Run
至直接修改内存。(这可以视为一种软件调试的模式,与之相对的硬件模式则是当进程在运行时调试OllyDbg会让进程终止一小段时间,但是这种暂停对于用户来说是
透明的。
有时进程会发生非法操作。您可以把OllyDbg设置成即时[just-in-time]调试器,它会挂接出错程序,并停
步显示修改后的数据。修改后的数据同其它数据一样,能够进行复制-粘贴操作。原来的数据会自动备份,以
便数据恢复时使用。您可以把修改的部分直接复制到执行文件中,OllyDbg会自动修正。OllyDbg还会记录以
前调试过程中使用的所有补丁。您可以通过空格键实现补丁的激活或者禁止。
自解压文件:当调试自解压文件时,您往往希望跳过解压部分,直接停在程序的原始入口点。OllyDbg的自解
在程序产生异常的地方。
通过OllyDbg,您可以调试单独的DLL[standalone DLLs]文件。操作系统不能直接运行DLL文件,因此
OllyDbg将一个可以加载DLL的小程序压缩到资源里,这个程序允许您调用最多10个参数的输出函数。
第三章:OllyDbg的使用(上)
教程三:OllyDbg的使用(上)本章中我将会介绍OllyDbg的使用。
Olly有许多的功能,唯一学好它们的方式是实践和练习。
也就是说,本教程也只是给你一个简单的概述。
此教程不会涉及额外的内容,后面会进行重点讨论。
到最后,你应该会比较好的掌握Olly。
本章包含了一些文件。
你能够下载那些文件,以及可以在这里下载到次教程的PDF版本。
它们包括一个我们将在Olly中用到的二进制文件、一个Olly备忘单、我使用的外观上有些不同的Olly以及一个新的ini文件。
你可以用这个ini文件替换掉Olly默认的ini,可以给新人提供一些帮助(感谢伟大的Lena151做的这些)。
你可以从这里直接下载或者从教程页面下载。
如果你更愿意用原版的Olly,你可以从这里下载。
一、载入应用第一步是将目的二进制文件载入Olly。
你可以将二进制文件拖放到Olly的反汇编窗口,或者点击顶部工具栏中的载入图标选择目的文件。
我们这里载入“FirstProgram.exe”,可以从本网站下载。
Olly会进行分析(Olly的底部状态栏会显示分析进程)然后停在程序的入口点(EP):需要注意的第一件事是EP的地址是401000,就是图片中的第一列。
这是可执行文件的一个相当标准的起点(该可执行文件至少没有加过壳或混淆过)。
如果你的看起来不太一样,并且Olly没有停在401000,你可以尝试点击Appearance菜单,然后选择debugging options,点击“Events”标签,并且确保“WinMain(if location is known)”被勾选上。
然后重启应用。
让我们给“FirstProgram.exe”的内存空间占用情况来张快照。
点击“Me”图标(如果你使用的是不同版本的Olly的话应该是“M”):如果你看地址那一列,你会看到401000那行包含有大小1000、名称“FirstPro”(FirstProgram的简写形式)、区块名“.text”、包含里是“SFX,code”。
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⼊门系列(三)-函数参考现在进⼊第三篇,这⼀篇我们重点讲解怎样使⽤ OllyDBG 中的函数参考(即名称参考)功能。
仍然选择 镜像打包中的⼀个名称为 CrackHead 的crackme。
⽼规矩,先运⾏⼀下这个程序看看:呵,竟然没找到输⼊注册码的地⽅!别急,我们点⼀下程序上的那个菜单“Shit”(真是 Shit 啊,呵呵),在下拉菜单中选“Try It”,会来到如下界⾯:我们点⼀下那个“Check It”按钮试⼀下,哦,竟然没反应!我再输个“78787878”试试,还是没反应。
再试试输⼊字母或其它字符,输不进去。
由此判断注册码应该都是数字,只有输⼊正确的注册码才有动静。
⽤ PEiD 检测⼀下,结果为 MASM32 / TASM32,怪不得程序⽐较⼩。
信息收集的差不多了,现在关掉这个程序,我们⽤ OllyDBG 载⼊,按 F9 键直接让它运⾏起来,依次点击上⾯图中所说的菜单,使被调试程序显⽰如上⾯的第⼆个图。
先不要点那个“Check It”按钮,保留上图的状态。
现在我们没有什么字串好参考了,我们就在API 函数上下断点,来让被调试程序中断在我们希望的地⽅。
我们在 OllyDBG 的反汇编窗⼝中右击⿏标,在弹出菜单中选择 查找->当前模块中的名称 (标签),或者我们通过按 CTR+N 组合键也可以达到同样的效果(注意在进⾏此操作时要在 OllyDBG 中保证是在当前被调试程序的领空,我在第⼀篇中已经介绍了领空的概念,如我这⾥调试这个程序时 OllyDBG 的标题栏显⽰的就是“[CPU - 主线程, 模块 -CrackHea]”,这表明我们当前在被调试程序的领空)。
通过上⾯的操作后会弹出⼀个对话框,如图:对于这样的编辑框中输注册码的程序我们要设断点⾸选的 API 函数就是 GetDlgItemText 及 GetWindowText。
每个函数都有两个版本,⼀个是 ASCII 版,在函数后添加⼀个 A 表⽰,如 GetDlgItemTextA,另⼀个是 UNICODE 版,在函数后添加⼀个 W 表⽰。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【原创】OllyDBG 入门系列(一)-认识OllyDBG标题:【原创】OllyDBG 入门系列(一)-认识OllyDBG作者:CCDebuger时间: 2006-02-13,17:23:26链接: /showthread.php?t=21284OllyDBG 入门系列(一)-认识OllyDBG作者:CCDebuger一、OllyDBG 的安装与配置OllyDBG 1.10 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。
汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 Ol lyDBG.exe 即可:OllyDBG 中各个窗口的功能如上图。
简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的 CPU 寄存器内容。
同样点击标签寄存器 (FPU) 可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈。
要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下 OllyDBG 就可以生效了。
启动后我们要把插件及 UDD 的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签:因为我这里是把 OllyDBG 解压在 F:\OllyDBG 目录下,所以相应的 UDD 目录及插件目录按图上配置。
还有一个常用到的标签就是上图后面那个字体,在这里你可以更改 OllyDB G 中显示的字体。
上图中其它的选项可以保留为默认,若有需要也可以自己修改。
修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动 OllyDBG。
在这个对话框上点确定,重新启动一下 OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。
有人可能知道插件的作用,但对那个 UDD 目录不清楚。
我这简单解释一下:这个 UDD 目录的作用是保存你调试的工作。
比如你调试一个软件,设置了断点,添加了注释,一次没做完,这时 OllyDBG 就会把你所做的工作保存到这个 UDD 目录,以便你下次调试时可以继续以前的工作。
如果不设置这个 UDD 目录,OllyDBG 默认是在其安装目录下保存这些后缀名为 udd 的文件,时间长了就会显的很乱,所以还是建议专门设置一个目录来保存这些文件。
另外一个重要的选项就是调试选项,可通过菜单选项->调试设置来配置:新手一般不需更改这里的选项,默认已配置好,可以直接使用。
建议在对 OllyDBG 已比较熟的情况下再来进行配置。
上面那个异常标签中的选项经常会在脱壳中用到,建议在有一定调试基础后学脱壳时再配置这里。
除了直接启动 OllyDBG 来调试外,我们还可以把 OllyDBG 添加到资源管理器右键菜单,这样我们就可以直接在 .exe 及 .dll 文件上点右键选择“用Ollydbg打开”菜单来进行调试。
要把 OllyDBG 添加到资源管理器右键菜单,只需点菜单选项->添加到浏览器,将会出现一个对话框,先点击“添加 Ollydbg 到系统资源管理器菜单”,再点击“完成”按钮即可。
要从右键菜单中删除也很简单,还是这个对话框,点击“从系统资源管理器菜单删除 Ollydbg”,再点击“完成”就行了。
OllyDBG 支持插件功能,插件的安装也很简单,只要把下载的插件(一般是个 DLL 文件)复制到 OllyDBG 安装目录下的 PLUGIN 目录中就可以了,OllyDBG 启动时会自动识别。
要注意的是 OllyDBG 1.10 对插件的个数有限制,最多不能超过 32 个,否则会出错。
建议插件不要添加的太多。
到这里基本配置就完成了,OllyDBG 把所有配置都放在安装目录下的 ollydbg.ini 文件中。
二、基本调试方法OllyDBG 有三种方式来载入程序进行调试,一种是点击菜单文件->打开(快捷键是 F3)来打开一个可执行文件进行调试,另一种是点击菜单文件->附加来附加到一个已运行的进程上进行调试。
注意这里要附加的程序必须已运行。
第三种就是用右键菜单来载入程序(不知这种算不算)。
一般情况下我们选第一种方式。
比如我们选择一个 test.exe 来调试,通过菜单文件->打开来载入这个程序,OllyDBG 中显示的内容将会是这样:调试中我们经常要用到的快捷键有这些:F2:设置断点,只要在光标定位的位置(上图中灰色条)按F2键即可,再按一次F2键则会删除断点。
(相当于 SoftICE 中的 F9)F8:单步步过。
每按一次这个键执行一条反汇编窗口中的一条指令,遇到 CALL 等子程序不进入其代码。
(相当于 SoftICE 中的 F10)F7:单步步入。
功能同单步步过(F8)类似,区别是遇到 CALL 等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上。
(相当于 SoftICE 中的 F8)F4:运行到选定位置。
作用就是直接运行到光标所在位置处暂停。
(相当于 SoftICE 中的 F7)F9:运行。
按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行。
(相当于 SoftICE 中的 F5)CTR+F9:执行到返回。
此命令在执行到一个 ret (返回指令)指令时暂停,常用于从系统领空返回到我们调试的程序领空。
(相当于 SoftICE 中的 F12)ALT+F9:执行到用户代码。
可用于从系统领空快速返回到我们调试的程序领空。
(相当于 SoftICE 中的 F11)上面提到的几个快捷键对于一般的调试基本上已够用了。
要开始调试只需设置好断点,找到你感兴趣的代码段再按 F8 或 F7 键来一条条分析指令功能就可以了。
就写到这了,改天有空再接着灌。
【原创】OllyDBG 入门系列(二)-字串参考标题:【原创】OllyDBG 入门系列(二)-字串参考作者:CCDebuger时间: 2006-02-14,13:34:43链接: /showthread.php?t=21308引用:感谢 chuxuezhe 朋友的反馈:/showthread.php?s=&threadid=24703经检查才发现原来是写文章前曾用修改过的 Ultra String Reference 插件查找过字串,这个修改后的插件会把找到的字串自动添加到代码后面作为注释,且所有字母都一律小写,导致原来文章写的时候注释中的大小写分不清楚,比较混乱。
这次把文章一些地方修改了一下,全部用OD自带功能进行操作,重新制作了几个图片。
因为我自己的失误,在此对给大家造成了阅读中的困惑表示抱歉!OllyDBG 入门系列(二)-字串参考作者:CCDebuger上一篇是使用入门,现在我们开始正式进入破解。
今天的目标程序是看雪兄《加密与解密》第一版附带光盘中的 镜像打包中的 CFF Crackme #3,采用用户名/序列号保护方式。
原版加了个 UPX 的壳。
刚开始学破解先不涉及壳的问题,我们主要是熟悉用 OllyDBG 来破解的一般方法。
我这里把壳脱掉来分析,附件是脱壳后的文件,直接就可以拿来用。
先说一下一般软件破解的流程:拿到一个软件先别接着马上用 OllyDBG 调试,先运行一下,有帮助文档的最好先看一下帮助,熟悉一下软件的使用方法,再看看注册的方式。
如果是序列号方式可以先输个假的来试一下,看看有什么反应,也给我们破解留下一些有用的线索。
如果没有输入注册码的地方,要考虑一下是不是读取注册表或 K ey 文件(一般称 keyfile,就是程序读取一个文件中的内容来判断是否注册),这些可以用其它工具来辅助分析。
如果这些都不是,原程序只是一个功能不全的试用版,那要注册为正式版本就要自己来写代码完善了。
有点跑题了,呵呵。
获得程序的一些基本信息后,还要用查壳的工具来查一下程序是否加了壳,若没壳的话看看程序是什么编译器编的,如 VC、Delphi、VB 等。
这样的查壳工具有 PEiD 和 FI。
有壳的话我们要尽量脱了壳后再来用 OllyDBG 调试,特殊情况下也可带壳调试。
下面进入正题:我们先来运行一下这个 crackme(用 PEiD 检测显示是 Delphi 编的),界面如图:这个 crackme 已经把用户名和注册码都输好了,省得我们动手^_^。
我们在那个“Register now !”按钮上点击一下,将会跳出一个对话框:好了,今天我们就从这个错误对话框中显示的“Wrong Serial, try again!”来入手。
启动 OllyDBG,选择菜单文件->打开载入 CrackMe3.exe 文件,我们会停在这里:我们在反汇编窗口中右击,出来一个菜单,我们在查找->所有参考文本字串上左键点击:当然如果用上面那个超级字串参考+插件会更方便。
但我们的目标是熟悉 OllyDBG 的一些操作,我就尽量使用 OllyDBG 自带的功能,少用插件。
好了,现在出来另一个对话框,我们在这个对话框里右击,选择“查找文本”菜单项,输入“Wrong Serial, try again!”的开头单词“Wrong”(注意这里查找内容要区分大小写)来查找,找到一处:在我们找到的字串上右击,再在出来的菜单上点击“反汇编窗口中跟随”,我们来到这里:见上图,为了看看是否还有其他的参考,可以通过选择右键菜单查找参考->立即数,会出来一个对话框:分别双击上面标出的两个地址,我们会来到对应的位置:00440F79 |. BA 8C104400 MOV EDX,CrackMe3.0044108C ; ASCII "Wrong Serial,try again!" 00440F7E |. A1 442C4400 MOV EAX,DWORD PTR DS:[442C44]00440F83 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]00440F85 |. E8 DEC0FFFF CALL CrackMe3.0043D06800440F8A |. EB 18 JMP SHORT CrackMe3.00440FA400440F8C |> 6A 00 PUSH 000440F8E |. B9 80104400 MOV ECX,CrackMe3.00441080 ; ASCII "Beggar off!"00440F93 |. BA 8C104400 MOV EDX,CrackMe3.0044108C ; ASCII "Wrong Serial,try again!" 00440F98 |. A1 442C4400 MOV EAX,DWORD PTR DS:[442C44]00440F9D |. 8B00 MOV EAX,DWORD PTR DS:[EAX]00440F9F |. E8 C4C0FFFF CALL CrackMe3.0043D068我们在反汇编窗口中向上滚动一下再看看:00440F2C |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]00440F2F |. BA 14104400 MOV EDX,CrackMe3.00441014 ; ASCII "Registered User"00440F34 |. E8 F32BFCFF CALL CrackMe3.00403B2C ; 关键,要用F7跟进去00440F39 |. 75 51 JNZ SHORT CrackMe3.00440F8C ; 这里跳走就完蛋00440F3B |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]00440F3E |. 8B83 C8020000 MOV EAX,DWORD PTR DS:[EBX+2C8]00440F44 |. E8 D7FEFDFF CALL CrackMe3.00420E2000440F49 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]00440F4C |. BA 2C104400 MOV EDX,CrackMe3.0044102C ; ASCII "GFX-754-IER-954"00440F51 |. E8 D62BFCFF CALL CrackMe3.00403B2C ; 关键,要用F7跟进去00440F56 |. 75 1A JNZ SHORT CrackMe3.00440F72 ; 这里跳走就完蛋00440F58 |. 6A 00 PUSH 000440F5A |. B9 3C104400 MOV ECX,CrackMe3.0044103C ; ASCII "CrackMe cracked successfully"00440F5F |. BA 5C104400 MOV EDX,CrackMe3.0044105C ; ASCII "Congrats! You cracked this CrackMe!" 00440F64 |. A1 442C4400 MOV EAX,DWORD PTR DS:[442C44]00440F69 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]00440F6B |. E8 F8C0FFFF CALL CrackMe3.0043D06800440F70 |. EB 32 JMP SHORT CrackMe3.00440FA400440F72 |> 6A 00 PUSH 000440F74 |. B9 80104400 MOV ECX,CrackMe3.00441080 ; ASCII "Beggar off!"00440F79 |. BA 8C104400 MOV EDX,CrackMe3.0044108C ; ASCII "Wrong Serial,try again!"00440F7E |. A1 442C4400 MOV EAX,DWORD PTR DS:[442C44]00440F83 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]00440F85 |. E8 DEC0FFFF CALL CrackMe3.0043D06800440F8A |. EB 18 JMP SHORT CrackMe3.00440FA400440F8C |> 6A 00 PUSH 000440F8E |. B9 80104400 MOV ECX,CrackMe3.00441080 ; ASCII "Beggar off!"00440F93 |. BA 8C104400 MOV EDX,CrackMe3.0044108C ; ASCII "Wrong Serial,try again!"00440F98 |. A1 442C4400 MOV EAX,DWORD PTR DS:[442C44]00440F9D |. 8B00 MOV EAX,DWORD PTR DS:[EAX]00440F9F |. E8 C4C0FFFF CALL CrackMe3.0043D068大家注意看一下上面的注释,我在上面标了两个关键点。