WEB开发网
开发学院网络安全黑客技术 Armadillo标准加壳的程序的脱壳和引入表修复方案 阅读

Armadillo标准加壳的程序的脱壳和引入表修复方案

 2007-01-13 20:14:38 来源:WEB开发网   
核心提示: 00D093E3E8 F8C0FEFFCALL00CF54E000D093E88985 48F9FFFFMOVDWORD PTR SS:[EBP-6B8], EAX00D093EE83BD 48F9FFFF 0>CMPDWORD PTR SS:[EBP-6B8], 000D093F5
00D093E3  E8 F8C0FEFF  CALL  00CF54E0 
00D093E8  8985 48F9FFFF MOV  DWORD PTR SS:[EBP-6B8], EAX 
00D093EE  83BD 48F9FFFF 0>CMP  DWORD PTR SS:[EBP-6B8], 0 
00D093F5  75 38     JNZ  SHORT 00D0942F

在第二行也有个[EBP-6B8],注意前面这个CALL,我们去看一看 

00CF54E0  55       PUSH  EBP 
00CF54E1  8BEC      MOV  EBP, ESP 
00CF54E3  53       PUSH  EBX 
00CF54E4  56       PUSH  ESI 
00CF54E5  57       PUSH  EDI 
00CF54E6  33FF      XOR  EDI, EDI 
00CF54E8  33DB      XOR  EBX, EBX 
00CF54EA  66:F745 0E FFFF TEST  WORD PTR SS:[EBP+E], 0FFFF 
00CF54F0  75 03     JNZ  SHORT 00CF54F5 
00CF54F2  8B5D 0C    MOV  EBX, DWORD PTR SS:[EBP+C] 
00CF54F5  57       PUSH  EDI 
00CF54F6  FF15 A430D100 CALL  DWORD PTR DS:[D130A4]      ; kernel32.GetModuleHandleA 
00CF54FC  3945 08    CMP  DWORD PTR SS:[EBP+8], EAX 
00CF54FF  75 07     JNZ  SHORT 00CF5508 
00CF5501  BE C053D100  MOV  ESI, 0D153C0 
00CF5506  EB 60     JMP  SHORT 00CF5568 
00CF5508  393D 9859D100 CMP  DWORD PTR DS:[D15998], EDI 
00CF550E  B9 9859D100  MOV  ECX, 0D15998 
00CF5513  74 3C     JE   SHORT 00CF5551 
00CF5515  8B35 B8B1D100 MOV  ESI, DWORD PTR DS:[D1B1B8] 
00CF551B  A1 CCEED100  MOV  EAX, DWORD PTR DS:[D1EECC] 
00CF5520  F641 08 01   TEST  BYTE PTR DS:[ECX+8], 1 
00CF5524  74 0E     JE   SHORT 00CF5534 
00CF5526  8B50 70    MOV  EDX, DWORD PTR DS:[EAX+70] 
00CF5529  3350 60    XOR  EDX, DWORD PTR DS:[EAX+60] 
00CF552C  3350 3C    XOR  EDX, DWORD PTR DS:[EAX+3C] 
00CF552F  F6C2 80    TEST  DL, 80 
00CF5532  75 13     JNZ  SHORT 00CF5547 
00CF5534  8B50 70    MOV  EDX, DWORD PTR DS:[EAX+70] 
00CF5537  3350 64    XOR  EDX, DWORD PTR DS:[EAX+64] 
00CF553A  3350 58    XOR  EDX, DWORD PTR DS:[EAX+58] 
00CF553D  3350 20    XOR  EDX, DWORD PTR DS:[EAX+20] 
00CF5540  3316      XOR  EDX, DWORD PTR DS:[ESI] 
00CF5542  3955 08    CMP  DWORD PTR SS:[EBP+8], EDX 
00CF5545  74 1E     JE   SHORT 00CF5565 
00CF5547  83C1 0C    ADD  ECX, 0C 
00CF554A  83C6 04    ADD  ESI, 4 
00CF554D  3939      CMP  DWORD PTR DS:[ECX], EDI 
00CF554F ^ 75 CF     JNZ  SHORT 00CF5520 
00CF5551  FF75 0C    PUSH  DWORD PTR SS:[EBP+C]

这里面有几个跳转,其中最后一个CF554F是往上跳的.我们看一个就可发现: 

00CF5513  74 3C     JE   SHORT 00CF5551,这个跳正好可跳出这个循环.只要改这个跳,就不会破坏引入表了. 

再次重新载入,BP VirtualProtect,出现注册框后OK,程序再断下来,这时清除断点(包括硬件断点),CTRL+F9回程序领空,把CF5513的74 3c改成eb 3c,按F9运行,程序运行后打开importREC,选中程序,入口填入59b0,-->IAT自动搜索-->获得输入信息",如果还有无效的大可放心的cut,因为它们本来就不是有用指针了(也可能是importREC把IAT的大小判断错了),.然后修复脱壳后的文件.OK,大功告成. 

测试了下脱壳后的程序,运行正常,那个烦人的注册框没有,时间限制也注册了,别说30天,就是30年都没问题.

上一页  1 2 3 4 5 

Tags:Armadillo 标准 加壳

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接