在学习wuhanqi 手脱Armadillo 5.0 (Standard + Debug-Blocker).   的时候 
  
  首先运行Armadillo Process Detach.将unpackme脱入Arma Detach中。 
  会显示内容如下: 
  DONE! 
  Child process ID: 000002C8 
  Entry point: 004A2DC2 
  Original bytes: E8E3 
   
  这时我们打开一个od.文件--附加.然后选中PID为2C8的进程.即为Armadillo的子进程. 
  我们载入后.F9.再F12.便断到如下代码处:   
  004A2DC2 >- EB FE           JMP SHORT <ModuleEntryPoint> 
  004A2DC4    40              INC EAX 
  004A2DC5    0000            ADD BYTE PTR DS:[EAX],AL 
  004A2DC7  ^ E9 16FEFFFF     JMP 004A2BE2 
  004A2DCC    6A 0C           PUSH 0C 
  004A2DCE    68 B0104D00     PUSH 004D10B0 
  004A2DD3    E8 44150000     CALL 004A431C 
  004A2DD8    8B4D 08         MOV ECX,DWORD PTR SS:[EBP+8] 
  004A2DDB    33FF            XOR EDI,EDI 
  004A2DDD    3BCF            CMP ECX,EDI 
  004A2DDF    76 2E           JBE SHORT 004A2E0F 
  004A2DE1    6A E0           PUSH -20 
  004A2DE3    58              POP EAX 
  004A2DE4    33D2            XOR EDX,EDX 
  004A2DE6    F7F1            DIV ECX 
  004A2DE8    3B45 0C         CMP EAX,DWORD PTR SS:[EBP+C] 
   入口点是一个跳转.其实是Arma Detach为了防止穿山甲检测.才修改了入口点. 
  我们根据Arma Detach给我们的数据:Original bytes: E8E3.将jmp那两个字节修改为E8E3.即可恢复正常的入口点.   
  004A2DC2 >  E8 E3400000     CALL 004A6EAA 
  004A2DC7  ^ E9 16FEFFFF     JMP 004A2BE2 
  004A2DCC    6A 0C           PUSH 0C 
  004A2DCE    68 B0104D00     PUSH 004D10B0 
  004A2DD3    E8 44150000     CALL 004A431C 
  004A2DD8    8B4D 08         MOV ECX,DWORD PTR SS:[EBP+8] 
  004A2DDB    33FF            XOR EDI,EDI 
  004A2DDD    3BCF            CMP ECX,EDI 
  004A2DDF    76 2E           JBE SHORT 004A2E0F 
  004A2DE1    6A E0           PUSH -20 
  004A2DE3    58              POP EAX 
  004A2DE4    33D2            XOR EDX,EDX 
  004A2DE6    F7F1            DIV ECX 
  004A2DE8    3B45 0C         CMP EAX,DWORD PTR SS:[EBP+C] 
   接下来我们需要确认OD没有硬件断点.以及Alt+B确认没有任何切换断点. 
  然后我们下bp VirtualProtect.可以使我们来到穿山甲处理IAT的地址. 
  shift+f9运行程序.  OD就会有程序已被挂起的提示。。。换个OD也不行。  |