首页
社区
课程
招聘
[原创]手脱加PESpin 0.3x - 0.4x壳的病毒
发表于: 2007-12-30 20:54 5966

[原创]手脱加PESpin 0.3x - 0.4x壳的病毒

2007-12-30 20:54
5966
////////////////////////////////////////////////////////////////////////////////////////////
文件名称:手脱加PESpin 0.3x - 0.4x壳的病毒
目标程序:病毒样本“Trojan/PSW.Agent.eoy”程序
操作环境:Windows XP-SP2
使用工具:Ollydbg 1.10版
编写作者:Coderui
编写时间:2007年11月23日
联系方式:coderui@163.com
作者博客:http://hi.baidu.com/coderui
---------------------------------------------------------------------------------------------
前言:
    个人感觉这个壳很有特点,虽然每天都重复着在做脱壳、分析病毒,但好久没写脱文发布了,今天就拿该病毒的壳作为例子和大家分享吧。

分析:
    脱壳前,使用PEID V0.93查壳,显示壳名为:“PESpin 0.3x - 0.4x -> cyberbob”。看了下这个程序有16个节段,还真不少。EP区段名分别为:“.text/.rdata/.data/.peII/pepack/xh520/xh520/.MaskPE/.MaskPE/520xh/520mmym/pepack/.pepack/mumaba/pepack/mmym520”,显示连接程序版本为:2.0 。

注意:
    如果大家分析的是应用软件加的壳,跑飞几次没什么关系。但如果分析的是病毒,那么就要千万小心了,因为有些未知病毒可能破坏力非常大的(比如PE感染型病毒)。不过最好还是养成仔细分析、细心调试的好习惯比较好(我喜欢真实环境,不太喜欢虚拟机,因为感觉不方便)。今天同样很幸运,依然只跟了一次,壳直接就脱掉了,哈哈!(^_^).
---------------------------------------------------------------------------------------------
手脱记录:
    (OD设置为不忽略任何异常。[F2]:下软断点、[F4]:执行到当前代码处、[F7]:单步步入、[F8]单步步过、[F9]运行。)
---------------------------------------------------------------------------------------------

0042C000 > 60              PUSHAD                                   ;OD载入后停在这里,单步[F8]向下走。
0042C001    90              NOP
0042C002    90              NOP
0042C003    90              NOP
0042C004    90              NOP
0042C005    90              NOP
0042C006    90              NOP
0042C007    5D              POP EBP
0042C008    90              NOP
0042C009    90              NOP
0042C00A    90              NOP
0042C00B    90              NOP
0042C00C    90              NOP
0042C00D    90              NOP
0042C00E    90              NOP
0042C00F    90              NOP
0042C010    90              NOP
0042C011    90              NOP
0042C012    90              NOP
0042C013    03DD            ADD EBX,EBP
0042C015    68 31504200     PUSH ae5a3650.00425031
0042C01A    C3              RETN                                     ;这里单步[F8]后会跳。
          .
          .
          .
00425031   ? 60            PUSHAD                                   ;跳到这里,单步[F8]向下走。
00425032   ? 03CB          ADD ECX,EBX
00425034   ? 53            PUSH EBX
00425035   . 52            PUSH EDX
00425036   . 53            PUSH EBX
00425037   . 33DA          XOR EBX,EDX
          .
          .
          .
00425063   . 3BC2          CMP EAX,EDX
00425065   . 5A            POP EDX
00425066   . 5A            POP EDX
00425067   . 11C8          ADC EAX,ECX
00425069   . 5B            POP EBX
0042506A   . 61            POPAD
0042506B   . 60            PUSHAD
0042506C   . E8 9AFFFFFF   CALL ae5a3650.0042500B                   ;到这里,使用[F7]步入进去。
          .
          .
          .
0042500B /$ B8 18000000   MOV EAX,18                               ;步入到这里后,单步[F8]向下走。
00425010 |. 64:8B18       MOV EBX,DWORD PTR FS:[EAX]
00425013 |. 83C3 30       ADD EBX,30
00425016 \. C3            RETN                                     ;这里单步[F8]后会跳。
          .
          .
          .
00425071   . 8BC3          MOV EAX,EBX                              ;跳转返回到CALL的下一行,单步[F8]向下走。
00425073   . 3E:8B00       MOV EAX,DWORD PTR DS:[EAX]
00425076   . 40            INC EAX
00425077   . E8 9BFFFFFF   CALL ae5a3650.00425017                   ;到这里,使用[F7]步入进去。
          .
          .
          .
00425017 /$ 40            INC EAX                                  ;步入到这里后,单步[F8]向下走。
00425018 |. 3E:0FB600     MOVZX EAX,BYTE PTR DS:[EAX]
0042501C |. C1E0 03       SHL EAX,3
0042501F |. 83C0 4F       ADD EAX,4F
00425022 |. 36:010424     ADD DWORD PTR SS:[ESP],EAX
00425026 \. C3            RETN                                     ;这里单步[F8]后会跳。
          .
          .
          .
004250CB   . 61            POPAD                                    ;跳转返回到这里,单步[F8]向下走。
004250CC   .- E9 7FEFFFFF   JMP ae5a3650.00424050                    ;这里单步[F8]后会跳。
004250D1      A2            DB A2
004250D2   . 02            DB 02
004250D3   . 54 6C         ASCII "Tl"
004250D5   . 73 41 6C 6C 6>ASCII "sAlloc",0
          .
          .
          .
00424050    60              PUSHAD                                   ;跳转到这里后,单步[F8]向下走。
00424051    8BD8            MOV EBX,EAX
00424053    52              PUSH EDX
00424054    1BC0            SBB EAX,EAX
00424056    51              PUSH ECX
00424057    85D2            TEST EDX,EDX
          .
          .
          .
004240A5    09C8            OR EAX,ECX
004240A7    59              POP ECX
004240A8    59              POP ECX
004240A9    59              POP ECX
004240AA    58              POP EAX
004240AB    61              POPAD
004240AC    60              PUSHAD
004240AD    E8 75FFFFFF     CALL ae5a3650.00424027                   ;到这里,使用[F7]步入进去。
          .
          .
          .
00424027    B8 18000000     MOV EAX,18                               ;步入到这里后,单步[F8]向下走。
0042402C    64:8B18         MOV EBX,DWORD PTR FS:[EAX]
0042402F    83C3 30         ADD EBX,30
00424032    C3              RETN                                     ;这里单步[F8]后会跳。
          .
          .
          .
004240B2    8BC3            MOV EAX,EBX                              ;跳转返回到CALL的下一行,单步[F8]向下走。
004240B4    3E:8B00         MOV EAX,DWORD PTR DS:[EAX]
004240B7    40              INC EAX
004240B8    E8 76FFFFFF     CALL ae5a3650.00424033                   ;到这里,使用[F7]步入进去。
          .
          .
          .
00424033    40              INC EAX                                  ;步入到这里后,单步[F8]向下走。
00424034    3E:0FB600       MOVZX EAX,BYTE PTR DS:[EAX]
00424038    C1E0 03         SHL EAX,3
0042403B    83C0 08         ADD EAX,8
0042403E    36:010424       ADD DWORD PTR SS:[ESP],EAX
00424042    C3              RETN                                     ;这里单步[F8]后会跳。
          .
          .
          .
004240C5    61              POPAD                                    ;跳转到这里后,单步[F8]向下走。
004240C6 ^ E9 36FFFFFF     JMP ae5a3650.00424001                    ;这里单步[F8]后会大跳。
004240CB    0000            ADD BYTE PTR DS:[EAX],AL
004240CD    0000            ADD BYTE PTR DS:[EAX],AL
          .
          .
          .
00424001    60              PUSHAD                                   ;大跳到这里,使用单步[F8]向下走。。
00424002    B8 00304200     MOV EAX,ae5a3650.00423000
00424007    8130 5A03ADC7   XOR DWORD PTR DS:[EAX],C7AD035A
0042400D    8128 C268ADC7   SUB DWORD PTR DS:[EAX],C7AD68C2
00424013    83C0 04         ADD EAX,4
00424016    3D 1B304200     CMP EAX,ae5a3650.0042301B
0042401B ^ 7C EA           JL SHORT ae5a3650.00424007               ;到这里后是回跳,我们不要按[F8]。
0042401D    61              POPAD                                    ;在这里按[F4],执行到当前代码处。
0042401E    68 00304200     PUSH ae5a3650.00423000                   ;[F8]单步步过
00424023    C3              RETN                                     ;单步[F8]跳。
          .
          .
          .
00423000    60              PUSHAD                                   ;跳转到这里后,单步[F8]向下走。
00423001    90              NOP
00423002    90              NOP
00423003    90              NOP
00423004    90              NOP
00423005    90              NOP
00423006    90              NOP
00423007    5D              POP EBP
00423008    90              NOP
00423009    90              NOP
0042300A    90              NOP
0042300B    90              NOP
0042300C    90              NOP
0042300D    90              NOP
0042300E    90              NOP
0042300F    90              NOP
00423010    90              NOP
00423011    90              NOP
00423012    90              NOP
00423013    03DD            ADD EBX,EBP
00423015    68 00204200     PUSH ae5a3650.00422000
0042301A    C3              RETN                                     ;这里单步[F8]后会跳。
0042301B    FF00            INC DWORD PTR DS:[EAX]
          .
          .
          .
00422000    60              PUSHAD                                   ;跳转到这里后,单步[F8]向下走。
00422001    9C              PUSHFD
00422002    E8 16000000     CALL ae5a3650.0042201D                   ;到这里,使用[F7]步入进去。
00422007    C3              RETN
          .
          .
          .
0042201D    58              POP EAX                                  ;步入到这里后,单步[F8]向下走。
0042201E    83E8 07         SUB EAX,7
00422021    8BF0            MOV ESI,EAX
00422023    8BF8            MOV EDI,EAX
00422025    83C6 08         ADD ESI,8
00422028    83C7 10         ADD EDI,10
0042202B    6A 00           PUSH 0
0042202D    56              PUSH ESI
0042202E    57              PUSH EDI
0042202F    6A 00           PUSH 0
00422031    E8 62000000     CALL ae5a3650.00422098                   ;到这里,使用[F7]步入进去。
          .
          .
          .
00422098    5F              POP EDI                                  ;步入到这里后,单步[F8]向下走。
00422099    5E              POP ESI
0042209A    50              PUSH EAX
0042209B    83C4 10         ADD ESP,10
0042209E    33C0            XOR EAX,EAX
004220A0    9D              POPFD
004220A1    61              POPAD
004220A2    E9 00000000     JMP ae5a3650.004220A7
004220A7    EB 02           JMP SHORT ae5a3650.004220AB
004220A9    CD 20           INT 20
004220AB    68 00104200     PUSH ae5a3650.00421000
004220B0    C3              RETN                                     ;这里单步[F8]后会跳。
004220B1    0000            ADD BYTE PTR DS:[EAX],AL
          .
          .
          .
00421000    55              PUSH EBP                                 ;跳转到这里后,单步[F8]向下走。
00421001    8BEC            MOV EBP,ESP
00421003    6A FF           PUSH -1
00421005    68 2A2C0A00     PUSH 0A2C2A
0042100A    68 38900D00     PUSH 0D9038
0042100F    64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
00421015    50              PUSH EAX
00421016    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
0042101D    58              POP EAX
0042101E    64:A3 00000000 MOV DWORD PTR FS:[0],EAX
00421024    58              POP EAX
00421025    58              POP EAX
00421026    58              POP EAX
00421027    58              POP EAX
00421028    8BE8            MOV EBP,EAX
0042102A    B8 00104000     MOV EAX,ae5a3650.00401000                ; ASCII "pepack"
0042102F    33C0            XOR EAX,EAX
00421031    90              NOP
00421032    68 00004200     PUSH ae5a3650.00420000
00421037    C3              RETN                                     ;这里单步[F8]后会跳。
          .
          .
          .
00420000    55              PUSH EBP                                 ;跳转到这里后,单步[F8]向下走。
00420001    8BEC            MOV EBP,ESP
00420003    83C4 F4         ADD ESP,-0C
00420006    83C4 0C         ADD ESP,0C
00420009    B8 00104000     MOV EAX,ae5a3650.00401000                ; ASCII "pepack"
0042000E    33C0            XOR EAX,EAX
00420010    68 EC2F4100     PUSH ae5a3650.00412FEC
00420015    C3              RETN                                     ;这里单步[F8]后会大跳。
          .
          .
          .
00412FEC    55              PUSH EBP                                 ;大跳到了这里,这里就是程序的真正入口点了,DUMP脱壳保存吧。
                                                                     ;看看下边的代码是多么熟悉啊,VC++6.0编译出来的PE结构就是这个样子的。
00412FED    8BEC            MOV EBP,ESP
00412FEF    6A FF           PUSH -1
00412FF1    68 F0A14100     PUSH ae5a3650.0041A1F0
00412FF6    68 78664100     PUSH ae5a3650.00416678
00412FFB    64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
00413001    50              PUSH EAX
00413002    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
00413009    83EC 10         SUB ESP,10
0041300C    53              PUSH EBX
0041300D    56              PUSH ESI
0041300E    57              PUSH EDI
0041300F    8965 E8         MOV DWORD PTR SS:[EBP-18],ESP
00413012    FF15 8CA04100   CALL DWORD PTR DS:[<&KERNEL32.GetVersion>; kernel32.GetVersion

总结:
    我们DUMP出来的程序使用PEID查壳,显示为“Microsoft Visual C++ 6.0”。
    这样说明我们把壳脱掉了,由于是病毒不用运行,所以就不修复和优化,OK完毕。
////////////////////////////////////////////////////////////////////////////////////////////

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 288
活跃值: (53)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
2
有朋友说我帖子发错地方了,请斑竹帮我把这个帖子转到『软件保护与分析』版可以吗?谢谢。
2008-1-2 09:48
0
游客
登录 | 注册 方可回帖
返回
//