脱壳工具:新版aspr脱壳思路方法(完全版)

  新版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
  在上面这个地方“右键—> memory po _disibledevent=>  打开importREC,选中IATRVA填入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  Cl.0040733C 
005613F0  FF15 84A15600 CALL  DWORD PTR DS:[56A184]      ; Cl.005608F0 
005613F6  E8 BD39EAFF  CALL  Cl.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,可以运行了.脱壳完成.



Tags:  脱壳机 脱壳教程 脱壳软件 脱壳工具

延伸阅读

最新评论

发表评论