几种用OD脱壳方法
新手入门学习——脱壳破解练习第一期
新手入门学习——脱壳破解练习第一期新手入门学习——脱壳破解练习第一期拿到一个软件,先看看是加的什么壳。
用PEiD查得【Upack V0.37-V0.39 -> Dwing *】接着拿出破解第一要物OD进行脱壳(注意选好点的版本,由于Upack壳做了变形,有些版本的OD打开时会出错,最好是用英文版的)OD载入……我使用简单一点的ESP定律。
00401018 > BE B0114000 MOV ESI,脱壳破解.004011B00040101D AD LODS DWORD PTR DS:[ESI]0040101E 50 PUSH EAX0040101F FF76 34 PUSH DWORD PTR DS:[ESI+34]00401022 EB 7C JMP SHORT 脱壳破解.004010A0F8前进到【0040101F】,在寄存器窗口ESP处点右键,在数据窗口跟随【0012FFC0】如下图://数据窗口点右键,下硬件断点。
shift+F9运行0012FFC0 004011B8 脱壳破解.004011B80012FFC4 7C82F23B 返回到 kernel32.7C82F23B0012FFC8 00000000//来到OEP,通过观察可以发现,这是一个典型的VB入口。
这里记得要删除硬件断点!004011B8 68 24184000 PUSH 脱壳破解.00401824 //OEP004011BD E8 EEFFFFFF CALL 脱壳破解.004011B0004011C2 0000 ADD BYTE PTR DS:[EAX],AL004011C4 0000 ADD BYTE PTR DS:[EAX],AL 004011C6 0000 ADD BYTE PTR DS:[EAX],AL 004011C8 3000 XOR BYTE PTR DS:[EAX],AL记录新入口地址【11B8】接着打开LoadPE进行脱壳然后使用Import Fix 1.6 进行修复修复完成后即得到脱壳后的文件,用PeiD查询,果然是VB。
(完整版)常见几种脱壳方法
----------------<小A分>----------------一、概论壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳(强壳)两种"UPX" "ASPCAK" "TELOCK" "PELITE" "NSPACK(北斗)" ... "ARMADILLO" "ASPROTECT" "ACPROTECT" "EPE(王)" "SVKP" ...顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。
当然加密壳的保护能力要强得多!-----------<小A分割线>-------------二、工具的认识OllyDBG ring3 shell层级别的动态编译工具、PEid、ImportREC、LordPE、softIce ring0级别调试工具-------------<小A分割>-------------------三、常见手动脱壳方法预备知识1.PUSHAD (入栈/压栈)代表程序的入口点,2.POPAD (弹栈/出栈)代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以立刻脱壳。
------------<小A分割线>--------------------方法一:单步跟踪法1.用OD载入,点“不分析代码!”2.单步向下跟踪F8,实现向下的跳。
也就是说向上的跳不让其实现!(通过F4)3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选)4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入7.一般有很大的跳转(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN 的一般很快就会到程序的OEP。
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破解常用方法[复制链接]一、概论壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳两种顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。
当然加密壳的保护能力要强得多!二、常见脱壳方法预备知识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断点。
使用OllyDbg快速脱壳
破解教程★★使用OllyDbg快速脱壳★★使用OllyDbg快速脱壳dOSKEY lEE目标:采用ASPACK、UPX加壳的NOTEPAD.EXE工具:OllyDbg 1.09英文版、DUMP插件、PEditor系统:Win98SE关键词:脱壳、OllyDbg、OD、DUMP、PUSHAD、POPAD预备知识大多数壳都有一个共同的特点。
在壳准备开始解压时都要执行PUSHAD,当壳解压完时都要调用POPAD。
到底PUSHAD和POPAD是什么干什么用的呢?其实PUSHAD是用来将所有普通寄存器顺序进栈的指令,POPAD是所有普通寄存器顺序出栈指令。
POPAD的出栈顺序和PUSHAD相反。
壳为了保护寄存器,便在解压前将所有寄存器进栈保护起来,当解压完成后又将寄存器出栈,恢复其原貌,并将IP设置为原程序的OEP。
这样我们就可以通过这个特点快速脱掉多种软件的壳。
ASPACK篇先用ASPACK将NOTEPAD.EXE加壳。
用OllyDbg(以下简称OD)载入。
看见光标停在壳的入口处。
0040D001 > 60 PUSHAD ;壳的入口。
准备开始解压,保护寄存器0040D002 E8 03000000 CALL NOTEPAD.0040D00A……我们不管它,直接向下翻页找POPAD指令。
在40D3AF处找到POPAD……0040D3AF 61 POPAD ;解压完成,恢复寄存器0040D3B0 75 08 JNZ SHORT NOTEPAD.0040D3BA0040D3B2 B8 01000000 MOV EAX, 10040D3B7 C2 0C00 RETN 0C0040D3BA 68 CC104000 PUSH NOTEPAD.004010CC ;返回到原程序OEP处0040D3BF C3 RETN……选定40D3AF这一行,F4运行到此处。
在这里说明壳已经完成解压工作。
并且返回到原程序的入口处。
几种用OD脱壳方法
几种用OD脱壳方法OD是反编译软件的一种,可以将可执行文件转换为可读的源代码。
脱壳是指从已经加密或保护的软件中提取出原始的未加密或未保护的代码。
下面是几种常见的OD脱壳方法:1.静态分析法:静态分析是指对二进制文件进行分析,了解其结构、函数调用和控制流程等信息。
通过对逆向工程的分析,可以分析出加密算法和解密函数的位置。
使用静态分析法脱壳的主要步骤如下:-打开OD软件,将加密的可执行文件加载到OD中。
- 使用各种OD工具,如IDA Pro,OllyDbg等,显示可执行文件的汇编代码。
-通过分析代码和调试程序,找到加密算法和解密函数的位置。
-根据找到的位置,修改程序的执行流程,跳过解密函数,使得程序直接执行解密后的代码。
2.动态调试法:动态调试是指在运行时对程序进行调试和分析。
使用动态调试法脱壳的主要步骤如下:-打开OD软件,将加密的可执行文件加载到OD中。
- 使用动态调试工具,如OllyDbg或GDB等,在程序执行期间跟踪和记录函数调用和内存访问。
-通过分析函数调用和内存访问,找到加密算法和解密函数的位置。
-在找到的位置上下断点,执行程序并使用OD工具查看解密后的代码。
3.内存镜像法:内存镜像法是指通过将程序加载到内存中,并对内存进行镜像和分析来脱壳。
使用内存镜像法脱壳的主要步骤如下:-运行加密的可执行文件。
- 使用内存镜像工具,如DumpBin或WinDBG等,将程序的内存镜像保存到磁盘上。
-使用OD软件加载内存镜像文件。
-通过分析内存镜像文件,找到加密算法和解密函数的位置。
-修改程序的执行流程,跳过解密函数,使得程序直接执行解密后的代码。
这些方法都可以用于将加密的可执行文件转换为可读的源代码,从而进行进一步的分析和修改。
脱壳过程需要进行深入的逆向工程和对程序的理解,因此需要具备一定的技术和知识。
此外,需要注意的是,脱壳过程可能涉及到破解和侵犯版权的行为,应遵守法律规定,并仅限于安全研究和个人学习的目的使用。
几种用OD脱壳方法
方法四:一步到达OEP
1.开始按Ctrl+F,输入:popad(只适合少数壳,包括UPX,ASPACK壳),然后按下F2,F9运行到此处
2.来到大跳转处,点下F8,到达OEP!
方法五:最后一次异常法
1:用OD打开软件
2:点击选项——调试选项——异常,把里面的√全部去掉!CTRL+F2重载下程序
6:按F2下断点!然后按SHIFT+F9来到断点处! 7:去掉断点,按F8慢慢向下源自! 8:到达程序的OEP!
方法六:模拟跟踪法
1:先试运行,跟踪一下程序,看有没有SEH暗桩之类
2:ALT+M打开内存镜像,找到(包含=SFX,imports,relocations)
内存镜像,项目 30
Btw:这种方法不要滥用得好,锻炼能力为妙。
以上方法总结网上的一些前辈的经验,对普通壳足够了。
至于对Themida ,Acprotect,Asprotect等各版本强壳,有防调试(推荐用硬件断点),就算找到OEP,也要处理stolen code,自校验,重整输入表等等工作,,难度蛮大的,要不断深入自学
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!
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歌词。
用OD手脱未知壳 - 顺风猪病通3.0脱壳 + 破解
用OD手脱未知壳- "顺风"猪病通3.0脱壳+ 破解【脱壳作者】刹那恍惚【使用工具】OllyDBG 汉化第二版,LordPE Deluxe 增强版,ImportREC v1.6F,PEiD v0.94,FI 4.01a【脱壳平台】WinXP SP2【软件名称】猪病通3.0【软件大小】22.0 MB【保护选项】作者自己保护【加壳方式】未知壳【软件简介】《猪病通XP版》计算机软件是由农业部饲料工业中心、北京广胜丰联信息技术有限公司的专家合作研究的新一代智能型兽医临床诊断软件,系统采用了现代计量医学的研究成果,应用概率统计的方法,如最大似然法、逐步判别法和聚类分析法等,其主要诊断原理是通过对兽医临床诊断的大量样本、专家经验和书本知识对疾病信息和症状信息进行分值计量定义,找出症状与疾病之间的统计规律,确定出经验公式,然后根据对这些症状信息的统计处理而得出诊断结果。
【下载地址】/products/download/swine.rar【脱壳声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)--------------------------------------------------------------------------------【脱壳内容】一、准备工作老规矩设置Ollydbg忽略所有异常,用IsDebug 1.4插件去掉Ollydbg的调试器标志。
1 侦壳:用PEiD查壳Borland Delphi 4.0 - 5.0 用FI 4.01a 查显示为Borland Delphi 5 !! (*PE)二,去效验+ 寻找OEP + DUMPOD 载入后有入口警告0082420C > 55 &nb sp;PUSH EBP ; 程序入口0082420D 8BEC MO V EBP,ESP0082420F B9 0E000000 MOV ECX,0E00824214 6A 00 PUSH 000824216 6A 00 PUSH 000819885 66:8B4C24 0E MOV CX,WORD PTR SS:[ ESP+E] ; 返回到这里0081988A 66:8B5424 0A MOV DX,WORD PTR SS:[ ESP+A]0081988F 66:8B4424 08 MOV AX,WORD PTR SS:[ ESP+8]00819894 E8 6BFFFFFF CALL flDiagS.00819804 00819899 DD5C24 18 FSTP QWORD PTR SS:[ESP+18]0081989D 9B WAIT0081989E 66:8B4424 16 MOV AX,WORD PTR SS:[ ESP+16]008198A3 50 PUSH EAX008198A4 66:8B4C24 18 MOV CX,WORD PTR SS:[ ESP+18]008198A9 66:8B5424 16 MOV DX,WORD PTR SS:[ ESP+16]008198AE 66:8B4424 14 MOV AX,WORD PTR SS:[ ESP+14]008198B3 E8 D0FDFFFF CALL flDiagS.00819688 008198B8 DC4424 18 FADD QWORD  ;PTR SS:[ESP+18]008198BC DD1C24 FSTP Q WORD PTR SS:[ESP]008198BF 9B WAIT008198C0 DD0424 FLD QW ORD PTR SS:[ESP]008198C3 83C4 20 ADD ESP, 20008198C6 C3 RETN ; 返回到008245F4F8 单步,走到008198C6 处时返回到008245F4008245EF E8 8452FFFF CALL flDiagS.00819878 & nbsp; ; 获取本地时间。
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歌词。
脱壳找OEP7种基本方法
脱壳找OEP7种基本方法七种找OEP的方法OD手动脱壳的7种法则方法一:单步跟踪法1.用OD载入,点“不分析代码!”2.单步向下跟踪F8,实现向下的跳。
也就是说向上的跳不让其实现!(通过F4)3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选)4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入7.一般有很大的跳转(大跨段),比如jmp XXXXXX 或者JE XXXXXX 或者有RETN 的一般很快就会到程序的OEP。
PS:在有些壳无法向下跟踪的时候,我们可以在附近找到没有实现的大跳转,右键-->“跟随”,然后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!方法四:一步到达OEP1.开始按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!方法六:模拟跟踪法1:先试运行,跟踪一下程序,看有没有SEH暗桩之类2:ALT+M打开内存镜像,找到(包含=SFX,imports,relocations)内存镜像,项目30地址=0054B000大小=00002000 (8192.)Owner=check 00400000区段=.aspack包含=SFX,imports,relocations类型=Imag 01001002访问=R初始访问=RWE3:地址为0054B000,如是我们在命令行输入tc eip<0054B000,回车,正在跟踪ing。
几种用OD脱壳方法
几种用OD脱壳方法OD(Object Dump)即对象转储,是指将内存中的对象转化为文件或其他形式的过程。
脱壳是指从被加壳/保护的程序中提取可执行代码的过程。
以下是几种常见的用OD脱壳方法:1.静态脱壳:静态脱壳是指在未运行程序的情况下进行脱壳。
这种方法适用于一些简单的壳或保护机制。
静态脱壳一般包括以下步骤:-分析被加壳程序的文件结构,确定壳的类型和解密算法。
-定位加密/保护的代码段和目标程序的入口点。
-提取加密的代码段并进行解密。
-删除或替换壳代码,将解密的代码插入到目标程序的入口点。
2.动态脱壳:动态脱壳是指在运行被加壳程序的过程中进行脱壳。
这种方法更加复杂,但可以应对一些更强大的保护机制。
动态脱壳的步骤如下:- 使用调试器(如OllyDbg、IDA Pro等)加载被加壳程序,并设置断点。
-运行程序并观察其行为。
一般可以通过跟踪内存或执行流来确定代码解密、动态链接等操作。
-当程序执行到解密/动态链接等关键点时,暂停程序并检查相关内存中的加密数据。
-通过观察内存数据的变化和算法的操作,找出解密算法、关键数据等。
-使用调试器的功能(如修改内存、暂停/恢复执行等)来修改和恢复解密的数据,最终达到脱壳的目的。
3.虚拟机检测:有时候,加壳程序会在运行时检测是否在虚拟机中执行。
如果发现运行在虚拟机中,则不会执行解密操作。
因此,一种常见的脱壳方法是绕过虚拟机检测。
这可以通过修改虚拟机检测函数的返回值来实现。
通过调试器可以定位到虚拟机检测的相关代码,并修改相应的变量或寄存器值。
4.内存脱壳:部分加壳程序并不是一次性将整个程序都解密并运行,而是采用内存加载的方式,将加密的代码段逐步解密到内存中执行。
这种情况下,可以使用内存脱壳来获取完整的可执行文件。
内存脱壳的步骤如下:-使用调试器加载被加壳程序。
-执行程序,观察其行为并找到解密/加载代码的操作。
-在解密/加载代码执行前暂停程序,此时可使用调试器的内存修改功能,在内存中找到加密的代码段,并修改为解密后的代码。
手动脱壳基础知识-电脑资料
手动脱壳基础知识-电脑资料单步跟踪法:1.OD载入,不分析代码,。
2.近CALL—F7,远CALL—F8,实现向下的跳转。
3.有回跳处,下一句代码处—F4 (右键—代码断点运行到所选)4.大的跳转(大跨段,JMP***或JE***或RETN),很快就会到OEP内存镜像法:1.OD载入软件2.点选项—调试选项—忽略全部—CTRL+F2重载3.ALT+N打开内存镜像,找程序第一个.rsrc—F2下断—SHIFT+F9运行到断点,再打开找到程序第一个.rsrc上面的.code处(就是00401000处),F2下断—SHIFT+F9或无异常按F9,到OEP 模拟跟踪法:无暗桩情况下使用1.F9试运行,跑起来就无SEH暗桩之类的,否则就有.2.ALT+N打开内存镜像,找到包含“=sfx,imports reloco tions”字符3.地址=*** 命令行输入:tceip<***,回车.ESP定律法:1.F8,观察OD右上角寄存器中ESP有没有实现(红色)2.命令行下 DD ******(当前代码ESP值),回车3.DD就选中下端地址,断点—硬件访问—DWORD断点,F9运行,到跳转处按F8 到DEP最后一次异常法:1.OD打开—点选项—调试选项—去掉所有异常—CTRL+F2重载.2.SHIFT+F9.只到程序运行,记下次数M3.CTRL+F2重载—按SHIFT+F9(次数为M-1次)4.按CTRL+G—输入OE右下角的SE句柄前的地址.5.F2下断—SHIFT+F9到断点处.6.去断按F8,到OEP.一步到位OEP法:只适合少数壳,如UPX,ASPACK1.CTRL+F—输入:POPAD.回车查找—F2下断—F9运行到此处.2.来到大跳转处,点F8到OEP.SFX法:1.设置OD,忽略所有异常.2.切换到SFX选项卡,选择“字节模式跟踪实际入口”,确定.3.重载—“否”压缩代码,到OEP.。
破解之多种方法脱ASP壳
破解之多种方法脱ASP壳工具:PEID-经典查壳工具OD -动态调试工具理论知识:所谓壳即软件作者为防止软件被调试破解所用的一种的保护方法,分为压缩壳和加密壳,就安全性和破解 复杂性来说,加密壳要比压缩壳厉害的多。
OD界面:左上角为CPU窗口,分别为地址,机器码,汇编代码,注释右上角为寄存器窗口左下角为内存窗口右下角为当前堆栈情况和注释经常使用的快捷键:F2:在需要的地方下断点(INT3型断点) F3:选择打开程序F4:运行到所选择的那一行F7:单步进入F8:单步跟踪F9:执行程序(运行程序)USHAD (压栈) 代表程序的入口点,OPAD (出栈) 代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真 正的OEP,就可以立刻脱壳。
二。
开始破解1。
单步跟踪法破解(最基本)载入PEID,显示:ASPack 2.12 -> Alexey Solodovnikov显然是ASPpack2.12版本的壳,今天我们的目标就是它了OD载入程序停在0040D001 > 60 pushad0040D002 E8 03000000 call NotePad_.0040D00A0040D007 - E9 EB045D45 jmp 459DD4F70040D00C 55 push ebp0040D00D C3 retn0040D00E E8 01000000 call NotePad_.0040D0140040D013 EB 5D jmp short NotePad_.0040D072pushad:程序入口点call :为调用即调用NotePad_.0040D00A这里用先用F8步进,F7进入call,继续F8步进,会遇到向下的箭头0040D008 /EB 04 jmp short NotePad_.0040D00E 0040D00A |5D pop ebp0040D00B |45 inc ebp0040D00C |55 push ebp0040D00D |C3 retn0040D00E \E8 01000000 call NotePad_.0040D014不用管它,我们破解断点只断向上的跳转到这里注意一下0040D008 /EB 04 jmp short NotePad_.0040D00E 0040D00A |5D pop ebp0040D00B |45 inc ebp0040D00C |55 push ebp0040D00D |C3 retn0040D00E \E8 01000000 call NotePad_.0040D0140040D013 EB 5D jmp short NotePad_.0040D0720040D015 BB EDFFFFFF mov ebx,-13注意这个call,要用F7进入,不然就要跑飞(程序运行起来) 继续F8步进,直到0040D12F /74 2E je short NotePad_.0040D15F0040D131 |78 2C js short NotePad_.0040D15F0040D133 |AC lods byte ptr ds:[esi]0040D134 |3C E8 cmp al,0E80040D136 |74 0A je short NotePad_.0040D1420040D138 |EB 00 jmp short NotePad_.0040D13A 0040D13A |3C E9 cmp al,0E90040D13C |74 04 je short NotePad_.0040D1420040D13E |43 inc ebx0040D13F |49 dec ecx0040D140 ^|EB EB jmp short NotePad_.0040D12D0040D142 |8B06 mov eax,dword ptr ds:[esi]向上的跳转,在向上箭头的下一行下断点,具体这么做:0040D142 8B06 mov eax,dword ptr ds:[esi]在这一行上点右键——断点——运行到选定位置F8继续步进以下还会遇到几处向上的跳转,仿照上述设置断点即可一直调试到这里0040D3A9 8985 A8030000 mov dword ptr ss:[ebp+3A8],eax 0040D3AF 61 popad0040D3B0 75 08 jnz short NotePad_.0040D3BA0040D3B2 B8 01000000 mov eax,10040D3B7 C2 0C00 retn 0C0040D3BA 68 CC104000 push NotePad_.004010CC0040D3BF C3 retn0040D3C0 8B85 26040000 mov eax,dword ptr ss:[ebp+426]注意:0040D3BA 68 CC104000 push NotePad_.004010CC程序的OEP原因:一般有很大的跳转(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN的一般很快就会到程序的OEP。
od破解软件教程破解教程
od破解软件教程破解教程希望大家互相学习学习,发现现在大家对于破解都不是很了解,很多人想学破解,但是去无从入手,所以在BCG小组大家的商议下,决定为大家写一个破解入门的教程,希望能大家了解破解有一些帮助,希望能有更多的人踏入破解的大门。
1.初级,修改程序,用ultraedit等工具修改exe文件,称暴力破解,简称爆破中级,追出软件的注册码高级,写出注册机2.常用破解工具(1)侦壳工具:PEiD(2)动静结合的OllyDbg引领破解工具的新潮流。
一,现在我们首先来学习下破解的初步,爆破~1.侦壳要破解一个软件首先要做的就是侦壳,要侦壳就要对壳有一定的了解,众所周知,软件作者用编程语言编写好软件后,是将它编译成扩展名为EXE的可执行文件。
编译为EXE 的目的有两点:(1)有一些版权信息需要保护起来,不能让别人随意改动,如作者的姓名、软件名称等;(2)需要给程序“减肥”,从而方便存储、使用和网上传输。
为了编译,会用到一些软件。
它们能将可执行文件压缩和对信息加密(图1),实现上述两个功能,这些软件称为加壳软件。
为软件加上的东东就称为“壳”。
加壳软件不同于一般的WinZIP、WinRAR等打包类压缩软件。
加壳软件是压缩可执行文件的,压缩后的文件可以直接运行。
最常见的加壳软件有3个:ASPACK 、UPX、PEcompact。
毕竟它们是主流,据统计,用它们加壳的软件约占市面所有软件的90%!其他不常用的加壳软件有ASPROTECT、PETITE 、NEOLITE、TELOCK等。
软件最常见的编程语言是Delphi,Visual Basic(简称VB),Visual C++(简称VC)。
了解些编程的知识,会让破解更加轻车熟路。
下面来说侦壳,现在比较常用侦壳软件就PeiD,他具有华丽的图形界面。
外壳整合(添加到鼠标右键)功能令使用更加方便,支持拖放操作。
配置时,务请将“扩展到鼠标右键”打上对号。
其使用方法是,鼠标点住,按鼠标右键,选"使用PEid扫描"即可;“壳”的信息就显示在底部。
新手必须知道的脱壳及修复工具解读
新手必须知道的脱壳及修复工具很多软件都加了壳,除了易语言软件很少加壳。
对于我们这些新手也叫菜鸟级的,既然想学破解,脱壳是第一步,我也在学习啦,第一步就是个人电脑里面必须装的必备脱壳及修复工具,现在发一个工具介绍,我想对新手应该有用,大家可以复制工具名字,去网上下载:脱壳工具以及脱壳一般流程查壳(PEID、FI、PE-SCAN)--->寻找OEP(OD)--->脱壳/Dump(LordPE、PeDumper、OD自带的脱壳插件、PETools)--->修复(Import REConstructor)【工具介绍】1、查壳PEID--功能强大的侦壳工具,自带脱壳插件(但是,效果不怎么样)工作原理:核心是userdb.txt(大家看看就完全明白了)[通过壳的入口特征码进行辨认]使用方法:可以拖放、也可以把PEID添加到右键菜单里面去FI--功能强大的侦壳工具,DOS界面。
使用方法:可以拖放、可以使用DOS命令行2、寻找OEPollydbg的四个区域左上角是cpu窗口,分别是地址,机器码,汇编代码,注释;注释添加方便,而且还能即时显示函数的调用结果,返回值.右上角是寄存器窗口,但不仅仅反映寄存器的状况,还有好多东东;双击即可改变Eflag的值,对于寄存器,指令执行后发生改变的寄存器会用红色突出显示.cpu窗口下面还有一个小窗口,显示当前操作改变的寄存器状态.左下角是内存窗口.可以ascii或者unicode两种方式显示内存信息.右下角的是当前堆栈情况,还有注释啊.几个经常使用的快捷键F2:在需要的地方下断点(INT3型断点)F3:选择打开程序F4:运行到所选择的那一行F7:单步进入F8:单步跟踪F9:执行程序(运行程序)其中要特别讲一下3个F9的区别和作用:根据Ollydbg.hlp的中文翻译Shift+F9 - 与F9相同,但是如果被调试程序发生异常而中止,调试器会首先尝试执行被调试程序指定的异常处理(请参考忽略Kernel32中的内存非法访问)。
病毒加壳和脱壳技术详解
( ) P oet a ak 次 之 , 外 的 2 AS rtc+ s c : p 国 软 件 多 用 它 加 壳 ,脱 壳 时 需 要 用 到 s T c I E uM P 0F I E+ c D ,需 要 一 定 的 专 业 知识 , 最新版现在暂 时没有办法。 但 () x 3 Up :可 以 用 UP 本 身 来 脱 X 壳 , 要 注 意 版 本 是 否 一 致 , 一 参 但 用 D 数。 ( )_ dl 可 以 用 S T C 4 A ma i : r l OF I E+ IE C DUMP脱 壳 , 比较 烦 。 () p :国 内 比 较 好 的 加 密软 5 Db e 件 , 版 本 暂 时 不 能 脱 , 可 以破 解 。 新 但 ( ) o i : 以 用 自己 来 脱 壳 。 6 Ne Lt 可 e
( PrV11一 . 有 效 ) Ra (只 对 AS . V12 , d
时 , 一这 段 代 码 先 于 原 始 程 序 运 行 , 壳 他 把 压 缩 、加 密 后 的 代 码 还 原 成 原 始
程 序 代 码 ,然 后 再 把 执 行 权 交 还 给 原 始 代 码 。 软 件 的 壳 分 为 加 密 壳 、 缩 压
安 全 咖 啡 屋
n 翻 嘲 嘲 踊 硼 嘲 啦 翘 礤 鼹 计 鼻 L 向 蓍 睁 训 蒜f 生 『 酒
/
瘸霉赫蠢 稳麟藏技 详 解
1什 么 是 壳 : 数学运算 , 可执行程 序文件或动态链 将 文件 分析 工具 ( 测 壳 的 类 型 ) 侦 :
计 算 机 软 件 里 有 一 段 专 门 负 责 保 护 软 件 不 被 非 法 修 改 或 反 编 译 的 程 序 。 们 一 般 都 是 先 于 程 序 运 行 。 到 它 拿 控 制 权 ,然 后 完 成 它 们 保 护 软 件 的 任
(完整版)常见几种脱壳方法(可编辑修改word版)
----------------<小 A 分>----------------一、概论壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳(强壳)两种"UPX" "ASPCAK" "TELOCK" "PELITE" "NSPACK(北斗)" ... "ARMADILLO" "ASPROTECT" "ACPROTECT" "EPE(王)" "SVKP" ...顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。
当然加密壳的保护能力要强得多!-----------<小 A 分割线>-------------二、工具的认识OllyDBG ring3 shell 层级别的动态编译工具、PEid、ImportREC、LordPE、softIce ring0 级别调试工具-------------<小 A 分割>-------------------三、常见手动脱壳方法预备知识1.P USHAD (入栈/压栈)代表程序的入口点,2.P OPAD (弹栈/出栈)代表程序的出口点,与 PUSHAD 想对应,一般找到这个OEP 就在附近3.O EP:程序的入口点,软件加壳就是隐藏了 OEP(或者用了假的 OEP/FOEP),只要我们找到程序真正的 OEP,就可以立刻脱壳。
------------<小 A 分割线>--------------------方法一:单步跟踪法1.用OD 载入,点“不分析代码!”2.单步向下跟踪 F8,实现向下的跳。
也就是说向上的跳不让其实现!(通过F4)3.遇到程序往回跳的(包括循环),我们在下一句代码处按 F4(或者右健单击代码,选择断点——>运行到所选)4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!5.如果刚载入程序,在附近就有一个 CALL 的,我们就 F7 跟进去,不然程序很容易跑飞,这样很快就能到程序的 OEP6.在跟踪的时候,如果运行到某个 CALL 程序就运行的,就在这个 CALL 中F7 进入7.一般有很大的跳转(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN 的一般很快就会到程序的 OEP。
用OD脱DEDE的Armadillo1.xx2.xx壳-电脑资料
用OD脱DEDE的Armadillo1.xx2.xx壳-电脑资料前言:前段时间破一个Delphi程序,用到DeDe,但提示输入密码,我哪有?SHIT!只好拿它来开刀,。
开工!正好有关Armadillo的文章较少,来一篇凑个热闹,不当之处请指正。
第一步、跳过调试器检查:先IsDebuggerPresent插件隐藏OD,然后载入DEDE,忽略所有异常。
F9运行,程序提示有Debugger运行,点击OK后退出。
看看在什么地方可以跳过NAG,故点击前BP DestroyWindow,然后点击OK,程序中断,CTRL+F9返回到程序003E3247 CALL DWORD PTR DS:[3E64A8] ; USER32.DestroyWindow003E324D MOV EAX,ESI --->在这继续按Ctrl+F9返回直到如下代码:003E088A JE SHORT 003E08CD --->可以跳过NAG!...........................003E08B5 ADD ESP,28003E08B8 PUSH EAX003E08B9 CALL 003E328D --->CALL NAG003E08BE MOV EAX,DWORD PTR DS:[3F328C] --->返回到这,向上看!003E08C3 ADD ESP,0C003E08C6 XOR DWORD PTR DS:[EAX+74],3366003E08CD JMP SHORT 003E08D2注意在003E088A处可以跳过。
重来一遍,下G 3E088A,提示无效地址。
原来这地址是程序运行动态后生成的。
只好让程序先运行一会在中断下来下断点。
因为Armadillo壳有页保护,故BPVirtualProtect,F9运行,中断后下G 3E088A,程序再次中断,改变标志位令其强行跳转,然后Ctrl+F9返回,并将EAX值改为0,程序将往下运行,出现过期提示,要求输入注册码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
方法四:一步到达OEP
1.开始按Ctrl+F,输入:popad(只适合少数壳,包括UPX,ASPACK壳),然后按下F2,F9运行到此处
2.来到大跳转处,点下F8,到达OEP!
方法五:最后一次异常法
1:用OD打开软件
2:点击选项——调试选项——异常,把里面的√全部去掉!CTRL+F2重载下程序
Btw:在有些壳无法向下跟踪的时候,我们可以在附近找到没有实现的大跳转,右键-->“跟随”,然后F2下断,Shift+F9运行停在“跟随”的位置,再取消断点,继续F8单步跟踪。一般情况下可以轻松到达OEP!
方法二:ESP定律法
ESP定理脱壳(ESP在OD的寄存器中,我们只要在命令行下ESP的硬件访问断点,就会一下来到程序的OEP了!)
Btw:大家在使用这个方法的时候,要理解他是要在怎么样的情况下才可以使用
方法七:“SFX”法
1:设置OD,忽略所有异常,也就是说异常选项卡里面都打上勾
2:切换到SFX选项卡,选择“字节模式跟踪实际入口(速度非常慢)”,确定。
3:重载程序(如果跳出是否“压缩代码?”选择“否”,OD直接到达OEP)
3:一开始程序就是一个跳转,在这里我们按SHIFT+F9,直到程序运行,记下从开始按SHIFT+F9到程序运行的次数m!
4:CTRL+F2重载程序,按SHIFT+F9(这次按的次数为程序运行的次数m-1次)
5:在OD的右下角我们看见有一个"SE 句柄",这时我们按CTRL+G,输入SE 句柄前的地址!
地址=0054B000
大小=00002000 (8192.)
Owner=check 00400000
区段=.aspack
包含=SFX,imports,relocations
类型=Imag 01001002
访问=R
初始访问=RWE
3:地址为0054B000,如是我们在命令行输入tc eip<0054B000,回车,正在跟踪ing。。
方法一:单步跟踪法
1.用OD载入,点“不分析代码!”
2.单步向下跟踪F8,实现向下的跳。也就是说向上的跳不让其实现!(通过F4)
3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选)
4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!
基础:汇编!-_-,动态调试和静态分析工具的使用
1.开始就点F8,注意观察OD右上角的寄存器中ESP有没突现(变成红色)。(这只是一般情况下,更确切的说我们选择的ESP值是关键句之后的第一个ESP值)
2.在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者是hr XXXXXXXX),按回车!
3.选中下断的地址,断点--->硬件访--->WORD断点。
6:按F2下断点!然后按SHIFT+F9来到断点处!
7:去掉断点,按F8慢慢向下走!
8:到达程序的OEP!
方法六:模拟跟踪法
1:先试运行,跟踪一下程序,看有没有SEH暗桩之类
2:ALT+M打开内存镜像,找到(包含=SFX,imports,relocations)
内存镜像,项目 30
(4).壳分压缩壳和加密壳,我们主要的障碍是加密壳。
查壳(PEID、FI、PE-SCAN)--->寻找OEP(OD)--->脱壳/Dump(LordPE、PeDumper、OD自带的脱壳插件、PETools)--->修复(Import REConst
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!
几种用OD脱壳方法
!预备知识:
(1).PUSHAD (压栈) 代表程序的入口点,
(2).POPAD (出栈) 代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近
(3).OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以立刻脱壳。一.脱壳流程:
Btw:这种方法不要滥用得好,锻炼能力为妙。
以上方法总结网上的一些前辈的经验,对普通壳足够了。
至于对Themida ,Acprotect,Asprotect等各版本强壳,有防调试(推荐用硬件断点),就算找到OEP,也要处理stolen code,自校验,重整输入表等等工作,,难度蛮大的,要不断深入自学
5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP
6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入
7.一般有很大的跳转(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN的一般很快就会到程序的OEP。