• 标 题: 手脱“最新版MSN性感相册变种(Worm/MSN.SendPhoto)”病毒所添加的未知壳(最新所有版通脱)
  • 作 者:coderui
  • 时 间:2007-12-28 13:42
  • 链 接:http://bbs.pediy.com/showthread.php?t=57254

////////////////////////////////////////////////////////////////////////////////////////////
文件名称:手脱“最新版MSN性感相册变种(Worm/MSN.SendPhoto)”病毒所添加的未知壳(最新所有版通脱)
目标程序:最新版MSN性感相册变种(Worm/MSN.SendPhoto)
操作环境:Windows XP-SP2
使用工具:Ollydbg 1.10版
编写作者:Coderui
编写时间:2007年12月27日
联系方式:coderui@163.com
作者博客:http://hi.baidu.com/coderui

---------------------------------------------------------------------------------------------
介绍:

    前不久“MSN性感相册变种(Worm/MSN.SendPhoto)”病毒在网络中消失了一段时间以后,最近又开始疯狂的发作了。很显然不是以前版本的病毒又复活了,而是病毒作者重新开发出了新的版本在进行到处传播。对病毒感兴趣的朋友当然是非常喜欢分析病毒原理的,但如果被其壳挡在门外,那可是最最郁闷的事情了。如果是简单壳或通用壳大家完全是可以使用脱壳机的,但如今的病毒作者是很聪明的,不会让大家那么轻松的就可以分析出他们的病毒信息,所以选择的壳当然也是比较强硬、希奇的物种。
    最近分析了几个新版的“MSN性感相册变种(Worm/MSN.SendPhoto)”病毒,发现所添加的壳完全是一样的,可以肯定的是出自一个人之手,因为这种未知壳很少见,反正我是没见过(井底之蛙?呵呵)。病毒所添加的壳比较有深度,融入了很多技术,不适合脱壳的初学者和新手去手脱这个壳。我拿到该样本后,大概分析了4-5个小时,尝试手脱次数估计近50次,跑飞次数大概占全部次数的9层(也就是手脱10次,跑飞9次,剩下的一次以失败而告终,嘿嘿),最后终于分析出来壳的原理和详细的手脱方法了(当然分析出来再去脱壳就不会跑飞了),所以现在分享给大家,希望对想分析这个病毒原理的朋友有帮助。因为“MSN性感相册变种(Worm/MSN.SendPhoto)”这个病毒现在比较流行,相信大家会很关注、会很喜欢的,也谢谢大家的支持了!
    简单的介绍下“MSN性感相册变种(Worm/MSN.SendPhoto)”病毒所添加的壳吧。该壳中融入了压缩壳的技术、加密壳的技术、混淆入口点的技术、创建线程解密的技术、输入表加密的技术、花指令技术等等。也许可能这些技术来自于不同的壳(也就是病毒加了几层壳),也许可能这些技术来自于同一个壳(那么这个壳还真不错,压缩率高、还可以保护住自己,不被一些人所破解),弄个这样的壳来自己用感觉很不错(不过现在我没有,郁闷),呵呵!
    今天给大家讲解的方法是怎样去快速脱掉该病毒所添加的壳,详细的调试分析跟踪步骤就不写了,因为代码太多,恐怕会越讲越乱,最后适得其反。(说真的,感觉做视频教程比写这种文章简单多了。采用文章去写的话,复杂的代码会被贴的很乱,大家就忍忍吧。)
---------------------------------------------------------------------------------------------
OD设置:(OD设置为不忽略任何异常。[F2]:下软断点、[F4]:执行到当前代码处、[F7]:单步步入、[F8]单步步过、[F9]运行。)
按照顺序查看注解:(1)、(2)、(3)……(10)。

0040101E > $ /EB 0C         JMP SHORT 8d56547f.0040102C              ; (1)程序载入后,停在这里。
                                                                     ; (2)我们向下看本段代码,在数据段与代码段的分界处有个JMP。
00401020     |90            NOP
00401021     |90            NOP
00401022     |00            DB 00
00401023     |00            DB 00
00401024     |00            DB 00
00401025     |00            DB 00
00401026     |00            DB 00
00401027     |00            DB 00
00401028     |00            DB 00
00401029     |00            DB 00
0040102A   . |CD 2E         INT 2E
0040102C   > \E8 03000000   CALL 8d56547f.00401034
00401031   .  90            NOP
00401032   .  EB 02         JMP SHORT 8d56547f.00401036
00401034  /$  90            NOP
00401035  \.  C3            RETN
00401036   >  8B4424 FC     MOV EAX,DWORD PTR SS:[ESP-4]
0040103A   .  2D 9C194000   SUB EAX,8d56547f.0040199C
0040103F   .  8D80 98194000 LEA EAX,DWORD PTR DS:[EAX+401998]
00401045   >  48            DEC EAX
00401046   .  66:8138 5045  CMP WORD PTR DS:[EAX],4550
0040104B   .^ 75 F8         JNZ SHORT 8d56547f.00401045
0040104D   .  8BF8          MOV EDI,EAX
0040104F   >  48            DEC EAX
00401050   .  66:8138 4D5A  CMP WORD PTR DS:[EAX],5A4D
00401055   .^ 75 F8         JNZ SHORT 8d56547f.0040104F
00401057   .  8BBF 80000000 MOV EDI,DWORD PTR DS:[EDI+80]
0040105D   .  03F8          ADD EDI,EAX
0040105F   .  8B7F 10       MOV EDI,DWORD PTR DS:[EDI+10]
00401062   .  03F8          ADD EDI,EAX
00401064   .  8B07          MOV EAX,DWORD PTR DS:[EDI]
00401066   .  B9 0C0C0000   MOV ECX,0C0C
0040106B   .  81C1 00000000 ADD ECX,0
00401071   .  2AC9          SUB CL,CL
00401073   .  81C1 00010000 ADD ECX,100
00401079   .  50            PUSH EAX
0040107A   .  50            PUSH EAX
0040107B   .  51            PUSH ECX
0040107C   .  6A 40         PUSH 40
0040107E   .  68 00200000   PUSH 2000
00401083   .  51            PUSH ECX
00401084   .  6A 00         PUSH 0
00401086   .  FFD0          CALL EAX
00401088   .  8BF8          MOV EDI,EAX
0040108A   .  59            POP ECX
0040108B   .  58            POP EAX
0040108C   .  6A 40         PUSH 40
0040108E   .  68 00100000   PUSH 1000
00401093   .  51            PUSH ECX
00401094   .  57            PUSH EDI
00401095   .  FFD0          CALL EAX
00401097   .  8BF8          MOV EDI,EAX
00401099   .  57            PUSH EDI
0040109A   .  E8 03000000   CALL 8d56547f.004010A2
0040109F   .  90            NOP
004010A0   .  EB 02         JMP SHORT 8d56547f.004010A4
004010A2  /$  90            NOP
004010A3  \.  C3            RETN
004010A4   >  8B7424 FC     MOV ESI,DWORD PTR SS:[ESP-4]
004010A8   .  81EE 0B1A4000 SUB ESI,8d56547f.00401A0B
004010AE   .  8DB6 6C194000 LEA ESI,DWORD PTR DS:[ESI+40196C]
004010B4   .  B9 0C0C0000   MOV ECX,0C0C
004010B9   .  81EE 00000000 SUB ESI,0
004010BF   .  81C1 00000000 ADD ECX,0
004010C5   .  F3:A4         REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
004010C7   .  5F            POP EDI
004010C8   .  81C7 FA000000 ADD EDI,0FA
004010CE   .  57            PUSH EDI
004010CF   .  B0 C5         MOV AL,0C5
004010D1   .  B9 0C0C0000   MOV ECX,0C0C
004010D6   .  81C7 00000000 ADD EDI,0
004010DC   >  0007          ADD BYTE PTR DS:[EDI],AL
004010DE   .  47            INC EDI
004010DF   .  49            DEC ECX
004010E0   .^ 75 FA         JNZ SHORT 8d56547f.004010DC
004010E2   .  5F            POP EDI
004010E3   .  E8 03000000   CALL 8d56547f.004010EB
004010E8   .  90            NOP
004010E9   .  EB 03         JMP SHORT 8d56547f.004010EE
004010EB  /$  40            INC EAX
004010EC  |.  90            NOP
004010ED  \.  C3            RETN
004010EE   >  8B4424 FC     MOV EAX,DWORD PTR SS:[ESP-4]
004010F2   .  81C7 00000000 ADD EDI,0
004010F8   .  FFE7          JMP EDI                                  ; (3)这个就是分界处的JMP,上边这段应该是数据解压代码。
                                                                     ; (4)我们在这里按[F4]:执行到当前代码处。然后[F8]跳。
004010FA      8E            DB 8E
004010FB      23            DB 23                                    ;  CHAR '#'
004010FC      3B            DB 3B                                    ;  CHAR ';'
004010FD      3B            DB 3B                                    ;  CHAR ';'
004010FE      3B            DB 3B                                    ;  CHAR ';'
004010FF      3B            DB 3B                                    ;  CHAR ';'
              .
              .
              .
003700FA    53              PUSH EBX                                 ; (5)跳转后来到这里。我们向下看本段代码(会向下看很长一段),其中有一处代码存在N多的NOP,在NOP上方有一个RETN,RETN上边是POPAD和PUSHAD。
003700FB    E8 00000000     CALL 00370100
00370100    5B              POP EBX
00370101    8983 0A000000   MOV DWORD PTR DS:[EBX+A],EAX
00370107    5B              POP EBX
00370108    EB 04           JMP SHORT 0037010E
0037010A    0000            ADD BYTE PTR DS:[EAX],AL
0037010C    0000            ADD BYTE PTR DS:[EAX],AL
0037010E    E8 00000000     CALL 00370113
00370113    58              POP EAX
00370114    8D80 75020000   LEA EAX,DWORD PTR DS:[EAX+275]
0037011A    FFD0            CALL EAX
0037011C    60              PUSHAD
0037011D    50              PUSH EAX
0037011E    E8 0F000000     CALL 00370132
00370123    56              PUSH ESI
00370124    6972 74 75616C5>IMUL ESI,DWORD PTR DS:[EDX+74],506C6175
0037012B    72 6F           JB SHORT 0037019C
0037012D    74 65           JE SHORT 00370194
0037012F    637400 50       ARPL WORD PTR DS:[EAX+EAX+50],SI
00370133    E8 00000000     CALL 00370138
00370138    58              POP EAX
00370139    8D80 7A010000   LEA EAX,DWORD PTR DS:[EAX+17A]
0037013F    FFD0            CALL EAX
00370141    5B              POP EBX
00370142    0BC0            OR EAX,EAX
00370144    0F85 82000000   JNZ 003701CC
0037014A    E8 10000000     CALL 0037015F
0037014F    4C              DEC ESP
00370150    64:72 47        JB SHORT 0037019A                        ; 多余的前缀
00370153    65:74 44        JE SHORT 0037019A                        ; 多余的前缀
00370156    6C              INS BYTE PTR ES:[EDI],DX                 ; I/O 命令
00370157    6C              INS BYTE PTR ES:[EDI],DX                 ; I/O 命令
00370158    48              DEC EAX
00370159    61              POPAD
0037015A    6E              OUTS DX,BYTE PTR ES:[EDI]                ; I/O 命令
0037015B    64:6C           INS BYTE PTR ES:[EDI],DX                 ; I/O 命令
0037015D    65:0053 E8      ADD BYTE PTR GS:[EBX-18],DL
00370161    0000            ADD BYTE PTR DS:[EAX],AL
00370163    0000            ADD BYTE PTR DS:[EAX],AL
00370165    58              POP EAX
00370166    8D80 4D010000   LEA EAX,DWORD PTR DS:[EAX+14D]
0037016C    FFD0            CALL EAX
0037016E    8BF8            MOV EDI,EAX
00370170    2BC0            SUB EAX,EAX
00370172    50              PUSH EAX
00370173    8BCC            MOV ECX,ESP
00370175    E8 14000000     CALL 0037018E
0037017A    4B              DEC EBX
0037017B    0045 00         ADD BYTE PTR SS:[EBP],AL
0037017E    52              PUSH EDX
0037017F    004E 00         ADD BYTE PTR DS:[ESI],CL
00370182    45              INC EBP
00370183    004C00 33       ADD BYTE PTR DS:[EAX+EAX+33],CL
00370187    0032            ADD BYTE PTR DS:[EDX],DH
00370189    0000            ADD BYTE PTR DS:[EAX],AL
0037018B    0000            ADD BYTE PTR DS:[EAX],AL
0037018D    00B8 10001200   ADD BYTE PTR DS:[EAX+120010],BH
00370193    50              PUSH EAX
00370194    8BC4            MOV EAX,ESP
00370196    51              PUSH ECX
00370197    50              PUSH EAX
00370198    6A 00           PUSH 0
0037019A    6A 00           PUSH 0
0037019C    FFD7            CALL EDI
0037019E    83C4 08         ADD ESP,8
003701A1    58              POP EAX
003701A2    50              PUSH EAX
003701A3    E8 0F000000     CALL 003701B7
003701A8    56              PUSH ESI
003701A9    6972 74 75616C5>IMUL ESI,DWORD PTR DS:[EDX+74],506C6175
003701B0    72 6F           JB SHORT 00370221
003701B2    74 65           JE SHORT 00370219
003701B4    637400 50       ARPL WORD PTR DS:[EAX+EAX+50],SI
003701B8    E8 00000000     CALL 003701BD
003701BD    58              POP EAX
003701BE    8D80 F5000000   LEA EAX,DWORD PTR DS:[EAX+F5]
003701C4    FFD0            CALL EAX
003701C6    5B              POP EBX
003701C7    0BC0            OR EAX,EAX
003701C9    75 01           JNZ SHORT 003701CC
003701CB    C3              RETN
003701CC    50              PUSH EAX
003701CD    DB0424          FILD DWORD PTR SS:[ESP]
003701D0    8BD3            MOV EDX,EBX
003701D2    8B4424 28       MOV EAX,DWORD PTR SS:[ESP+28]
003701D6    60              PUSHAD
003701D7    E8 00000000     CALL 003701DC
003701DC    5E              POP ESI
003701DD    8DB6 2D000000   LEA ESI,DWORD PTR DS:[ESI+2D]
003701E3    56              PUSH ESI
003701E4    64:FF35 0000000>PUSH DWORD PTR FS:[0]
003701EB    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
003701F2    66:8138 4D5A    CMP WORD PTR DS:[EAX],5A4D
003701F7    74 02           JE SHORT 003701FB
003701F9    2BC0            SUB EAX,EAX
003701FB    E8 00000000     CALL 00370200
00370200    5B              POP EBX
00370201    8D9B 28000000   LEA EBX,DWORD PTR DS:[EBX+28]
00370207    FFE3            JMP EBX
00370209    8B6424 08       MOV ESP,DWORD PTR SS:[ESP+8]
0037020D    64:8F05 0000000>POP DWORD PTR FS:[0]
00370214    83C4 04         ADD ESP,4
00370217    61              POPAD
00370218    2BC0            SUB EAX,EAX
0037021A    E8 00000000     CALL 0037021F
0037021F    5B              POP EBX
00370220    8D9B 13000000   LEA EBX,DWORD PTR DS:[EBX+13]
00370226    FFE3            JMP EBX
00370228    64:8F05 0000000>POP DWORD PTR FS:[0]
0037022F    83C4 24         ADD ESP,24
00370232    8BDA            MOV EBX,EDX
00370234    60              PUSHAD
00370235    E8 00000000     CALL 0037023A
0037023A    58              POP EAX
0037023B    8B80 D0FEFFFF   MOV EAX,DWORD PTR DS:[EAX-130]
00370241    66:2BC0         SUB AX,AX
00370244    66:8138 4D5A    CMP WORD PTR DS:[EAX],5A4D
00370249    74 07           JE SHORT 00370252
0037024B    2D 00000100     SUB EAX,10000                            ; UNICODE "=::=::\"
00370250  ^ EB F2           JMP SHORT 00370244
00370252    50              PUSH EAX
00370253    DB0424          FILD DWORD PTR SS:[ESP]
00370256    58              POP EAX
00370257    61              POPAD
00370258    5B              POP EBX
00370259    6A 00           PUSH 0
0037025B    8BC4            MOV EAX,ESP
0037025D    83C4 04         ADD ESP,4
00370260    50              PUSH EAX
00370261    6A 40           PUSH 40
00370263    E8 00000000     CALL 00370268
00370268    58              POP EAX
00370269    8B80 A2FDFFFF   MOV EAX,DWORD PTR DS:[EAX-25E]
0037026F    50              PUSH EAX
00370270    E8 00000000     CALL 00370275
00370275    58              POP EAX
00370276    8D80 8BFDFFFF   LEA EAX,DWORD PTR DS:[EAX-275]
0037027C    50              PUSH EAX
0037027D    FFD3            CALL EBX
0037027F    6A 00           PUSH 0
00370281    8BC4            MOV EAX,ESP
00370283    83C4 04         ADD ESP,4
00370286    50              PUSH EAX
00370287    6A 40           PUSH 40
00370289    E8 00000000     CALL 0037028E
0037028E    58              POP EAX
0037028F    8B80 80FDFFFF   MOV EAX,DWORD PTR DS:[EAX-280]
00370295    50              PUSH EAX
00370296    51              PUSH ECX
00370297    DB1424          FIST DWORD PTR SS:[ESP]
0037029A    59              POP ECX
0037029B    E8 00000000     CALL 003702A0
003702A0    58              POP EAX
003702A1    8B80 62FDFFFF   MOV EAX,DWORD PTR DS:[EAX-29E]
003702A7    03C1            ADD EAX,ECX
003702A9    50              PUSH EAX
003702AA    FFD3            CALL EBX
003702AC    61              POPAD
003702AD    E9 F8000000     JMP 003703AA
003702B2    56              PUSH ESI
003702B3    51              PUSH ECX
003702B4    52              PUSH EDX
003702B5    53              PUSH EBX
003702B6    8B7424 18       MOV ESI,DWORD PTR SS:[ESP+18]
003702BA    8B4424 14       MOV EAX,DWORD PTR SS:[ESP+14]
003702BE    E8 01000000     CALL 003702C4
003702C3    90              NOP
003702C4    5D              POP EBP
003702C5    45              INC EBP
003702C6    81ED 301C4000   SUB EBP,401C30
003702CC    0FB750 3C       MOVZX EDX,WORD PTR DS:[EAX+3C]
003702D0    8BD8            MOV EBX,EAX
003702D2    03C2            ADD EAX,EDX
003702D4    8B40 78         MOV EAX,DWORD PTR DS:[EAX+78]
003702D7    03C3            ADD EAX,EBX
003702D9    8B50 24         MOV EDX,DWORD PTR DS:[EAX+24]
003702DC    52              PUSH EDX
003702DD    DB0424          FILD DWORD PTR SS:[ESP]
003702E0    5A              POP EDX
003702E1    8B50 1C         MOV EDX,DWORD PTR DS:[EAX+1C]
003702E4    891424          MOV DWORD PTR SS:[ESP],EDX
003702E7    52              PUSH EDX
003702E8    DB0424          FILD DWORD PTR SS:[ESP]
003702EB    5A              POP EDX
003702EC    8B50 20         MOV EDX,DWORD PTR DS:[EAX+20]
003702EF    03D3            ADD EDX,EBX
003702F1    8BFE            MOV EDI,ESI
003702F3    60              PUSHAD
003702F4    E8 00000000     CALL 003702F9
003702F9    5E              POP ESI
003702FA    8DB6 5B000000   LEA ESI,DWORD PTR DS:[ESI+5B]
00370300    56              PUSH ESI
00370301    64:FF35 0000000>PUSH DWORD PTR FS:[0]
00370308    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
0037030F    2BC9            SUB ECX,ECX
00370311    49              DEC ECX
00370312    2BC0            SUB EAX,EAX
00370314    57              PUSH EDI
00370315    F2:AE           REPNE SCAS BYTE PTR ES:[EDI]
00370317    F7D1            NOT ECX
00370319    5F              POP EDI
0037031A    8B3482          MOV ESI,DWORD PTR DS:[EDX+EAX*4]
0037031D    03F3            ADD ESI,EBX
0037031F    57              PUSH EDI
00370320    51              PUSH ECX
00370321    F3:A6           REPE CMPS BYTE PTR ES:[EDI],BYTE PTR DS:>
00370323    59              POP ECX
00370324    74 04           JE SHORT 0037032A
00370326    5F              POP EDI
00370327    40              INC EAX
00370328  ^ EB F0           JMP SHORT 0037031A
0037032A    5F              POP EDI
0037032B    56              PUSH ESI
0037032C    DB1C24          FISTP DWORD PTR SS:[ESP]
0037032F    5E              POP ESI
00370330    87F7            XCHG EDI,ESI
00370332    56              PUSH ESI
00370333    DB1C24          FISTP DWORD PTR SS:[ESP]
00370336    5E              POP ESI
00370337    8D141E          LEA EDX,DWORD PTR DS:[ESI+EBX]
0037033A    0FB70442        MOVZX EAX,WORD PTR DS:[EDX+EAX*2]
0037033E    8D141F          LEA EDX,DWORD PTR DS:[EDI+EBX]
00370341    8B0482          MOV EAX,DWORD PTR DS:[EDX+EAX*4]
00370344    03C3            ADD EAX,EBX
00370346    E8 00000000     CALL 0037034B
0037034B    5B              POP EBX
0037034C    8D9B 28000000   LEA EBX,DWORD PTR DS:[EBX+28]
00370352    FFE3            JMP EBX
00370354    8B6424 08       MOV ESP,DWORD PTR SS:[ESP+8]
00370358    64:8F05 0000000>POP DWORD PTR FS:[0]
0037035F    83C4 04         ADD ESP,4
00370362    61              POPAD
00370363    2BC0            SUB EAX,EAX
00370365    E8 00000000     CALL 0037036A
0037036A    5B              POP EBX
0037036B    8D9B 13000000   LEA EBX,DWORD PTR DS:[EBX+13]
00370371    FFE3            JMP EBX
00370373    64:8F05 0000000>POP DWORD PTR FS:[0]
0037037A    83C4 24         ADD ESP,24
0037037D    5B              POP EBX
0037037E    5A              POP EDX
0037037F    59              POP ECX
00370380    5E              POP ESI
00370381    83C4 0C         ADD ESP,0C
00370384    FF6424 F4       JMP DWORD PTR SS:[ESP-C]
00370388    8B4C24 04       MOV ECX,DWORD PTR SS:[ESP+4]
0037038C    52              PUSH EDX
0037038D    51              PUSH ECX
0037038E    2BD2            SUB EDX,EDX
00370390    49              DEC ECX
00370391    66:8139 4D5A    CMP WORD PTR DS:[ECX],5A4D
00370396  ^ 75 F8           JNZ SHORT 00370390
00370398    8BF9            MOV EDI,ECX
0037039A    66:8B51 3C      MOV DX,WORD PTR DS:[ECX+3C]
0037039E    66:813C0A 5045  CMP WORD PTR DS:[EDX+ECX],4550
003703A4  ^ 75 EA           JNZ SHORT 00370390
003703A6    91              XCHG EAX,ECX
003703A7    59              POP ECX
003703A8    5A              POP EDX
003703A9    C3              RETN
003703AA    50              PUSH EAX
003703AB    DB1C24          FISTP DWORD PTR SS:[ESP]
003703AE    E8 00000000     CALL 003703B3
003703B3    58              POP EAX
003703B4    8B80 4FFCFFFF   MOV EAX,DWORD PTR DS:[EAX-3B1]
003703BA    030424          ADD EAX,DWORD PTR SS:[ESP]
003703BD    83C4 04         ADD ESP,4
003703C0    60              PUSHAD
003703C1    E8 00000000     CALL 003703C6
003703C6    5F              POP EDI
003703C7    8DBF 46080000   LEA EDI,DWORD PTR DS:[EDI+846]
003703CD    8BD8            MOV EBX,EAX
003703CF    B0 68           MOV AL,68
003703D1    AA              STOS BYTE PTR ES:[EDI]
003703D2    8BC3            MOV EAX,EBX
003703D4    AB              STOS DWORD PTR ES:[EDI]
003703D5    B0 C3           MOV AL,0C3
003703D7    AA              STOS BYTE PTR ES:[EDI]
003703D8    0F31            RDTSC
003703DA    8BDA            MOV EBX,EDX
003703DC    0F31            RDTSC
003703DE    33DA            XOR EBX,EDX
003703E0    32DF            XOR BL,BH
003703E2    80C7 E0         ADD BH,0E0
003703E5    80F3 FF         XOR BL,0FF
003703E8    8BC3            MOV EAX,EBX
003703EA    E8 00000000     CALL 003703EF
003703EF    5F              POP EDI
003703F0    8DBF 1B000000   LEA EDI,DWORD PTR DS:[EDI+1B]
003703F6    66:AB           STOS WORD PTR ES:[EDI]
003703F8    61              POPAD
003703F9    E8 00000000     CALL 003703FE
003703FE    58              POP EAX
003703FF    8D80 0E080000   LEA EAX,DWORD PTR DS:[EAX+80E]
00370405    50              PUSH EAX
00370406    DB1C24          FISTP DWORD PTR SS:[ESP]
00370409    60              PUSHAD
0037040A    61              POPAD                                    ; (7)我们在这里按[F4]:执行到当前代码处。看看代码是不是改变了(我们看下边注解"8"所在的代码位置)。
0037040B    C3              RETN                                     ; (6)这个就是我们要找的RENT,但我们不要在这里下断。因为这段代码中有动态解密代码,所以代码所在的位置会被动态的改变。
0037040C    90              NOP
0037040D    90              NOP
0037040E    90              NOP
0037040F    90              NOP
00370410    90              NOP
00370411    90              NOP
00370412    90              NOP
00370413    90              NOP
00370414    90              NOP
00370415    90              NOP
00370416    90              NOP
00370417    90              NOP
00370418    90              NOP
00370419    90              NOP
0037041A    90              NOP
0037041B    90              NOP
0037041C    90              NOP
0037041D    90              NOP
0037041E    90              NOP
0037041F    90              NOP
00370420    90              NOP
00370421    90              NOP
              .
              .
              .
003703F8    61              POPAD
003703F9    E8 00000000     CALL 003703FE
003703FE    58              POP EAX
003703FF    8D80 0E080000   LEA EAX,DWORD PTR DS:[EAX+80E]
00370405    50              PUSH EAX
00370406    DB1C24          FISTP DWORD PTR SS:[ESP]
00370409    60              PUSHAD
0037040A    FFE0            JMP EAX                                  ; (8)我们刚才[F4]后,程序停在了这里,看看现在的代码是不是和上边的代码有所不同呢?我们现在[F8]跳。
0037040C    90              NOP
0037040D    90              NOP
0037040E    90              NOP
0037040F    90              NOP
00370410    90              NOP
00370411    90              NOP
00370412    90              NOP
00370413    90              NOP
00370414    90              NOP
00370415    90              NOP
00370416    90              NOP
00370417    90              NOP
00370418    90              NOP
00370419    90              NOP
0037041A    90              NOP
0037041B    90              NOP
0037041C    90              NOP
0037041D    90              NOP
0037041E    90              NOP
              .
              .
              .
00370C0C    68 0DE94500     PUSH 45E90D                              ; (9)跳到这里。[F8]单步步过。
00370C11    C3              RETN                                     ; (10)[F8]返回。
00370C12    C5C5            LDS EAX,EBP                              ; 非法使用寄存器
00370C14    C5C5            LDS EAX,EBP                              ; 非法使用寄存器
00370C16    C5C5            LDS EAX,EBP                              ; 非法使用寄存器
00370C18    C5C5            LDS EAX,EBP                              ; 非法使用寄存器
00370C1A    C5C5            LDS EAX,EBP                              ; 非法使用寄存器
00370C1C    C5C5            LDS EAX,EBP                              ; 非法使用寄存器
              .
              .
              .
0045E90D    60              PUSHAD                                   ; (11)程序返回到这里。我们看下边0045E921到0045E925处的代码,其实这里也是动态解密后台代码,解密完毕后才去执行的。所以我们直接停在它所解密完毕后的第一句代码上就可以了。
0045E90E    E8 00000000     CALL 8d56547f.0045E913
0045E913    5F              POP EDI
0045E914    8DBF 1A000000   LEA EDI,DWORD PTR DS:[EDI+1A]
0045E91A    B9 980E0000     MOV ECX,0E98
0045E91F    B0 B5           MOV AL,0B5
0045E921    0007            ADD BYTE PTR DS:[EDI],AL
0045E923    47              INC EDI
0045E924    49              DEC ECX
0045E925  ^ 75 FA           JNZ SHORT 8d56547f.0045E921
0045E927    61              POPAD                                    ; (12)我们在这里按[F4]:执行到当前代码处。看看后边代码是不是改变了(我们看下边注解"13"所在的代码位置)。
0045E928    90              NOP
0045E929    90              NOP
0045E92A    90              NOP
0045E92B    90              NOP
0045E92C    90              NOP
0045E92D    334B 4B         XOR ECX,DWORD PTR DS:[EBX+4B]
0045E930    4B              DEC EBX
0045E931    4B              DEC EBX
0045E932    A9 CC11464E     TEST EAX,4E4611CC
              .
              .
              .
0045E927    61              POPAD
0045E928    90              NOP
0045E929    90              NOP
0045E92A    90              NOP
0045E92B    90              NOP
0045E92C    90              NOP
0045E92D    E8 00000000     CALL 8d56547f.0045E932                   ; (13)这段以后就是改变的代码。
                                                                     ; (14)我们向下看本段代码,其中有一处代码存在N多的NOP。
0045E932    5E              POP ESI
0045E933    81C6 FB030000   ADD ESI,3FB
0045E939    B9 F40E0000     MOV ECX,0EF4
0045E93E    8BFE            MOV EDI,ESI
0045E940    E8 00000000     CALL 8d56547f.0045E945
0045E945    5B              POP EBX
0045E946    81EB 1D114000   SUB EBX,8d56547f.0040111D
0045E94C    8D9B 2A114000   LEA EBX,DWORD PTR DS:[EBX+40112A]
0045E952    AC              LODS BYTE PTR DS:[ESI]
0045E953    04 AA           ADD AL,0AA
0045E955    34 E3           XOR AL,0E3
0045E957    EB 01           JMP SHORT 8d56547f.0045E95A
0045E959    C2 F9C0         RETN 0C0F9
0045E95C    C0E6 FE         SHL DH,0FE                               ; 移位常量超出 1..31 的范围
0045E95F    C0FE C0         SAR DH,0C0                               ; 移位常量超出 1..31 的范围
0045E962    2C EC           SUB AL,0EC
0045E964    90              NOP
0045E965    C0C8 EB         ROR AL,0EB                               ; 移位常量超出 1..31 的范围
0045E968    FEC0            INC AL
0045E96A    EB 01           JMP SHORT 8d56547f.0045E96D
0045E96C    E8 EB01C2EB     CALL EC07EB5C
0045E971    01E9            ADD ECX,EBP
0045E973    EB 01           JMP SHORT 8d56547f.0045E976
0045E975    E8 F934AC04     CALL 04F21E73
0045E97A  ^ 7E 90           JLE SHORT 8d56547f.0045E90C
0045E97C    2C 99           SUB AL,99
0045E97E    FEC0            INC AL
0045E980    F9              STC
0045E981    F9              STC
0045E982    34 05           XOR AL,5
0045E984    2C 1B           SUB AL,1B
0045E986    F8              CLC
0045E987    EB 01           JMP SHORT 8d56547f.0045E98A
0045E989    C2 F9C0         RETN 0C0F9
0045E98C    C0E6 90         SHL DH,90                                ; 移位常量超出 1..31 的范围
0045E98F    AA              STOS BYTE PTR ES:[EDI]
0045E990    49              DEC ECX
0045E991    74 02           JE SHORT 8d56547f.0045E995
0045E993    FFE3            JMP EBX
0045E995    90              NOP                                      ; (15)我们在这个第一处NOP的地方,按[F4]:执行到当前代码处。
                                                                     ; (16)我们向下看本段代码,看到连续全部的NOP结束的地方(会很长一段)。
0045E996    90              NOP
0045E997    90              NOP
0045E998    90              NOP
0045E999    90              NOP
0045E99A    90              NOP
0045E99B    90              NOP
0045E99C    90              NOP
0045E99D    90              NOP
0045E99E    90              NOP
0045E99F    90              NOP
0045E9A0    90              NOP
0045E9A1    90              NOP
0045E9A2    90              NOP
0045E9A3    90              NOP
0045E9A4    90              NOP
              .
              .
              .
0045ED2C    90              NOP                                      ; (17)这个就是连接NOP最后结束的地方。
0045ED2D    2833            SUB BYTE PTR DS:[EBX],DH                 ; (18)我们在这里按[F4]:执行到当前代码处。看看后边代码是不是改变了(我们看下边注解"19"所在的代码位置)。
0045ED2F    1D 4F4F4F4F     SBB EAX,4F4F4F4F
0045ED34    4F              DEC EDI
0045ED35    4F              DEC EDI
0045ED36    E5 37           IN EAX,37                                ; I/O 命令
0045ED38    B7 65           MOV BH,65
0045ED3A    59              POP ECX
0045ED3B    F4              HLT                                      ; 特权命令
0045ED3C    4D              DEC EBP
0045ED3D    43              INC EBX
0045ED3E    59              POP ECX
0045ED3F    BC 4D45AB4F     MOV ESP,4FAB454D
0045ED44    4F              DEC EDI
0045ED45    4F              DEC EDI
0045ED46    4F              DEC EDI
0045ED47    5E              POP ESI
0045ED48    90              NOP
              .
              .
              .
0045ED2D   /E9 F7040000     JMP 8d56547f.0045F229                    ; (19)这段下边就是改变的地方。[F8]跳。
0045ED32   |0000            ADD BYTE PTR DS:[EAX],AL
0045ED34   |0000            ADD BYTE PTR DS:[EAX],AL
0045ED36   |56              PUSH ESI
0045ED37   |51              PUSH ECX
0045ED38   |52              PUSH EDX
0045ED39   |53              PUSH EBX
0045ED3A   |8B7424 18       MOV ESI,DWORD PTR SS:[ESP+18]
0045ED3E   |8B4424 14       MOV EAX,DWORD PTR SS:[ESP+14]
0045ED42   |E8 00000000     CALL 8d56547f.0045ED47
0045ED47   |5D              POP EBP
0045ED48   |81ED 13574000   SUB EBP,8d56547f.00405713
0045ED4E   |0FB750 3C       MOVZX EDX,WORD PTR DS:[EAX+3C]
0045ED52   |8BD8            MOV EBX,EAX
0045ED54   |03C2            ADD EAX,EDX
0045ED56   |8B40 78         MOV EAX,DWORD PTR DS:[EAX+78]
0045ED59   |03C3            ADD EAX,EBX
0045ED5B   |8B50 24         MOV EDX,DWORD PTR DS:[EAX+24]
              .
              .
              .
0045F229    61              POPAD                                    ; (20)跳到这里。注解“20”以前的壳都是比较好分析的,而从这里开始,后边的代码壳会自己去利用创建线程的方式解密输入表,把主线程停止5秒后退出,然后利用壳解密输入表的线程去继续执行主程序的真正代码。这里就算你把所有的CALL都跟进度(包括系统的API),最后的结果都会是“不是程序跑飞,就是进程退出,无法执行了”。因为壳所创建的线程里使用了LoadLibraryA去查找解密输入表,所以我们如果是利用单步跟踪的方式时,就可以采用对LoadLibraryA下断的方法把创建的线程断下来,利用这种方法就可以跟到程序的真正入口点了。
                                                                     ; (21)其实所创建线程后的工作代码也在程序中的,而这个壳的失败之处就在于一切的分界线都是那么的明显(全部都可以用眼睛直接看出来),所以我们就可以采取简单的办法,向下大篇幅的翻代码,找到特征性的跳转代码(这个特征代码对于该病毒所使用的壳是唯一性的、不改变的,目前新变种的所有版本百试百灵)。特征代码请看第“24”注解处。
0045F22A    E8 D4FBFFFF     CALL 8d56547f.0045EE03
0045F22F    53              PUSH EBX
0045F230    E8 00000000     CALL 8d56547f.0045F235
0045F235    5B              POP EBX
0045F236    8943 EC         MOV DWORD PTR DS:[EBX-14],EAX
0045F239    5B              POP EBX
0045F23A    E8 00000000     CALL 8d56547f.0045F23F
0045F23F    5F              POP EDI
0045F240    8D7F E6         LEA EDI,DWORD PTR DS:[EDI-1A]
0045F243    E8 00000000     CALL 8d56547f.0045F248
0045F248    58              POP EAX
0045F249    8D80 EEFAFFFF   LEA EAX,DWORD PTR DS:[EAX-512]
0045F24F    AB              STOS DWORD PTR ES:[EDI]
0045F250    E8 00000000     CALL 8d56547f.0045F255
0045F255    58              POP EAX
0045F256    8B40 CC         MOV EAX,DWORD PTR DS:[EAX-34]
0045F259    E8 0D000000     CALL 8d56547f.0045F26B                   ; (22)这个CALL会去创建线程。
0045F25E    43              INC EBX
0045F25F    72 65           JB SHORT 8d56547f.0045F2C6
0045F261    61              POPAD
0045F262    74 65           JE SHORT 8d56547f.0045F2C9
0045F264    54              PUSH ESP
0045F265    68 72656164     PUSH 64616572
0045F26A    0050 E8         ADD BYTE PTR DS:[EAX-18],DL
0045F26D    0000            ADD BYTE PTR DS:[EAX],AL
0045F26F    0000            ADD BYTE PTR DS:[EAX],AL
0045F271    58              POP EAX
0045F272    8D80 C5FAFFFF   LEA EAX,DWORD PTR DS:[EAX-53B]
0045F278    FFD0            CALL EAX
0045F27A    60              PUSHAD
0045F27B    8BD0            MOV EDX,EAX
0045F27D    E8 00000000     CALL 8d56547f.0045F282
0045F282    5B              POP EBX
0045F283    8D9B B0FAFFFF   LEA EBX,DWORD PTR DS:[EBX-550]
0045F289    E8 00000000     CALL 8d56547f.0045F28E
0045F28E    59              POP ECX
0045F28F    8D89 83000000   LEA ECX,DWORD PTR DS:[ECX+83]
0045F295    E8 00000000     CALL 8d56547f.0045F29A
0045F29A    5F              POP EDI
0045F29B    8DBF 52080000   LEA EDI,DWORD PTR DS:[EDI+852]
0045F2A1    66:B8 2BD2      MOV AX,0D22B
0045F2A5    66:AB           STOS WORD PTR ES:[EDI]
0045F2A7    B0 68           MOV AL,68
0045F2A9    AA              STOS BYTE PTR ES:[EDI]
0045F2AA    8BC3            MOV EAX,EBX
0045F2AC    AB              STOS DWORD PTR ES:[EDI]
0045F2AD    66:B8 5252      MOV AX,5252
0045F2B1    66:AB           STOS WORD PTR ES:[EDI]
0045F2B3    B0 68           MOV AL,68
0045F2B5    AA              STOS BYTE PTR ES:[EDI]
0045F2B6    8BC1            MOV EAX,ECX
0045F2B8    AB              STOS DWORD PTR ES:[EDI]
0045F2B9    66:B8 5252      MOV AX,5252
0045F2BD    66:AB           STOS WORD PTR ES:[EDI]
0045F2BF    66:B8 FFD0      MOV AX,0D0FF
0045F2C3    66:AB           STOS WORD PTR ES:[EDI]
0045F2C5    B0 C3           MOV AL,0C3
0045F2C7    AA              STOS BYTE PTR ES:[EDI]
0045F2C8    8BC2            MOV EAX,EDX
0045F2CA    E8 00000000     CALL 8d56547f.0045F2CF
0045F2CF    5F              POP EDI
0045F2D0    8DBF 1D080000   LEA EDI,DWORD PTR DS:[EDI+81D]
0045F2D6    FFD7            CALL EDI
0045F2D8    61              POPAD
0045F2D9    60              PUSHAD
0045F2DA    E8 00000000     CALL 8d56547f.0045F2DF
0045F2DF    58              POP EAX
0045F2E0    8B80 42FFFFFF   MOV EAX,DWORD PTR DS:[EAX-BE]
0045F2E6    E8 06000000     CALL 8d56547f.0045F2F1
0045F2EB    53              PUSH EBX
0045F2EC    6C              INS BYTE PTR ES:[EDI],DX                 ; I/O 命令
0045F2ED    65:             PREFIX GS:                               ; 多余的前缀
0045F2EE    65:70 00        JO SHORT 8d56547f.0045F2F1               ; 多余的前缀
0045F2F1    50              PUSH EAX
0045F2F2    E8 00000000     CALL 8d56547f.0045F2F7
0045F2F7    58              POP EAX
0045F2F8    8D80 3FFAFFFF   LEA EAX,DWORD PTR DS:[EAX-5C1]
0045F2FE    FFD0            CALL EAX
0045F300    8BD8            MOV EBX,EAX
0045F302    68 88130000     PUSH 1388
0045F307    FFD3            CALL EBX                                 ; (23)主线程等待5秒。
0045F309    61              POPAD
0045F30A    2BC0            SUB EAX,EAX
0045F30C    40              INC EAX
0045F30D    83C4 04         ADD ESP,4
0045F310    C3              RETN
              .
              .
              .
0045F958  ^\0F85 63FFFFFF   JNZ 8d56547f.0045F8C1
0045F95E    68 00400000     PUSH 4000
0045F963    68 13050000     PUSH 513
0045F968    FFB5 1A050000   PUSH DWORD PTR SS:[EBP+51A]
0045F96E    FF95 4E040000   CALL DWORD PTR SS:[EBP+44E]
0045F974    E8 42000000     CALL 8d56547f.0045F9BB
0045F979    E8 29010000     CALL 8d56547f.0045FAA7
0045F97E    61              POPAD
0045F97F    EB 03           JMP SHORT 8d56547f.0045F984
0045F981    83C4 04         ADD ESP,4
0045F984  - E9 7F80FAFF     JMP 8d56547f.00407A08                    ; (24)这里就是特征码所在位置,很多壳在结束自己时都有这样明显的特征(记住这样代表性的特征很有好处的)。这里同样也是壳所创建输入表解密线程执行完毕后的跳转。
                                                                     ; (25)我们在这里按[F2]下断,然后[F9]运行。这样程序执行一段时间后(一段时间是在解密输入表),就会停在这里了。我们现在[F8]大跳。
                                                                     ; (26)注意:这里千万不要使用[F4]执行到该代码处,因为这里代码是以新建线程执行的,你[F4]执行后根本是停不下来的,直接就跑飞了,不信你试试。
0045F989    61              POPAD
0045F98A    C3              RETN
0045F98B    60              PUSHAD
0045F98C    8B85 FA040000   MOV EAX,DWORD PTR SS:[EBP+4FA]
0045F992    0340 3C         ADD EAX,DWORD PTR DS:[EAX+3C]
0045F995    66:0340 14      ADD AX,WORD PTR DS:[EAX+14]
0045F999    83C0 18         ADD EAX,18
0045F99C    8B58 0C         MOV EBX,DWORD PTR DS:[EAX+C]
0045F99F    039D FA040000   ADD EBX,DWORD PTR SS:[EBP+4FA]
0045F9A5    8B48 08         MOV ECX,DWORD PTR DS:[EAX+8]
0045F9A8    8D85 F2040000   LEA EAX,DWORD PTR SS:[EBP+4F2]
              .
              .
              .
00407A08      55            DB 55                                    ;  CHAR 'U' (27)看看这里是什么?我们[Ctrl+A]使OD重新分析代码。
00407A09      8B            DB 8B
00407A0A      EC            DB EC
00407A0B      6A            DB 6A                                    ;  CHAR 'j'
00407A0C      FF            DB FF
00407A0D      68            DB 68                                    ;  CHAR 'h'
00407A0E      50            DB 50                                    ;  CHAR 'P'
00407A0F      12            DB 12
00407A10      40            DB 40                                    ;  CHAR '@'
00407A11      00            DB 00
00407A12      68            DB 68                                    ;  CHAR 'h'
00407A13      20            DB 20                                    ;  CHAR ' '
00407A14      79            DB 79                                    ;  CHAR 'y'
00407A15      40            DB 40                                    ;  CHAR '@'
00407A16      00            DB 00
00407A17      64            DB 64                                    ;  CHAR 'd'
00407A18      A1            DB A1
00407A19      00            DB 00
00407A1A      00            DB 00
00407A1B      00            DB 00
00407A1C      00            DB 00
00407A1D      50            DB 50                                    ;  CHAR 'P'
00407A1E      64            DB 64                                    ;  CHAR 'd'
00407A1F      89            DB 89
00407A20      25            DB 25                                    ;  CHAR '%'
              .
              .
              .
00407A08  /.  55            PUSH EBP                                 ; (28)看到了吧?多么可爱的入口点啊。被作者隐藏的这么神秘,里边一定有好东西。我们DUMP后继续去分析吧,记得要修复输入表哦!(^_^)
00407A09  |.  8BEC          MOV EBP,ESP
00407A0B  |.  6A FF         PUSH -1
00407A0D  |.  68 50124000   PUSH 8d56547f.00401250
00407A12  |.  68 20794000   PUSH 8d56547f.00407920                   ;  JMP 到 msvcrt._except_handler3; SE 处理程序安装
00407A17  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
00407A1D  |.  50            PUSH EAX
00407A1E  |.  64:8925 00000>MOV DWORD PTR FS:[0],ESP
00407A25  |.  83EC 68       SUB ESP,68
00407A28  |.  53            PUSH EBX
00407A29  |.  56            PUSH ESI
00407A2A  |.  57            PUSH EDI
00407A2B  |.  8965 E8       MOV DWORD PTR SS:[EBP-18],ESP
00407A2E  |.  33DB          XOR EBX,EBX
00407A30  |.  895D FC       MOV DWORD PTR SS:[EBP-4],EBX
00407A33  |.  6A 02         PUSH 2
00407A35  |.  FF15 D8104000 CALL DWORD PTR DS:[4010D8]               ;  msvcrt.__set_app_type
00407A3B  |.  59            POP ECX
00407A3C  |.  830D 6CB84400>OR DWORD PTR DS:[44B86C],FFFFFFFF
00407A43  |.  830D 70B84400>OR DWORD PTR DS:[44B870],FFFFFFFF
00407A4A  |.  FF15 DC104000 CALL DWORD PTR DS:[4010DC]               ;  msvcrt.__p__fmode
00407A50  |.  8B0D 54B84400 MOV ECX,DWORD PTR DS:[44B854]
00407A56  |.  8908          MOV DWORD PTR DS:[EAX],ECX
00407A58  |.  FF15 E0104000 CALL DWORD PTR DS:[4010E0]               ;  msvcrt.__p__commode
00407A5E  |.  8B0D 50B84400 MOV ECX,DWORD PTR DS:[44B850]
00407A64  |.  8908          MOV DWORD PTR DS:[EAX],ECX
00407A66  |.  A1 E4104000   MOV EAX,DWORD PTR DS:[4010E4]
00407A6B  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
00407A6D  |.  A3 68B84400   MOV DWORD PTR DS:[44B868],EAX
00407A72  |.  E8 13010000   CALL 8d56547f.00407B8A
00407A77  |.  391D 90334000 CMP DWORD PTR DS:[403390],EBX
00407A7D  |.  75 0C         JNZ SHORT 8d56547f.00407A8B
00407A7F  |.  68 B9664000   PUSH 8d56547f.004066B9
00407A84  |.  FF15 E8104000 CALL DWORD PTR DS:[4010E8]               ;  msvcrt.__setusermatherr
00407A8A  |.  59            POP ECX
00407A8B  |>  E8 E8000000   CALL 8d56547f.00407B78
00407A90  |.  68 14204000   PUSH 8d56547f.00402014
00407A95  |.  68 10204000   PUSH 8d56547f.00402010
00407A9A  |.  E8 D3000000   CALL 8d56547f.00407B72                   ;  JMP 到 msvcrt._initterm
00407A9F  |.  A1 4CB84400   MOV EAX,DWORD PTR DS:[44B84C]
00407AA4  |.  8945 94       MOV DWORD PTR SS:[EBP-6C],EAX
00407AA7  |.  8D45 94       LEA EAX,DWORD PTR SS:[EBP-6C]
00407AAA  |.  50            PUSH EAX
00407AAB  |.  FF35 48B84400 PUSH DWORD PTR DS:[44B848]
00407AB1  |.  8D45 9C       LEA EAX,DWORD PTR SS:[EBP-64]
00407AB4  |.  50            PUSH EAX
00407AB5  |.  8D45 90       LEA EAX,DWORD PTR SS:[EBP-70]
00407AB8  |.  50            PUSH EAX
00407AB9  |.  8D45 A0       LEA EAX,DWORD PTR SS:[EBP-60]
00407ABC  |.  50            PUSH EAX
00407ABD  |.  FF15 F0104000 CALL DWORD PTR DS:[4010F0]               ;  msvcrt.__getmainargs
00407AC3  |.  68 0C204000   PUSH 8d56547f.0040200C
00407AC8  |.  68 00204000   PUSH 8d56547f.00402000
00407ACD  |.  E8 A0000000   CALL 8d56547f.00407B72                   ;  JMP 到 msvcrt._initterm
---------------------------------------------------------------------------------------------
总结:

    脱壳保存后,使用PEID查壳显示为“Microsoft Visual C++ 6.0”,但程序连接版本号是8.0,也不知道是壳改了文件体什么特征呢?还是PEID查壳误报呢?就不研究了,反正壳是脱掉了。
    这个病毒所使用的壳融合了很多技术,我只把壳的各个分界线简单介绍了下,壳里边的细节完全没有介绍就写了这么多文字,恐怖啊!实在没办法写详细的分析步骤了,大家慢慢看吧。
    脱壳真是一种享受啊,每脱一种比较强的壳,那种心理感觉,你们知道是什么样子的吗?追寻技术的颠峰,不断的飞跃,心灵的喜悦才是动力的源泉!
---------------------------------------------------------------------------------------------