asprotect的入口点变形

一个程序如果用普通的加壳程序处理之后,脱壳之后的程序应该和原来的程序是一模一样的,压缩壳普遍都是这种情况,但是对于某些加密壳来说有入口点保护的功能,会把你原本程序的入口点的代码改变,同时在其中加入一些垃圾代码,导致你脱壳后的入口点代码和未加壳程序入口点代码是不一样的,但是不影响程序的结果,相当于把你入口点的代码给变形了。某个vb程序用asprotect 加壳之后用脚本顺利到达入口点处,我们看下入口点的代码

01140253    68 26AE4500     push    45AE26                           ; OEP
01140258    66:9C           pushfw
0114025A    52              push    edx
0114025B    035424 18       add     edx, dword ptr [esp+18]
0114025F    C1DA E7         rcr     edx, 0E7
01140262    BA BE204600     mov     edx, 4620BE
01140267    035424 18       add     edx, dword ptr [esp+18]          ; 上面是垃圾操作
0114026B    8D5424 52       lea     edx, dword ptr [esp+52]          ; 这步是对edx的有效操作
0114026F    83EA 52         sub     edx, 52                          ; edx=esp+52-52=esp
01140272    8D52 14         lea     edx, dword ptr [edx+14]          ; edx=edx+14
01140275    57              push    edi
01140276    51              push    ecx
01140277    F3:             prefix rep:
01140278    EB 02           jmp     short 0114027C
0114027A    CD20 81DFCB0D   vxdjump DCBDF81
01140280    90              nop
01140281    70 68           jo      short 011402EB
01140283    26:09F7         or      edi, esi
01140286    42              inc     edx
01140287    53              push    ebx
01140288    03DF            add     ebx, edi
0114028A    EB 02           jmp     short 0114028E
0114028C    CD20 81CBDD83   vxdjump 83DDCB81
01140292  ^ E3 A6           jecxz   short 0114023A
01140294    3E:EB 02        jmp     short 01140299
01140297    CD20 8D5C35AB   vxdcall AB355C8D
0114029D    2BDE            sub     ebx, esi
0114029F    8D5C0C 28       lea     ebx, dword ptr [esp+ecx+28]
011402A3    2BD9            sub     ebx, ecx
011402A5    8D5C03 D8       lea     ebx, dword ptr [ebx+eax-28]
011402A9    2BD8            sub     ebx, eax
011402AB    8D5C3B FC       lea     ebx, dword ptr [ebx+edi-4]
011402AF    83C3 04         add     ebx, 4
011402B2    2BDF            sub     ebx, edi
011402B4    2E:EB 01        jmp     short 011402B8
011402B7  - 0F8D 5C0B042B   jge     2C180E19
011402BD    D968 77         fldcw   word ptr [eax+77]
011402C0    804D E6 8F      or      byte ptr [ebp-1A], 8F
011402C4    035B 33         add     ebx, dword ptr [ebx+33]
011402C7    7C 24           jl      short 011402ED
011402C9    0833            or      byte ptr [ebx], dh
011402CB    7C 24           jl      short 011402F1
011402CD    285F 57         sub     byte ptr [edi+57], bl
011402D0    33CF            xor     ecx, edi
011402D2    59              pop     ecx
011402D3    83C1 A0         add     ecx, -60
011402D6    81C1 E37FB299   add     ecx, 99B27FE3
011402DC    F7D9            neg     ecx
011402DE    87F9            xchg    ecx, edi
011402E0    C1C7 01         rol     edi, 1
011402E3    47              inc     edi
011402E4    2BD7            sub     edx, edi                         ; 这里edx变成了12FFC0的
011402E6    81E1 68CCB6D2   and     ecx, D2B6CC68
011402EC    59              pop     ecx
011402ED    C1CF BF         ror     edi, 0BF
011402F0    C1CF 5B         ror     edi, 5B
011402F3    5F              pop     edi                              ; edi
011402F4    55              push    ebp
011402F5    036C24 38       add     ebp, dword ptr [esp+38]
011402F9    83ED 4B         sub     ebp, 4B
011402FC    8DAC26 EC444300 lea     ebp, dword ptr [esi+4344EC]      ; EBP=ESI+4344EC
01140303    2BEE            sub     ebp, esi                         ; EBP=EBP-ESI=4344EC
01140305    892A            mov     dword ptr [edx], ebp             ; 这步相当于push  004344EC  edx啥时候等于12FFC0呢?
01140307    5D              pop     ebp
01140308    5A              pop     edx
01140309    66:9D           popfw
0114030B    E8 0C122CFF     call    xp.0040151C                      ; jmp 到 msvbvm60.ThunRTMain

  

我们都知道VB程序的入口点是push  XXXXXX   call  YYYYYYYY,  这样的。

在0114030B处已经有了call  YYYYYYYY了,所以从01140253到01140309之间的代码就相当于执行了push XXXXXX代码的操作。

 

总结下,某些程序脱壳后的入口点的代码和程序加壳之前的入口点代码可能是不一样的,但是代码执行的最终结果是一样的。

 

 

 

顺便爆下某盗号的收信地址:http://14.102.255.51/wwwroot/user/t101/conn2.asp

posted @ 2012-07-12 01:08  shremie  阅读(365)  评论(0编辑  收藏  举报