OD使用教程7 - 解密系列【调试篇】
OD使用教程 - 解密系列【调试篇】 调试逆向

OD使用实践
• 古语有云,趁热要打铁,趁火要打劫,趁着我们 还有点印象,赶紧实践一下吧亲╭(╯3╰)╮!
• 要求:通过OD将程序的标题“Hello world”改为 “I love ”
们的视频讲座中随着需要会逐步提供给大家的, 嗯,不用担心,我们就学好眼前的,一步步来!
OD基本快捷键及ห้องสมุดไป่ตู้能
F2 F3 F4 F5 F7 F8 F9 Ctrl+F2 Ctrl+F9 Alt+F9 Ctrl+G
下断点,也就是指定断点的地址 加载一个可执行程序,进行调试分析 程序执行到光标处 缩小、还原当前窗口 单步步入 单步步过 直接运行程序,遇到断点处,程序暂停 重新运行程序到起始处,一般用于重新调试程序 执行到函数返回处,用于跳出函数实现 执行到用户代码处,用于快速跳出系统函数 输入十六进制地址,快速定位到该地址处
调试逆向
• 在软件开发的过程中,程序员会使用一些调试工 具,以便高效地找出软件中存在的错误。
• 而在逆向分析领域,分析者也会利用相关的调试 工具来分析软件的行为并验证分析结果。
• 由于操作系统都会提供完善的调试接口,所以利 用各类调试工具可以非常方便灵活地观察和控制 目标软件。
• 在使用调试工具分析程序的过程中,程序会按调 试者的意愿以指令为单位执行。
调试逆向
• 调试逆向分为动态分析技术和静态分析技术。
• 动态分析技术指的是使用调试工具加载程序并运 行,随着程序运行,调试者可以随时中断目标的 指令流程,以便观察相关计算的结果和当前的设 备情况。
• 静态分析技术是相对于动态分析而言的。由于在 实际分析中,很多场合不方便运行目标(例如病 毒程序,设备不兼容,软件的单独某一模块)。 那么这个时候静态分析技术就该上场了!
od反编译工具用法

od反编译工具用法反编译是指将已经编译过的程序文件转换为高级源代码的过程。
反编译工具可以帮助开发者了解和学习其他人编写的程序,对于调试和修复软件错误也很有帮助。
OD (OllyDbg) 是一种广泛使用的反汇编调试工具,本文将介绍如何使用OD进行反编译。
OD的基本使用方法如下:2.打开需要反编译的程序:在OD主界面上点击“文件”菜单,然后选择“打开”选项,浏览并选择需要反编译的程序文件,并点击“打开”按钮。
3.反汇编代码窗口:OD会在主界面上打开一个反汇编代码窗口,这个窗口将显示程序的机器码和相应的汇编指令。
4.反编译代码:可以通过“右键单击”汇编指令,然后选择“跟随”选项来进行反编译。
OD会尝试寻找并显示反编译后的代码。
5.查看变量和数据:在OD的主界面上,有一个“数据窗口”,可以显示程序中的变量和内存数据。
在反汇编代码窗口中选择一些指令,然后在数据窗口中查看它所使用的变量和数据的值。
6.设置断点:在OD中设置断点可以帮助我们在特定指令上暂停执行程序,以便查看程序状态和调试错误。
在反汇编代码窗口中选择一些指令,然后点击“上方”菜单中的“条件断点”选项,OD会弹出一个对话框,可以在其中设置断点条件。
7.运行程序:在OD的主界面上,有一个“执行”菜单,可以用于运行程序。
可以通过点击“执行”菜单中的“运行”选项来启动程序的执行。
当程序遇到断点时,会停止执行并进入调试模式。
8.调试程序:在OD的调试模式下,可以通过一些常用的调试功能来调试程序。
例如,可以通过“单步执行”菜单选项逐行执行程序代码,通过“寄存器窗口”查看和修改寄存器值,通过“内存窗口”查看和修改内存数据等。
需要注意的是,使用OD进行反编译需要一定的汇编和调试知识。
同时,反编译软件可能涉及违法行为,如未获得程序开发者的许可而进行反编译。
请确保遵守法律规定,并只在合法和正当的情况下使用反编译工具。
在使用OD进行反编译时,可以参考以下一些技巧和注意事项:1.了解汇编语言与机器码的对应关系:汇编语言是将机器码转换为可读性更高的指令的语言,因此了解汇编语言的基本语法和常见指令有助于理解和分析程序。
OD使用教程 - 解密系列【调试篇】 调试逆向

OD使用教程
ห้องสมุดไป่ตู้• OD(OllyDbg)和IDA Pro这两款工具分别是调试逆 向的倚天剑和屠龙刀。
• 虽然两者都兼容动态和静态的调试方式,但就动 态调试而言,OD更为灵活和强大,而静态调试工 具的王者理所应当是功能极为强大的IDA Pro。
• 两款工具可以在鱼C官网下载: • 另外两款工具都有十分丰富的插件扩展,这在我
调试逆向
• 在软件开发的过程中,程序员会使用一些调试工 具,以便高效地找出软件中存在的错误。
• 而在逆向分析领域,分析者也会利用相关的调试 工具来分析软件的行为并验证分析结果。
• 由于操作系统都会提供完善的调试接口,所以利 用各类调试工具可以非常方便灵活地观察和控制 目标软件。
• 在使用调试工具分析程序的过程中,程序会按调 试者的意愿以指令为单位执行。
们的视频讲座中随着需要会逐步提供给大家的, 嗯,不用担心,我们就学好眼前的,一步步来!
OD基本快捷键及功能
F2 F3 F4 F5 F7 F8 F9 Ctrl+F2 Ctrl+F9 Alt+F9 Ctrl+G
下断点,也就是指定断点的地址 加载一个可执行程序,进行调试分析 程序执行到光标处 缩小、还原当前窗口 单步步入 单步步过 直接运行程序,遇到断点处,程序暂停 重新运行程序到起始处,一般用于重新调试程序 执行到函数返回处,用于跳出函数实现 执行到用户代码处,用于快速跳出系统函数 输入十六进制地址,快速定位到该地址处
OD使用实践
• 古语有云,趁热要打铁,趁火要打劫,趁着我们 还有点印象,赶紧实践一下吧亲╭(╯3╰)╮!
• 要求:通过OD将程序的标题“Hello world”改为 “I love ”
OD使用方法

00401001 FC cld
00401002 FC cld
00401003 90 nop
00401004 - E9 BDBA0000 jmp PEncrypt.0040CAC6
00401009 - E3 D5 jecxz short PEncrypt.00400FE0
0040CCEC |49 dec ecx
0040CCEE 60 pushad //跳到这里了,关键提示,继续F8
0040CCEF 9C pushfd //关键提示
0040CCF0 BE 00104000 mov esi,PEncrypt.<ModuleEntryPoin>
0040CCF5 8BFE mov edi,esi
确定从所有Seh异常中走出来,如果前面有大量循环,逐段解压。
****************************************************************************************
大家先细细品位下上面的“理论”!如果你弄懂了,那你应该高兴下了。。
0040CCD4 6368 69 arpl word ptr ds:[eax+69],bp
0040CCD7 8B4424 04 mov eax,dword ptr ss:[esp+4]
好了,我们先就停在这里
看看转存器窗口
0012FFBC 0012FFE0指针到下一个SEH记录
0012FFC0 0040CCD7 SE句柄//Ctrl+G,到0040CCD7
4:CTRL+F2重载程序,按SHIFT+F9(这次按的次数为程序运行的次数m-1次)
OD使用教程 -

调试技巧总结
• 7.一般我们要结合经验通过猜测的方式多尝试几遍设 陷阱,找出相关的函数。 • 8.按“Ctrl+G”键打开跟随表达式的窗口。 • 9.也可以通过“Ctrl+N”键打开应用程序的导入表( 输入表),然后查看应用程序总共导入了哪些函数来 以此推断需要在哪里挖坑下陷阱! • 10.关于返回值,汇编代码的返回值约定是存放在eax 这个寄存器里边的,如果32位的eax不够存放返回值 ,系统会将返回值放在内存某个位置并把该位置的地 址放在eax返回。
调试技巧总结
• 4.所谓领空,实际上就是指在某一时刻,CPU执 行的指令所在的某段代码的所有者。 • 5.如004013F7这类地址一般是可执行文件领空, 7C8114AB这类大地址一般是系统DLL所在的地 址空间。 • 6.程序通常读取文本框内容的字符串用的是以下 两个函数:
– GetDlgItemTextA(GetDlgItemTextW) – GetWindowTextA(GetWindowTextW)
OD使用教程
• 今天小甲鱼给大家演示使用OD破解《解密系列》 里边的小程序的过程。 • 《解密系列》里固然破解过程说明,但是看过此 书的朋友无不说太简单带过了,书中仅提到破解 该程序的简要步骤。 • 但是我们强调一定要知其然且知其所以然!所以 在今天的演示中,小甲鱼会用一样的程序讲出更 全面的内容! • 鸡冻吧?那上课就别睡觉了哦~
• 演示中… …
调试技巧总结
• 1.F2下断点,Alt+b打开断点编辑器,可编辑所 有下过的断点,空格键可快速切换断点状态。 • 2.当位于某个CALL中,这时想返回到调用这个 CALL的地方时,可以按“Ctrl+F9”快捷键执行 返回功能。这样OD就会停在遇到的第一个返回命 令(如RET、RETF或IRET)。 • 3.如果跟进系统DLL提供的API函数中,此时想返 回到应用程序领空里,可以按快捷键“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]一个正在运行的程序。
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目录,以便你下次调试时可以继续以前的工作。
OD的教程

题外:(找零区段的方法:a.将零区段nop掉,看是否可以保存 b.保存过后,测试程序事否可以运行,能运行就代表次区段可以使用)1.直接加花用OD打开木马服务端,(记下原入口点),找段零区段(记下该区段,既是新的入口点)直接加上花指令.然后跳到原入口点。
保存好后,打开LordPE进行修改入口点。
列:原入口点:004A1E48新入口点:0049bb3c将木马托到LordPE里面,入口点地址显示的是原入口点,也就是004A1E48 我们修改它!把新入口点和原入口点比较相同的则不改。
改不相同的部分。
上面的列只要将9bb3c替换跳LordPE里面入口点地址A1E48 包存→确定即可!2.去头加花用OD打开木马服务端,(记下原入口点) 把头部的花指令(二至三行)记录下来,然后nop掉.找到零区段(记下新入口),把nop掉的头部花指令添加进去,再在后面添加花指令。
跳到去头花指令的第一个代码。
然后保存exe打开LordPE进行修改入口点(方法同1).3.跳转加花(加多重花)用OD打开木马服务端,(记下原入口点) 。
找段零区段(记下新入口),添加花指令。
添加完毕后用(jmp 内存地址)然后在添加花指令。
最后跳到原入口点。
保存好后,打开LordPE进行修改入口点。
4.头前加花用OD打开木马服务端(把头部现记录下,然后nop掉),找段零区段(记录新入口点),先加段花指令,后加上头部指令,再跳到nop 掉的头的后面,改入口点。
5.头后加花用OD打开木马服务端(把头部现记录下,然后nop掉),找段零区段(记录新入口点),先加头部指令,后加段花指令。
再跳到nop 掉的头的后面,改入口点。
6.加区加花当零区段不够用的时候,或木马文件很小的时候,可以用zeroadd加段零区段。
增加区段的大小一般为100,名称随便。
可以用PEiD(点PE 区段)来查看是否添加成功,同时也可看见增加区段的内存地址(该内存地址和正常的内存地址有点差别,用这个内存地址是不可以跳到新加的零区段里面区,可以将已加好的零区段的木马载入OD,点击上方的M剑,即可看见刚刚所添加的零区段名称和内存地址,获得内存地址方法:选中刚刚添加零区段的名称→右键→复制到剪切板→地址,即可获得内存地址,然后在该内存地址上按上面的思路添加花指令。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
破解的思路
• 仔细观察一个程序,我们会发现,无论在怎么加 密,无论加密哪里,这个程序加密的目的就是需 要你掏腰包来获得更多的功能或者解除限制。
• 那么我们就可以逆向的来思考,如果该程序成功 的注册后,那么程序的行为必将发生变化,如 NAG去除了,如功能限制没有了等等。
• 也就是说,程序的代码的走法也会跟未注册的时 候截然不同。因为程序的行为改变了,那么决定 它所有行为的代码走法也会发生变化。
• 那么聪明的鱼油肯定会追问:小甲鱼老湿,那我 要如何来区分何时使用何种断点呢?
认识OD的两种断点
• 这两种断点在使用上都有它们自身的限制,只要 搞清楚它们各自的特性就知道何时该用哪个了。
• 例如软件断点就只能在OD的CPU界面下,在数据 段它下不了,在一条指令的中间它也下不了。
• 在我们这个例子中,断点我们想下在windows的动 态链接库里,我们需要用到硬件断点,因为用软 件断点下在dll文件中是不会保存的,重启程序后 将丢失断点。
认识OD的两种断点
– 传说中,有这么一些寄存器,它们只用于调试,我 们称为调试寄存器:Dr0~Dr7
– 其中Dr0~Dr3四个寄存器用来存放中断地址,Dr4、 Dr5保留不使用,Dr6、Dr7用来记录Dr0~Dr3的属性 (如读,写还是执行,单位是字节,字还是双字) 。
– 因此,这就解释了为啥硬件断点只有四个,天生不 足哈。
破解的思路
• 小甲鱼在这里再举个例子:
– 未注册 -> 不跳过NAG窗口 – 已注册 -> 改编代码或条件,跳过NAG窗口
• 说啥呢?也就是说我们只需要找到这个判断是否 需要“跳”的条件即可。
• 另外补充说一点,一般我们说条件跳,鱼油们一 定会想到:cmp XX,XX 然后jz或jnz或jl等。
• 其实还有另外一种形式,叫做可变跳转。 • 小甲鱼描述能力仅限于美女,还是举个例子吧:
OD使Байду номын сангаас教程7
• 小甲鱼觉得,掌握逆向的思维尤为重要。所以在 咱的OD使用教程中,不单会告诉你怎么去逆向这 个软件,小甲鱼更多想引导大家发挥自己的想象 力,在理解原理的基础上用更多创新的方法实现 突破。(此处应该有掌声)
• 好滴,咱一起来看一下今天的对手,正所谓知己 知彼杀杀杀!
• VisualSite Designer.exe
认识OD的两种断点
– 另外还需要提一下的是,内存断点会明显降低OD 的性能,因为OD经常会校对内存。
• 软件断点: – 当我们按下F2设置的断点就是软件断点。 – 设置该断点的原理是在断点处重写代码,插入一个 int3中断指令,当CPU执行到int3指令的时候,OD 就可以获得控制权。
• 硬件断点: – 这个原理跟软件断点不同,硬件断点的可行性依赖 于CPU的物理支持。
• 接下来的一系列实践会让你掌握这些技巧的!