OD破解常用方法

合集下载

OD破壳

OD破壳

但愿大家互相进修进修,大家对于破解都不是很了解,人们想学破解,可是去无从入手,所以决议为大家写1个破解初级读物的教程,但愿能大家了解破解有一些帮忙,但愿能有更多的人踏入破解的大门1.低级,修改步伐,用ultraedit等东西修改exe文件,称暴力破解,略称爆破中级,追出软体的注册码高级,开具注册机2.经常使用破解东西(1)侦壳东西:PEiD(2)消息联合的OllyDbg引领破解东西的新潮水一,此刻咱们起首来进修下破解的开端,爆破~1.侦壳要破解1个软体起主要做的就是侦壳,要侦壳就要对壳有绝对似的了解,家喻户晓,软体作者用编程语言编著好软体后,是将它编译成扩展名为EXE的可执行文件编译为EXE的目的有两点:(1)有一些版权信息需要掩护起来,不克不及让别人随心改动,如作者的姓名、软体名称等;(2)需要给步伐"瘦身",从而利便存储、使用以及网上传道输送为了编译,会用到一些软体它们能将可执行文件压缩以及对信息加密(图1),实现上面所说的两个功效,这些个软体称为加壳软体为软体加上的东东就称为"壳"加壳软体差别于一般的WinZIP、WinRAR等打包类压缩软体加壳软体是压缩可执行文件的,压缩后的文件可以直接运行最多见的加壳软体有3个:ASPACK 、UPX、PEcompact终究它们是主流,据计数,用它们加壳的软体约占市面所有软体的90%!其它不经常使用的加壳软体有ASPROTECT、PETITE 、NEOLITE、TELOCK等软体最多见的编程语言是Delphello,Visual Basic(略称VB),Visual C++(略称VC)了解些编程的常识,会让破解更加轻车熟道底下来讲侦壳,此刻比力经常使用侦壳软体就PeiD,他具备华美的图形界面外壳整合(新增到鼠标右键)功效令使用更加利便,撑持拖放操作配置时,务请将"扩展到鼠标右键"打上对号其使用要领是,鼠标点住XX.exe,按鼠标右键,选"使用PEid扫描"便可;"壳"的信息就显示在底部2.破解东西OD有关OD的先容我把他放到附件里了,这个是看雪论坛的先容,是比力周全的,至少我感觉比我写的要好,所以大家根据他可以大好的了解OD3.爆破实例爆破是破解的开端,所说的爆破,就是指路程经过过程修改可执行文件的源文件,降临达相应的目的你半大白?呵呵,举个例子好了,好比说某同享软体,它比力用户输入的注册码,要是用户输入的,跟它路程经过过程用户名(或其它)算出来的注册码相等的话(也就是说用户输入的注册码不错了),那末它就会跳到注册乐成的处所去,不然就跳到堕落的处所去大白过来了吧,咱们只要找到这个跳转指令,把它修改成咱们需要的"造型",如许,咱们是否就可认随心所欲了?一,破解时经常使用的汇编指令如下,汇编较弱者可先强行违住,以后就可逐步理解了cmp a,b //比力a与bmov a,b //把b的值送给a,使a=bret //归回主步伐nop //无效用,英文"no operation"的简写,意思是"do nothellong"(呆板码90) (解释:ultraedit打开编辑exe文件时瞅见90,等同于汇编语句nop)call //挪用子步伐,子步伐以ret末端je 或jz //若相等则跳(呆板码74 或0F84)jne或jnz //若不相等则跳(呆板码75或0F85)jmp //无前提跳(呆板码EB)jb //若小于则跳ja //若大于则跳jg //若大于则跳jge //若大于等于则跳jl //若小于则跳jle //若小于等于则跳pop xx //xx出栈push xx //xx压栈更为具体的指令请查阅汇编册本4.破解常见修改,参看表1汇编指令修改相应的呆板码修改(路程经过过程16进制编辑器实现)jnz/jne->nop 75->90jnz/jne -> jmp 75-> EBjz/je->nop 74->90jz/je -> jmp 74-> EBjnz -> jz 75->74 或0F 85 -> 0F 84jz -> jnz 74->75 或0F 84 -> 0F 85jnz -> jz 75->74 或0F 85 -> 0F 84je-> jne 74->75 或0F 84 -> 0F 85表1 破解常见修改(1)修改成jmp(其示意向见图6)je(jne,jz,jnz) =>jmp相应的呆板码为EB (意思是堕落信息向上找到的熬头个跳转),jmp的效用是绝对跳,无前提跳,从而跳过底下的堕落信息例如:xxxxxxxxxxxx 堕落信息,如注册码不对,sorry,未注册版不乐成,"Function Not Avaible in Demo","Command Not Avaible"或"Can't save in Shareware/Demo"等,咱们但愿把它跳过,不让它浮现……xxxxxxxxxxxx 不错线路地点,直接跳转到这搭(图6)(2)修改成nop(其示意向见图7)je(jne,jz,jnz) =>nop相应的呆板码90 (不错信息向上找到的熬头个跳转),nop的效用是抹掉这个跳转,使这个跳转失效,掉去效用,从而使步伐顺利降临紧跟其后的不错信息处例如:xxxxxxxxxxxx 不错信息,如注册乐成,谢谢您的撑持等,咱们但愿它不被跳过,让它浮现,所以步伐绝对是要顺利降临这搭,不克不及跳转在OD中,咱们一般是把不需要设置NOP,只是把JE或JNZ改成JNZ或JE便可,也就是把相等则跳改成不相等则跳,或不相等则跳改成相等则跳,把跳转过程相反,到达更改步伐流程的目的……xxxxxxxxxxxx 堕落信息,咱们但愿不要跳到这搭,不让它浮现!(图7)二,怎样迅速确定暴破物1,确定目标有无加壳没有最好了,有的话看是否常见壳,可不成以用现存脱壳软体迅速脱掉弄不稳定的话,权时放弃它"我吃定你了!",不要如许,老兄不就是一壳么,不要以及他一般见地记取,你今日的重点是爆破不要主次不分、舍本逐末,这也是刚开始学者最易犯的纰缪这方面,我用PEID它可以整合到资源菜谱,很是利便2,确定用啥子语言编著我的经验是,DELPHI的步伐布局清楚、紧凑密切,最好阐发其次是VC,BC,ASM,比力难的是VB,要有绝对似的经验才可弄定一两个2,在反汇编文件中找到可疑点经典语句自不消说,好比,"恭喜","注册乐成","注册码纰缪""失效的注册码","Thank You","Sorry"...找到后,一般向上不远方就可瞅见前提转移语句JZ、JNZ、JLE啥子的究竟上,只有少少少少的软体只修改注册判断就OK的所以咱们要把更多的注意力转到其它的可疑点如未注册标识,逾期正告,次数标识,NAG会话框...,谙练使用各类东西的搜刮功效是基本功之一找到后再向上不远方找前提转移语句三,怎样暴破当你找准爆破点后,你会发明有许多种爆破的要领均可以达目的1,修改转移语句我一般如许改:不需要跳,我就把JNE改成JE或把JE改成JNZ需要跳,我就把JE或JNZ改成JMP底下的附件我做了1个有关爆破的视频文件教程,但愿对大家理解爆破有帮忙4.动态追踪破解技巧-破解经典句式以下是经典的比力组合,常常是注册码的浮现处,所以被称为破解经典句式⑴mov eax,[ ] //这搭可所以地址,也可所以其它寄放器或mov eax [ ]mov edx,[ ] //同上,凡是这两个地址就储存着意要信息或可所以pop edxcall XXXXXXXX //要害calltest eax,eax //eax为标记位jz(jnz)或jne(je) //要害跳转⑵mov eax,[ ] //这搭可所以地址,也可所以其它寄放器mov edx,[ ] //或是pop edx,凡是该地址就储存着意要信息call XXXXXXXX //要害calljne(je) //要害跳转⑶mov eax,[ ] //这搭可所以地址,也可所以其它寄放器mov edx,[ ] //同上,凡是储存着意要信息cmp eax,edx //要害比力jnz(jz) //要害跳转。

OD入门系列图文详细教程、破解做辅助起步

OD入门系列图文详细教程、破解做辅助起步

二)-字串参考上一篇是使用入门,现在我们开始正式进入破解。

今天的目标程序是看雪兄《加密与解密》第一版附带光盘中的镜像打包中的 CFF Crackme #3,采用用户名/序列号保护方式。

原版加了个 UPX 的壳。

刚开始学破解先不涉及壳的问题,我们主要是熟悉用 OllyDBG 来破解的一般方法。

我这里把壳脱掉来分析,附件是脱壳后的文件,直接就可以拿来用。

先说一下一般软件破解的流程:拿到一个软件先别接着马上用 OllyDBG 调试,先运行一下,有帮助文档的最好先看一下帮助,熟悉一下软件的使用方法,再看看注册的方式。

如果是序列号方式可以先输个假的来试一下,看看有什么反应,也给我们破解留下一些有用的线索。

如果没有输入注册码的地方,要考虑一下是不是读取注册表或 Key 文件(一般称 keyfile,就是程序读取一个文件中的内容来判断是否注册),这些可以用其它工具来辅助分析。

如果这些都不是,原程序只是一个功能不全的试用版,那要注册为正式版本就要自己来写代码完善了。

有点跑题了,呵呵。

获得程序的一些基本信息后,还要用查壳的工具来查一下程序是否加了壳,若没壳的话看看程序是什么编译器编的,如 VC、Delphi、VB 等。

这样的查壳工具有 PEiD 和 FI。

有壳的话我们要尽量脱了壳后再来用 OllyDBG 调试,特殊情况下也可带壳调试。

下面进入正题:我们先来运行一下这个 crackme(用 PEiD 检测显示是 Delphi 编的),界面如图:这个 crackme 已经把用户名和注册码都输好了,省得我们动手^_^。

我们在那个“Register now !”按钮上点击一下,将会跳出一个对话框:好了,今天我们就从这个错误对话框中显示的“Wrong Serial, try again!”来入手。

启动OllyDBG,选择菜单文件->打开载入文件,我们会停在这里:我们在反汇编窗口中右击,出来一个菜单,我们在查找->所有参考文本字串上左键点击:当然如果用上面那个超级字串参考+插件会更方便。

几种用OD脱壳方法

几种用OD脱壳方法

几种用OD脱壳方法OD是反编译软件的一种,可以将可执行文件转换为可读的源代码。

脱壳是指从已经加密或保护的软件中提取出原始的未加密或未保护的代码。

下面是几种常见的OD脱壳方法:1.静态分析法:静态分析是指对二进制文件进行分析,了解其结构、函数调用和控制流程等信息。

通过对逆向工程的分析,可以分析出加密算法和解密函数的位置。

使用静态分析法脱壳的主要步骤如下:-打开OD软件,将加密的可执行文件加载到OD中。

- 使用各种OD工具,如IDA Pro,OllyDbg等,显示可执行文件的汇编代码。

-通过分析代码和调试程序,找到加密算法和解密函数的位置。

-根据找到的位置,修改程序的执行流程,跳过解密函数,使得程序直接执行解密后的代码。

2.动态调试法:动态调试是指在运行时对程序进行调试和分析。

使用动态调试法脱壳的主要步骤如下:-打开OD软件,将加密的可执行文件加载到OD中。

- 使用动态调试工具,如OllyDbg或GDB等,在程序执行期间跟踪和记录函数调用和内存访问。

-通过分析函数调用和内存访问,找到加密算法和解密函数的位置。

-在找到的位置上下断点,执行程序并使用OD工具查看解密后的代码。

3.内存镜像法:内存镜像法是指通过将程序加载到内存中,并对内存进行镜像和分析来脱壳。

使用内存镜像法脱壳的主要步骤如下:-运行加密的可执行文件。

- 使用内存镜像工具,如DumpBin或WinDBG等,将程序的内存镜像保存到磁盘上。

-使用OD软件加载内存镜像文件。

-通过分析内存镜像文件,找到加密算法和解密函数的位置。

-修改程序的执行流程,跳过解密函数,使得程序直接执行解密后的代码。

这些方法都可以用于将加密的可执行文件转换为可读的源代码,从而进行进一步的分析和修改。

脱壳过程需要进行深入的逆向工程和对程序的理解,因此需要具备一定的技术和知识。

此外,需要注意的是,脱壳过程可能涉及到破解和侵犯版权的行为,应遵守法律规定,并仅限于安全研究和个人学习的目的使用。

OD使用教程 -

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” 执行返回到用户代码命令。

【8A版】OD入门系列图文详细教程、破解做辅助起步

【8A版】OD入门系列图文详细教程、破解做辅助起步

一、OllyDBG的安装与配置二、OllyDBG1.10版的发布版本是个ZIP压缩包,只要解压到一个目录下,运行OllyDBG.eGe就可以了。

汉化版的发布版本是个RAR压缩包,同样只需解压到一个目录下运行OllyDBG.eGe即可:三、OllyDBG中各个窗口的功能如上图。

简单解释一下各个窗口的功能,更详细的内容可以参考TT小组翻译的中文帮助:四、反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEG数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。

用鼠标左键点击注释标签可以切换注释显示的方式。

五、寄存器窗口:显示当前所选线程的CPU寄存器内容。

同样点击标签寄存器(FPU)可以切换显示寄存器的方式。

六、信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。

七、数据窗口:显示内存或文件的内容。

右键菜单可用于切换显示方式。

八、堆栈窗口:显示当前线程的堆栈。

九、要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下OllyDBG就可以生效了。

十、启动后我们要把插件及UDD的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签:因为我这里是把OllyDBG解压在F:\OllyDBG目录下,所以相应的UDD目录及插件目录按图上配置。

还有一个常用到的标签就是上图后面那个字体,在这里你可以更改OllyDBG 中显示的字体。

上图中其它的选项可以保留为默认,若有需要也可以自己修改。

修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动OllyDBG。

在这个对话框上点确定,重新启动一下OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。

有人可能知道插件的作用,但对那个UDD目录不清楚。

我这简单解释一下:这个UDD目录的作用是保存你调试的工作。

OD使用教程2 - 解密系列【调试篇】

OD使用教程2 - 解密系列【调试篇】
• 3.如果跟进系统DLL提供的API函数中,此时想返回 到应用程序领空里,可以按快捷键“Alt+F9”执行 返回到用户代码命令。
调试技巧总结
• 4.所谓领空,实际上就是指在某一时刻,CPU执行 的指令所在的某段代码的所有者。
• 5.如004013F7这类地址一般是可执行文件领空, 7C8114AB这类大地址一般是系统DLL所在的地址空 间。
• 6.程序通常读取文本框内容的字符串用的是以下 两个函数:
– GetDlgItemTextA(GetDlgItemTextW) – GetWindowTextA(GetWindowTextW)
调试技巧总结
• 7.一般我们要结合经验通过猜测的方式多尝试几遍设 陷阱,找出相关的函数。
• 8.按“Ctrl+G”键打开跟随表达式的窗口。 • 9.也可以通过“Ctrl+N”键打开应用程序的导入表(
准备工作
• 拆解一个Windows程序要比拆解一个DOS程序容易 得多,因为在Windows中,只要API函数被使用, 想对寻找蛛丝马迹的人隐藏一些东西是比较困难 的。
• 因此分析一个程序,用什么API函数作为切入点就 显得比较关键了。这也正是小甲鱼常跟大家说破 解靠的是耐心和经验的道理!
• 为了便于大家理解,我们先把TraceMe这个序列号 验证程序流程图给大家展示出来:
OD使用教程
• 今天小甲鱼给大家演示使用OD破解《解密系列》 里边的小程序的过程。
• 《解密系列》里固然破解过程说明,但是看过此 书的朋友无不说太简单带过了,书中仅提到破解 该程序的简要步骤。
• 但是我们强调一定要知其然且知其所以然!所以 在今天的演示中,小甲鱼会用一样的程序讲出更 全面的内容!

OD破解常用方法

OD破解常用方法

一、概论壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳两种顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。

当然加密壳的保护能力要强得多!二、常见脱壳方法预备知识1.PUSHAD (压栈)代表程序的入口点,2.POPAD (出栈)代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以立刻脱壳。

方法一:单步跟踪法1.用OD载入,点“不分析代码!”2.单步向下跟踪F8,实现向下的跳。

也就是说向上的跳不让其实现!(通过F4)3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选)4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入7.一般有很大的跳转(大跨段),比如jmp XXXXXX 或者JE XXXXXX 或者有RETN的一般很快就会到程序的OEP。

Btw:在有些壳无法向下跟踪的时候,我们可以在附近找到没有实现的大跳转,右键-->“跟随”,然后F2下断,Shift+F9运行停在“跟随”的位置,再取消断点,继续F8单步跟踪。

一般情况下可以轻松到达OEP!方法二:ESP定律法ESP定理脱壳(ESP在OD的寄存器中,我们只要在命令行下ESP的硬件访问断点,就会一下来到程序的OEP了!)1.开始就点F8,注意观察OD右上角的寄存器中ESP有没突现(变成红色)。

(这只是一般情况下,更确切的说我们选择的ESP值是关键句之后的第一个ESP值)2.在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者是hr XXXXXXXX),按回车!3.选中下断的地址,断点--->硬件访--->WORD断点。

OD使用完全教程

OD使用完全教程

教你如何破解软件,OD破解软件,OD使用教程教你如何破解软件,OD破解软件,OD使用教程大家好,这几天我上网大概看了一下,ITyouth论坛的内容真的应有尽有,不知道应该写什么了,所以我想了一晚上终于想到了还是教你们些破解知识吧!我想对大家来说都很有用吧!我将会一直坚持下去保证课堂质量,有不会的可以提出来问我,尽量解答(呵呵!我也是鸟嘛!)废话不多说!支持我的就往下看吧!先教大家一些基础知识,学习破解其实是要和程序打交道的,汇编是破解程序的必备知识,但有可能部分朋友都没有学习过汇编语言,所以我就在这里叫大家一些简单实用的破解语句吧!----------------------------------------------------------------------------------------------------------------语句:cmp a,b//cmp是比较的意思!在这里假如a=1,b=2 那么就是a与b比较大小.mov a,b//mov是赋值语句,把b的值赋给a.je/jz//就是相等就到指定位置(也叫跳转).jne/jnz//不相等就到指定位置.jmp//无条件跳转.jl/jb//若小于就跳.ja/jg//若大于就跳.jge//若大于等于就跳.----------------------------------------------------------------------------------------------------------------------这些都是我们在以后的课程中会经常遇到的语句,应该记住它们,接下来我们在讲讲破解工具的使用:我们破解或给软件脱壳最常用的软件就是OD全名叫ODbyDYK界面如图1它是一个功能很强大的工具,左上角是cpu窗口,分别是地址,机器码,汇编代码,注释;注释添加方便,而且还能即时显示函数的调用结果,返回值.右上角是寄存器窗口,但不仅仅反映寄存器的状况,还有好多东东;双击即可改变Eflag的值,对于寄存器,指令执行后发生改变的寄存器会用红色突出显示.cpu窗口下面还有一个小窗口,显示当前操作改变的寄存器状态.左下角是内存窗口.可以ascii或者unicode两种方式显示内存信息.右下角的是当前堆栈情况,还有注释啊.恩,今天的课程就上到这了,大家可以在自己的电脑下试试OD,了解了解OD,下堂课我将破解一款软件给大家看,我们就用今天讲的语句和OD来破解,在以后的课程里我还会教大家脱壳,因为现在的软件为了维护版权多数都加了壳的,所以要破解就必须脱壳!好了!下节课见!88OD下载地址:百度一下吧破解工具------ODbyDYK v1.10 12.06.rar 5.1MB【原创】"白拿"软件破解班(二)呵呵!大家好!我是散人,我们又见面了!恩,按照上节课说的那样今天来破解个软件给大家看看!大家只要认真看我的操作一定会!假如还是不明白的话提出难点帮你解决,还不行的话加我QQ!有时间给你补节课!呵呵!好!孔子曰:“废话不可多说也”OK!!!~!!!先讲下预备知识:JZ/JE//相等则跳转JNE/JNZ//不相等则跳转JMP //无条件跳转目标柏林:LRC傻瓜编辑器杀杀杀~~~~~~~~~简介:本软件可以让你听完一首MP3歌曲,便可编辑完成一首LRC歌词。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[分享] OD破解常用方法[复制链接]
一、概论
壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳两种
顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。

当然加密壳的保护能力要强得多!
二、常见脱壳方法
预备知识
1.PUSHAD (压栈)代表程序的入口点,
2.POPAD (出栈)代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近
3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以立刻脱壳。

方法一:单步跟踪法
1.用OD载入,点“不分析代码!”
2.单步向下跟踪F8,实现向下的跳。

也就是说向上的跳不让其实现!(通过F4)
3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选)
4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!
5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP
6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入
7.一般有很大的跳转(大跨段),比如jmp XXXXXX 或者JE XXXXXX 或者有RETN的一般很快就会到程序的OEP。

Btw:在有些壳无法向下跟踪的时候,我们可以在附近找到没有实现的大跳转,右键-->“跟随”,然后F2下断,Shift+F9运行停在“跟随”的位置,再取消断点,继续F8单步跟踪。

一般情况下可以轻松到达OEP!
方法二:ESP定律法
ESP定理脱壳(ESP在OD的寄存器中,我们只要在命令行下ESP的硬件访问断点,就会一下来到程序的OEP了!)
1.开始就点F8,注意观察OD右上角的寄存器中ESP有没突现(变成红色)。

(这只是一般情况下,更确切的说我们选择的ESP值是关键句之后的第一个ESP值)
2.在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者是hr XXXXXXXX),按回车!
3.选中下断的地址,断点--->硬件访--->WORD断点。

4.按一下F9运行程序,直接来到了跳转处,按下F8,到达程序OEP。

方法三:内存镜像法
1:用OD打开软件!
2:点击选项——调试选项——异常,把里面的忽略全部√上!CTRL+F2重载下程序! 3:按ALT+M,打开内存镜象,找到程序的第一个.rsrc.按F2下断点,然后按SHIFT+F9运行到断点,接着再按ALT+M,打开内存镜象,找到程序的第一个.rsrc.上面的.CODE(也就是00401000处),按F2下断点!然后按SHIFT+F9(或者是在没异常情况下按F9),直接到达程序OEP!
方法四:一步到达OEP
1.开始按Ctrl+F,输入:popad(只适合少数壳,包括UPX,ASpack壳),然后按下F2,F9运行到此处
2.来到大跳转处,点下F8,到达OEP!
方法五:最后一次异常法
1:用OD打开软件
2:点击选项——调试选项——异常,把里面的√全部去掉!CTRL+F2重载下程序
3:一开始程序就是一个跳转,在这里我们按SHIFT+F9,直到程序运行,记下从开始按SHIFT+F9到程序运行的次数m!
4:CTRL+F2重载程序,按SHIFT+F9(这次按的次数为程序运行的次数m-1次)
5:在OD的右下角我们看见有一个"SE 句柄",这时我们按CTRL+G,输入SE 句柄前的地址!
6:按F2下断点!然后按SHIFT+F9来到断点处!
7:去掉断点,按F8慢慢向下走!
8:到达程序的OEP!
比如说第一次是按10下SHIFT+F9..然后程序就跑起来了..
接着呢..我们从载入程序然后按9下SHIFT+F9
大家都知道按10下程序就跑起来了..所以说9下程序是不可能跑的..
方法六:模拟跟踪法
1:先试运行,跟踪一下程序,看有没有SEH暗桩之类
2:ALT+M打开内存镜像,找到(包含=SFX,imports,relocations)
内存镜像,项目30
地址=0054B000
大小=00002000 (8192.)
Owner=check 00400000
区段=.aspack
包含=SFX,imports,relocations
类型=Imag 01001002
访问=R
初始访问=RWE
3:地址为0054B000,如是我们在命令行输入tc eip<0054B000,回车,正在跟踪ing。

Btw:大家在使用这个方法的时候,要理解他是要在怎么样的情况下才可以使用
方法七:“SFX”法
1:设置OD,忽略所有异常,也就是说异常选项卡里面都打上勾
2:切换到SFX选项卡,选择“字节模式跟踪实际入口(速度非常慢)”,确定。

3:重载程序(如果跳出是否“压缩代码?”选择“否”,OD直接到达OEP)
cmp a,b 比较a与b
mov a,b 把b的值送给a
ret 返回主程序
nop 无作用,英文“no operation”的简写,意思是“do nothing”(机器码90)***机器码的含义参看上面
(解释:ultraedit打开编辑exe文件时你看到90,等同于汇编语句nop)
call 调用子程序
je 或jz 若相等则跳(机器码74 或0F84)
jne或jnz 若不相等则跳(机器码75或0F85)
jmp 无条件跳(机器码EB)
jb 若小于则跳
ja 若大于则跳
jg 若大于则跳
jge 若大于等于则跳
jl 若小于则跳
jle 若小于等于则跳
pop 出栈
push 压栈
74=>75 74=>90 74=>EB
75=>74 75=>90 75=>EB
jnz->nop
75->90(相应的机器码修改)
jnz -> jmp
75 -> EB(相应的机器码修改)
jnz -> jz
75->74 (正常) 0F 85 -> 0F 84(特殊情况下,有时,相应的机器码修改)
一条(跳)就死,九筒(90)就胡 (对应上面的2.修改为nop)
一条(跳)就胡,一饼(EB)伺候 (对应上面的1.修改为jmp)妻死(74)便妻无(75)
爸死(84)便爸无(85)。

相关文档
最新文档