文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页精文荟萃破解文章 → 新版aspr脱壳方法(完全版)

新版aspr脱壳方法(完全版)

时间:2004/10/15 0:58:00来源:本站整理作者:蓝点我要评论(0)

 


新版ASPR的加壳方法有了一些变化,用工具是脱不了了,所以写了这个,给大家一个简单的解决方案.  
用OD载入,BP IsDebuggerPresent,F9,停了下来:  
77E52740 >  64:A1 18000000  MOV    EAX, DWORD PTR FS:[18]  
77E52746    8B40 30        MOV    EAX, DWORD PTR DS:[EAX+30]  
77E52749    0FB640 02      MOVZX  EAX, BYTE PTR DS:[EAX+2]  
77E5274D    C3              RETN  

F8,到RETN之前这一行,看看[EAX+2],我是7FFDF002=01,  
重新载入,把7FFDF002值改为0(这样可跳过ASPR对程序级调试的检查),F9,这时有异常会停下来,这时就用SHIFT+F9过,大约30次左右,你可看到这样的代码  
00C23D5F    3100            XOR    DWORD PTR DS:[EAX], EAX  
00C23D61    64:8F05 0000000>POP    DWORD PTR FS:[0]  
00C23D68    58              POP    EAX  
00C23D69    833D BC7EC200 0>CMP    DWORD PTR DS:[C27EBC], 0  
00C23D70    74 14          JE      SHORT 00C23D86  
00C23D72    6A 0C          PUSH    0C  
00C23D74    B9 BC7EC200    MOV    ECX, 0C27EBC  
00C23D79    8D45 F8        LEA    EAX, DWORD PTR SS:[EBP-8]  
00C23D7C    BA 04000000    MOV    EDX, 4  
00C23D81    E8 8ED2FFFF    CALL    00C21014  
00C23D86    FF75 FC        PUSH    DWORD PTR SS:[EBP-4]  
00C23D89    FF75 F8        PUSH    DWORD PTR SS:[EBP-8]  
00C23D8C    8B45 F4        MOV    EAX, DWORD PTR SS:[EBP-C]  
00C23D8F    8338 00        CMP    DWORD PTR DS:[EAX], 0  
00C23D92    74 02          JE      SHORT 00C23D96  
00C23D94    FF30            PUSH    DWORD PTR DS:[EAX]  
00C23D96    FF75 F0        PUSH    DWORD PTR SS:[EBP-10]  
00C23D99    FF75 EC        PUSH    DWORD PTR SS:[EBP-14]  
00C23D9C    C3              RETN  
这是典型的ASPR的最后一个异常。(两个JE加个RETN),这时不要SHIFT+F9了,不然程序会运行的。要用SHIFT+F7进入。这时会停在系统空间。用ALT+M打开MEMORY MAP,找到SYSTEM CLEAN所在的位置,第一个SECTION如下.  
Address    size          section      contains  
00401000  00161000                    code  
在上面这个地方“右键—>set memory breakpoint on access"下个内存断点.然后F9运行,呵,你可发现,我们已经从壳的迷宫走出来了,(这个方法,再也不用象以前那样小心翼翼的F8F7了.)程序停在这:  
00407278  - FF25 2CF35600  JMP    DWORD PTR DS:[56F32C]  
0040727E    8BC0            MOV    EAX, EAX  
00407280  - FF25 28F35600  JMP    DWORD PTR DS:[56F328]  
00407286    8BC0            MOV    EAX, EAX  
00407288  - FF25 24F35600  JMP    DWORD PTR DS:[56F324]  
0040728E    8BC0            MOV    EAX, EAX  
00407290  - FF25 20F35600  JMP    DWORD PTR DS:[56F320]  
00407296    8BC0            MOV    EAX, EAX  
00407298    50              PUSH    EAX  
00407299    6A 40          PUSH    40  
0040729B    E8 E0FFFFFF    CALL    SystemCl.00407280  
004072A0    C3              RETN  
这并不是程序的真正入口(入口位还远呢,这是ASPR的新特点),但是它给我们提供了一个很有用的信息,那就是IAT的位置(新版SAPR无法用importREC自动搜索IAT了),所以我们可以先 D 56F32C,让内存区定位在这里,去掉内存断点,F8,又回到壳中,不过没关系再按几下F8就又可从壳中回来的,回来后我们来到这:  
0040734D    A3 68B65600    MOV    DWORD PTR DS:[56B668], EAX      ; SystemCl.00400000  
00407352    A1 68B65600    MOV    EAX, DWORD PTR DS:[56B668]  
00407357    A3 D8205600    MOV    DWORD PTR DS:[5620D8], EAX  
0040735C    33C0            XOR    EAX, EAX  
0040735E    A3 DC205600    MOV    DWORD PTR DS:[5620DC], EAX  
00407363    33C0            XOR    EAX, EAX  
00407365    A3 E0205600    MOV    DWORD PTR DS:[5620E0], EAX  
0040736A    E8 C1FFFFFF    CALL    SystemCl.00407330  
0040736F    BA D4205600    MOV    EDX, SystemCl.005620D4  
00407374    8BC3            MOV    EAX, EBX  
00407376    E8 75D8FFFF    CALL    SystemCl.00404BF0  
0040737B    5B              POP    EBX  
0040737C    C3              RETN  
到这里我们要做3件事:  
1.拿出LOADPE,把这个东东从内存DUMP出来DUMPED.EXE.  
2,记下EBX的值560d08.  
3,先修复好引入表,修复方法如下:  
看看内存区在56f32c一块(别不记得为什么在这里了,上下找找,很快就可发现IAT的位置:56F21C--->56FBA4,大小为56FBA4-56F21C=988,  
打开importREC,选中程序IAT的RVA填入16F21C,size:988,按下"获得输入信息",这时可找到一些指针,但还用很多无效,按"显示无效--->追踪层次1(分解),可修复大部分指针,还有一些得手动了,不过我发现用新版的ASPR插件竞可以全部修复(试了几个都可以,所以也就偷懒了,用ASPR插件修复,还有几个无效的指针其实是垃圾把它们CUT了(看看它们的值就知道是不是垃圾了).然后FIX DUMPED.EXE为DUMPED_.EXE.  
下面就是修复入口处了.  

回到原程序.按几下F8,过了RETN我们就来到程序入口了.  
005613DF    0000            ADD    BYTE PTR DS:[EAX], AL  
005613E1    0000            ADD    BYTE PTR DS:[EAX], AL  
005613E3    0000            ADD    BYTE PTR DS:[EAX], AL  
005613E5    0000            ADD    BYTE PTR DS:[EAX], AL  
005613E7    0000            ADD    BYTE PTR DS:[EAX], AL  
005613E9    0000            ADD    BYTE PTR DS:[EAX], AL  
005613EB    E8 4C5FEAFF    CALL    SystemCl.0040733C  
005613F0    FF15 84A15600  CALL    DWORD PTR DS:[56A184]            ; SystemCl.005608F0  
005613F6    E8 BD39EAFF    CALL    SystemCl.00404DB8  
005613FB    90              NOP  
程序是停在5613F0,可以断定前面的CALL已运行过了.而且入口处和以前一样被  
改成了0,我们要把它补回,但是新版入口的代码似乎不好找(如果谁发现更好的方法告诉我一声:-),不过看这个特点  
是用D7写的,D7的代码特征是  
PUSH EBP  
MOV EBP,ESP  
ADD ESP -10(也可能是ADD ESP -0C)  
MOV EAX,******  
所以只要找出最后这一句MOV,EAX,******,中的*****值就可以补回去了,还记得开始要大家记做的EBX的值560D08吗,它就是这里的值.这样我们就可以打开DUMP出并已经修复引入表的程序DUMPED_.EXE,把这一段代码补回去了,补完后是这样  
005613E0 > $  55            PUSH    EBP  
005613E1  .  8BEC          MOV    EBP, ESP  
005613E3  .  83C4 F0      ADD    ESP, -10  
005613E6  .  B8 080D5600  MOV    EAX, jjjj_.00560D08  
005613EB  .  E8 4C5FEAFF  CALL    jjjj_.0040733C  
005613F0  .  FF15 84A15600 CALL    DWORD PTR DS:[56A184]            ;  jjjj_.005608F0  
005613F6  .  E8 BD39EAFF  CALL    jjjj_.00404DB8  
保存后用LOADPE把入口点改成1613e0,OK,程序可以运行了.脱壳完成.  

应WINROOT要求,补上脱壳动画:  
HTTP://wangming.west263.com/asprunpack/asprunpack.rar  
jwh51

    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程