ACProtect 1.40 - 1.41 - RISCO Software Inc. 脱壳

文章整理自黑鹰视频教程

1、查壳显示“ACProtect 1.40 - 1.41 - RISCO Software Inc.”

2、OD载入(用看雪论坛上的OD即可),打开“调试选项->异常”,除了“非法访问内存”和“同时忽略以下指定的异常或范围”这两项不勾以外,其他的都打勾。

3、重新载入程序,F9运行,程序断下来,如下所示:

0043374D  |.  CD 01         int     1
0043374F  |.  40            inc     eax
00433750  |.  40            inc     eax
00433751  |.  0BC0          or      eax, eax
00433753  |.  75 05         jnz     short 0043375A
堆栈窗口显示如下:
0012FF84   0012FFE0  指向下一个 SEH 记录的指针
0012FF88   00433731  SE处理程序
0012FF8C   00123F2D
0012FF90   6CE87C5E

在SE处理程序这一行的“00433731”数据窗口中跟随,在数据窗口该地址处右键“断点->内存访问”下内存访问断点。Shift+F9运行。

4、程序在如下处断了下来:

00433731   .  8B5C24 0C     mov     ebx, dword ptr [esp+C]
00433735   .  8383 B8000000>add     dword ptr [ebx+B8], 2
0043373C   .  33C0          xor     eax, eax
0043373E   .  C3            retn

在00433731这一行F2下断,Shift+F9运行。

5、程序在如下处断了下来:

00433781  |.  8B048E        |mov     eax, dword ptr [esi+ecx*4]
00433784  |.  8B5C8E 04     |mov     ebx, dword ptr [esi+ecx*4+4]
00433788  |.  2BC3          |sub     eax, ebx
0043378A  |.  C1C8 05       |ror     eax, 5
0043378D  |.  2BC2          |sub     eax, edx
0043378F  |.  81C2 43A18EAB |add     edx, AB8EA143

在00433781这一行F2下断,Shift+F9运行。

6、程序在如下处断了下来:

00433795  |.  89048E        |mov     dword ptr [esi+ecx*4], eax
00433798  |.  49            |dec     ecx
00433799  |.^ EB E1         \jmp     short 0043377C
0043379B  |> \61            popad
0043379C  |.  61            popad
0043379D  \.  C3            retn 

此时删除前面的断点(注意,有两个F2断点和一个内存访问断点)。在最后0043379D这一行F4运行到该行,打开内存镜像,在程序的.text代码段F2下断,Shift+F9运行。

7、程序断在如下处:

00401B4A   $- FF25 7C114000 jmp     dword ptr [40117C]  ;  MSVBVM60.ThunRTMain
00401B50      47            db      47                  ;  CHAR 'G'
00401B51      6B            db      6B                  ;  CHAR 'k'
00401B52      2B            db      2B                  ;  CHAR '+'
00401B53      2E            db      2E                  ;  CHAR '.'
00401B54      36            db      36                  ;  CHAR '6'
00401B55      E6            db      E6
00401B56      96            db      96

堆栈窗口如下:

0012FFD8   00438CC9  返回到 123.00438CC9 来自 123.00401B4A
0012FFDC   00402C98  ASCII "VB5!6&vb6chs.dll"
0012FFE0   FFFFFFFF  SEH 链尾部
0012FFE4   7C839AA8  SE处理程序
0012FFE8   7C817080  kernel32.7C817080

在反汇编窗口中00401B50处修改反汇编代码如下:

00401B50      68 982C4000   push    00402C98       ;  ASCII "VB5!6&vb6chs.dll"
00401B55      E8 F0FFFFFF   call    00401B4A       ;  jmp 到 MSVBVM60.ThunRTMain
00401B5A      90            nop

注意,push 00402C98这一行的地址来源于堆栈窗口中00402C98 ASCII "VB5!6&vb6chs.dll",而call 00401B4A这一行的地址来源于反汇编窗口中的MSVBVM60.ThunRTMain这一行,不同的程序要区别对待。

8、dump文件,注意,程序入口点要填1B50。脱壳成功。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值