asprotect的stolen code

最近研究asprotect的壳,真是我的一块心病啊,这asprotect,真心不好搞。

01280253    68 26AE4500     push    45AE26                           ; 401524
01280258    66:9C           pushfw
0128025A    52              push    edx
0128025B    035424 18       add     edx, dword ptr [esp+18]
0128025F    C1DA E7         rcr     edx, 0E7
01280262    BA BE204600     mov     edx, 4620BE
01280267    035424 18       add     edx, dword ptr [esp+18]
0128026B    8D5424 52       lea     edx, dword ptr [esp+52]
0128026F    83EA 52         sub     edx, 52
01280272    8D52 14         lea     edx, dword ptr [edx+14]
01280275    57              push    edi
01280276    51              push    ecx
01280277    F3:             prefix rep:
01280278    EB 02           jmp     short 0128027C
0128027A    CD20 81DFCB0D   vxdjump DCBDF81
01280280    90              nop
01280281    70 68           jo      short 012802EB
01280283    26:09F7         or      edi, esi
01280286    42              inc     edx
01280287    53              push    ebx
01280288    03DF            add     ebx, edi
0128028A    EB 02           jmp     short 0128028E
0128028C    CD20 81CBDD83   vxdjump 83DDCB81
01280292  ^ E3 A6           jecxz   short 0128023A
01280294    3E:EB 02        jmp     short 01280299
01280297    CD20 8D5C35AB   vxdcall AB355C8D
0128029D    2BDE            sub     ebx, esi
0128029F    8D5C0C 28       lea     ebx, dword ptr [esp+ecx+28]
012802A3    2BD9            sub     ebx, ecx
012802A5    8D5C03 D8       lea     ebx, dword ptr [ebx+eax-28]
012802A9    2BD8            sub     ebx, eax                         ; mov ebx,esp
012802AB    8D5C3B FC       lea     ebx, dword ptr [ebx+edi-4]
012802AF    83C3 04         add     ebx, 4
012802B2    2BDF            sub     ebx, edi
012802B4    2E:EB 01        jmp     short 012802B8
012802B7  - 0F8D 5C0B042B   jge     2C2C0E19
012802BD    D968 77         fldcw   word ptr [eax+77]
012802C0    804D E6 8F      or      byte ptr [ebp-1A], 8F
012802C4    035B 33         add     ebx, dword ptr [ebx+33]
012802C7    7C 24           jl      short 012802ED
012802C9    0833            or      byte ptr [ebx], dh
012802CB    7C 24           jl      short 012802F1
012802CD    285F 57         sub     byte ptr [edi+57], bl
012802D0    33CF            xor     ecx, edi
012802D2    59              pop     ecx
012802D3    83C1 A0         add     ecx, -60
012802D6    81C1 E37FB299   add     ecx, 99B27FE3
012802DC    F7D9            neg     ecx
012802DE    87F9            xchg    ecx, edi
012802E0    C1C7 01         rol     edi, 1
012802E3    47              inc     edi
012802E4    2BD7            sub     edx, edi
012802E6    81E1 68CCB6D2   and     ecx, D2B6CC68
012802EC    59              pop     ecx
012802ED    C1CF BF         ror     edi, 0BF
012802F0    C1CF 5B         ror     edi, 5B
012802F3    5F              pop     edi
012802F4    55              push    ebp
012802F5    036C24 38       add     ebp, dword ptr [esp+38]
012802F9    83ED 4B         sub     ebp, 4B
012802FC    8DAC26 EC444300 lea     ebp, dword ptr [esi+4344EC]
01280303    2BEE            sub     ebp, esi
01280305    892A            mov     dword ptr [edx], ebp
01280307    5D              pop     ebp
01280308    5A              pop     edx
01280309    66:9D           popfw
0128030B    E8 0C1218FF     call    xp.0040151C                      ; jmp 到 msvbvm60.ThunRTMain

  用脚本就可以停在001280253,上面这段代码就是stolen code ,就是壳把程序入口点处的一段代码放到壳中执行。对于处理stolen code,如果偷的代码少的话,我们可以手动补一下,偷的多的话就需要新建区段了。我现在遇到的这个就可以手动补,怎么补,我们随便看下一个没有加壳的vb6.0的入口点是什么样子的,对照一下我们就应该知道怎么加了。

0040151C   $- FF25 30114000 jmp     dword ptr [<&msvbvm60.ThunRTMain>;  msvbvm60.ThunRTMain
00401522 > $  68 EC444300   push    004344EC              ;入口点
00401527   .  E8 F0FFFFFF   call    <jmp.&msvbvm60.ThunRTMain>

  

原来一个没加壳的vb程序入口点的代码是一句push 然后一个call 到ThunRTMain。现在单步下001280253的代码,执行完01280309处的popfw,栈顶是004344ec,这个就是我们需要补的第一句代码,push  004344ec,然后再执行0128030B处的代码我们发现流程转移到了一个跳转表中

0040151C   .- FF25 30114000 jmp     dword ptr [401130]               ;  msvbvm60.ThunRTMain   ;00128030B会跳转到这里!!!
00401522      0000          add     byte ptr [eax], al
00401524    - E9 D70A0C00   jmp     004C2000
00401529      68 BC9E9D7A   push    7A9D9EBC
0040152E      48            dec     eax
0040152F      0000          add     byte ptr [eax], al

  所以我们第二句要补的代码就是call  0040151c , 我们在00401522地址处的汇编代码改为push 004344EC,下一句代码改为call  0040151C,然后dump出来,入口点要设置为00401522,就可以了。我这个样本不用修复IAT中的asprotect SDK。关于修复asprotect sdk那又是一个问题了。我现在不是很懂。

 

这样样本是一个盗qq的,运行的时候会显示出一张美女图片用以掩人耳目。

转载于:https://www.cnblogs.com/shremie/archive/2012/07/17/2594018.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值