反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12

2014年10月25日 技术资料 10224 views 0

背景
破解的第一步是判断所要破解的程序是否加壳了,如果程序加壳了,需要将壳脱掉再来破解,所以脱壳是破解的第一步

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

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


实战1 
查壳用PEID等查壳工具查看所需要破解的程序是否加壳了,加的什么壳。PEID的工作原理大家看看PEID目录下的userdb.txt文件就知道了,PEID通过壳的入口特征码进行辨认程序是加了什么壳
用PEID查壳的结果如下图,可以看出程序加了ASPack2.12的壳
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第1张

2 寻找OEP(1)用OD载入该程序
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第2张

(2)使用F8单步补过,在靠近入口处的第一个call(call 0040D00A)使用F7单步步入,  在call子程序中使用F8单步补过,没有发现有用的信息,在靠近入口的第二个call(call   0040D014使用F7单步步入,否则程序会跑飞,下图是刚进入第二个call处的截图
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第3张

(2)根据"单步跟踪法"中的原则,一步一步调试,遇到向上跳转,则将鼠标点到该跳转的下一行,然后F4运行到这一行(如果让程序向上跳转,则可能程序往反方向跳转,无休无止,也就找不到OEP),向下跳转则不用处理,需要注意的是绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现,在下面的注释窗口会有该提示,下图就是一个没有实现的跳转
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第4张

(2)按照步骤(3)中的方式执行很快就会看到下图现象,出现了popad这条指令,然后  push 004010CC,将004010CC这个地址入栈,后面紧跟着一个retn,程序就会返回到  004010CC这个地址继续执行程序,004010CC与当前地址0040D3BF之间有个很大的跳转,由此可以判断马上将到达程序的OEP,
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第5张

(2)在retn上在按下F8单步步过即可到达OEP(OEP地址004010CC)
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第6张

3 脱壳(Dump)
(1)在OEP(OEP地址004010CC)处使用OD插件脱壳,在004010CC上点击鼠标右键,  选择该菜单下的Dump debugged process,会弹出如下对话框,从下图最底Rebuild   Import选项下可以看出该插件提供了两种脱壳方式
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第7张

(2)分别用Method1和Method2脱壳,点击Dump按钮然后选择文件的保存位置即可脱壳
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第8张

(3)当然也可以用LordPE来脱壳,选中要脱壳的进程notepad.exe,因为使用OD加载的时候已经启动该进程
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第9张

(4)在该进程上右键,选择该菜单下的修正镜像大小,结果如下图
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第10张

(5)在该进程上右键,选择该菜单下的完整转存(也有的翻译是完全脱壳),会弹出文件保  存位置对话框,填好文件名称后保存即可,成功后会弹出如下对话框
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第11张

(6)再次用PEID检测unpack1.exe、unpack2.exe、unpack3.exe,会发现程序已经是无壳的
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第12张

(7)分别打开已经脱壳完成的unpack1.exe、unpack2.exe、unpack3.exe,会发现unpack3.exe运行后出现如下错误,则在该种情况下需要修复资源
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第13张

4 修复
(1)使用到的修复工具是ImportFix,打开ImportFix,打开notepad.exe这个进程,因为用OD载入加壳程序notepad.exe后,会产生notepad.exe这个进程(此时需要OD中将程序调试运行到OEP处,即004010CC处,否则在下面的自动查找IAT会失败)
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第14张

(2)将OEP那一栏修改成刚才在OD中找到的OEP地址000010CC,然后点击自动查找  IAT,则RVA和大小这一栏中数据会改变

点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第15张

点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第16张

点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第17张
(3)点击确定后,点击获取输入表按钮,结果如下图,其中找到的输入表函数里面的函数  是程序运行需要的一些系统API
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第18张

(4)点击显示无效函数后,发现没有,在点击修复转存文件按钮,选择要修复的unpack3.exe  文件
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第19张

(5)完成后会在记录这一列表框中显示结果,修复后的文件保存名字为unpack3_.exe
点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第20张
(6)打开unpack3_.exe,发现程序能正常运行,则修复成功

点击查看原图 反汇编破解入门4,实战OllyDBG 单步跟踪法 脱壳,ASPack2.12 第21张

👍好活当赏🧧