首页
社区
课程
招聘
[原创]手脱加双层壳的病毒(未知壳+UPX壳)
发表于: 2008-1-6 19:34 7042

[原创]手脱加双层壳的病毒(未知壳+UPX壳)

2008-1-6 19:34
7042
////////////////////////////////////////////////////////////////////////////////////////////
文件名称:手脱加双层壳的病毒(未知壳+UPX壳)
目标程序:双层壳、未知壳名、未知壳版本
操作环境:Windows XP-SP2
使用工具:Ollydbg 1.10版
编写作者:Coderui
编写时间:2007-10-31
联系方式:coderui@163.com
作者博客:14eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3S2A6i4K6u0W2j5X3q4A6k6s2g2Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3c8W2M7Y4g2A6

---------------------------------------------------------------------------------------------
前言:
    本次脱壳的样本程序是一个盗QQ号的木马(QQPass)程序,这个木马所加的壳计较常见,但遗憾的是我不知道这个壳的名字,有些可惜,哎!因为在分析病毒时偶尔常常总会遇见这个壳,所以产生了些兴趣,今天就脱出来写个笔记和大家分享下。

分析:
    脱壳前,使用PEID V0.93查壳,显示壳名为:“Nothing found *”。看了下这个程序有6个段,EP区段名分别为:“UPX0、UPX1、.rsrc、女人、.vmp0、.reloc”,初步判断该程序加了至少两层壳,里边有层UPX加密壳,最外边也许是加密壳、也许是压缩壳。

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

00416000 >  68 77774100     PUSH B64_372_.00417777                    ;病毒载入后停在这里,也就是“壳中壳”外边压缩壳的入口点,单步[F8]向下走。
00416005    E8 CE160000     CALL B64_372_.004176D8                    ;[F7]:单步步入。
0041600A    8B6D 00         MOV EBP,DWORD PTR SS:[EBP]
0041600D  - E9 F90F0000     JMP B64_372_.0041700B
00416012    90              NOP
00416013    90              NOP
00416014    90              NOP
00416015    90              NOP
00416016    90              NOP
00416017    90              NOP
00416018    8A06            MOV AL,BYTE PTR DS:[ESI]
0041601A    46              INC ESI
0041601B    8807            MOV BYTE PTR DS:[EDI],AL
0041601D    47              INC EDI
0041601E    90              NOP
0041601F    90              NOP
00416020    90              NOP
00416021    90              NOP
00416022    B8 004A4100     MOV EAX,B64_372_.00414A00
00416027    FFD0            CALL EAX
00416029    0000            ADD BYTE PTR DS:[EAX],AL
0041602B    0000            ADD BYTE PTR DS:[EAX],AL
          .
          .
          .
004176D8    51              PUSH ECX                                  ;进入后来到这里,单步[F8]向下走。
004176D9    50              PUSH EAX
004176DA    53              PUSH EBX
004176DB    54              PUSH ESP
004176DC    56              PUSH ESI
004176DD    9C              PUSHFD
004176DE    52              PUSH EDX
004176DF    57              PUSH EDI
004176E0    55              PUSH EBP
004176E1    68 00000000     PUSH 0
004176E6    8B7424 2C       MOV ESI,DWORD PTR SS:[ESP+2C]
004176EA    89E5            MOV EBP,ESP
004176EC    81EC C0000000   SUB ESP,0C0
004176F2    89E7            MOV EDI,ESP
004176F4    0375 00         ADD ESI,DWORD PTR SS:[EBP]
004176F7    8A06            MOV AL,BYTE PTR DS:[ESI]
004176F9    0FB6C0          MOVZX EAX,AL
004176FC    8D76 01         LEA ESI,DWORD PTR DS:[ESI+1]
004176FF  ^ FF2485 9C724100 JMP DWORD PTR DS:[EAX*4+41729C]          ;单步[F8]到这里后不要跳。
                                                                     ;我们脱壳时的习惯是“遇到回跳要先分析,争取不在循环里绕圈子”。
                                                                     ;这个回跳所跨的代码很长,从004176FF到00417099,而且里边还有N多的跳转,有些朋友可能看起来会头痛,呵呵。
                                                                     ;不过还好,我已经习惯了,不感觉头痛。如果头痛,谁来写脱文呢?嘿嘿。
                                                                     ;经过细致静态分析(用眼睛去看OD中的代码)回跳这一个段的代码,找到了一个需要下断点的可以地址。
                                                                     ;下边是从004176FF到0041700B的代码(因为从004176FF到00417099段里还有小回跳,所以扩充到了0041700B)。
                                                                     ;我做些大概的注解,有经验的一看就懂。大家要先从下边代码段中的004176FF处开始看,因为这里的起始点。
          .
          .
          .
0041700B    8D47 50         LEA EAX,DWORD PTR DS:[EDI+50]
0041700E    39C5            CMP EBP,EAX
00417010    0F87 E1060000   JA B64_372_.004176F7
00417016    89E2            MOV EDX,ESP
00417018    8D4F 40         LEA ECX,DWORD PTR DS:[EDI+40]
0041701B    29D1            SUB ECX,EDX
0041701D    8D45 80         LEA EAX,DWORD PTR SS:[EBP-80]
00417020    29C8            SUB EAX,ECX
00417022    89C4            MOV ESP,EAX
00417024    9C              PUSHFD
00417025    56              PUSH ESI
00417026    89D6            MOV ESI,EDX
00417028    8D7C08 C0       LEA EDI,DWORD PTR DS:[EAX+ECX-40]
0041702C    57              PUSH EDI
0041702D    89C7            MOV EDI,EAX
0041702F    FC              CLD
00417030    F3:A4           REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
00417032    5F              POP EDI
00417033    5E              POP ESI
00417034    9D              POPFD
00417035    E9 BD060000     JMP B64_372_.004176F7
0041703A    66:8B6D 00      MOV BP,WORD PTR SS:[EBP]
0041703E  ^ E9 C8FFFFFF     JMP B64_372_.0041700B
00417043    8B45 00         MOV EAX,DWORD PTR SS:[EBP]
00417046    83C5 02         ADD EBP,2
00417049    66:8B00         MOV AX,WORD PTR DS:[EAX]
0041704C    66:8945 00      MOV WORD PTR SS:[EBP],AX
00417050    E9 A2060000     JMP B64_372_.004176F7
00417055    8B45 00         MOV EAX,DWORD PTR SS:[EBP]
00417058    8A55 04         MOV DL,BYTE PTR SS:[EBP+4]
0041705B    83C5 06         ADD EBP,6
0041705E    8810            MOV BYTE PTR DS:[EAX],DL
00417060    E9 92060000     JMP B64_372_.004176F7
00417065    8B45 00         MOV EAX,DWORD PTR SS:[EBP]
00417068    8B00            MOV EAX,DWORD PTR DS:[EAX]
0041706A    8945 00         MOV DWORD PTR SS:[EBP],EAX
0041706D    E9 85060000     JMP B64_372_.004176F7
00417072    8B45 00         MOV EAX,DWORD PTR SS:[EBP]
00417075    8A4D 04         MOV CL,BYTE PTR SS:[EBP+4]
00417078    83ED 02         SUB EBP,2
0041707B    D3E0            SHL EAX,CL
0041707D    8945 04         MOV DWORD PTR SS:[EBP+4],EAX
00417080    9C              PUSHFD
00417081    8F45 00         POP DWORD PTR SS:[EBP]
00417084  ^ E9 82FFFFFF     JMP B64_372_.0041700B
00417089    8B45 00         MOV EAX,DWORD PTR SS:[EBP]
0041708C    8B55 04         MOV EDX,DWORD PTR SS:[EBP+4]
0041708F    83C5 08         ADD EBP,8
00417092    8910            MOV DWORD PTR DS:[EAX],EDX
00417094    E9 5E060000     JMP B64_372_.004176F7
00417099    80E0 3C         AND AL,3C                                ;004176FF除的JMP会大回跳到这里,但我们没跳。
0041709C    8B55 00         MOV EDX,DWORD PTR SS:[EBP]
0041709F    83C5 04         ADD EBP,4
.
.
.
00417207    98              CWDE
00417208    83ED 04         SUB EBP,4
0041720B    8945 00         MOV DWORD PTR SS:[EBP],EAX
0041720E  ^ E9 F8FDFFFF     JMP B64_372_.0041700B
00417213    89EC            MOV ESP,EBP
00417215    5A              POP EDX
00417216    5D              POP EBP
00417217    5F              POP EDI
00417218    5A              POP EDX
00417219    9D              POPFD
0041721A    5E              POP ESI
0041721B    59              POP ECX
0041721C    5B              POP EBX
0041721D    58              POP EAX
0041721E    59              POP ECX
0041721F    C3              RETN                                     ;上次按完[F4]后停在这里。现在我们按[F8]单步步过。
00417220    8B45 00         MOV EAX,DWORD PTR SS:[EBP]
00417223    8B55 04         MOV EDX,DWORD PTR SS:[EBP+4]
00417226    F7D0            NOT EAX
00417228    F7D2            NOT EDX
0041722A    21D0            AND EAX,EDX
0041722C    8945 04         MOV DWORD PTR SS:[EBP+4],EAX
0041722F    9C              PUSHFD
00417230    8F45 00         POP DWORD PTR SS:[EBP]
00417233    E9 BF040000     JMP B64_372_.004176F7
00417238    0FB606          MOVZX EAX,BYTE PTR DS:[ESI]
.
.
.
004176A1    83ED 04         SUB EBP,4
004176A4    8945 00         MOV DWORD PTR SS:[EBP],EAX
004176A7  ^ E9 5FF9FFFF     JMP B64_372_.0041700B
004176AC    8B45 00         MOV EAX,DWORD PTR SS:[EBP]
004176AF    8B55 04         MOV EDX,DWORD PTR SS:[EBP+4]
004176B2    8A4D 08         MOV CL,BYTE PTR SS:[EBP+8]
004176B5    83C5 02         ADD EBP,2
004176B8    0FADD0          SHRD EAX,EDX,CL
004176BB    8945 04         MOV DWORD PTR SS:[EBP+4],EAX
004176BE    9C              PUSHFD
004176BF    8F45 00         POP DWORD PTR SS:[EBP]
004176C2    E9 30000000     JMP B64_372_.004176F7
004176C7    8A06            MOV AL,BYTE PTR DS:[ESI]
004176C9    83ED 02         SUB EBP,2
004176CC    83EE FF         SUB ESI,-1
004176CF    66:8945 00      MOV WORD PTR SS:[EBP],AX
004176D3  ^ E9 33F9FFFF     JMP B64_372_.0041700B
004176D8    51              PUSH ECX
004176D9    50              PUSH EAX
004176DA    53              PUSH EBX
004176DB    54              PUSH ESP
004176DC    56              PUSH ESI
004176DD    9C              PUSHFD
004176DE    52              PUSH EDX
004176DF    57              PUSH EDI
004176E0    55              PUSH EBP
004176E1    68 00000000     PUSH 0
004176E6    8B7424 2C       MOV ESI,DWORD PTR SS:[ESP+2C]
004176EA    89E5            MOV EBP,ESP
004176EC    81EC C0000000   SUB ESP,0C0
004176F2    89E7            MOV EDI,ESP
004176F4    0375 00         ADD ESI,DWORD PTR SS:[EBP]
004176F7    8A06            MOV AL,BYTE PTR DS:[ESI]
004176F9    0FB6C0          MOVZX EAX,AL
004176FC    8D76 01         LEA ESI,DWORD PTR DS:[ESI+1]
004176FF  ^ FF2485 9C724100 JMP DWORD PTR DS:[EAX*4+41729C]          ;这里是起始点,这里会回跳到00417099处,我们不要跳,分析后知道需要在“0041721F”处下断点。
                                                                     ;不明白的可以看看上边的代码,我把一整段都复制上来了。
                                                                     ;本想做些简单注解的,但放弃了,注解会累死我的。
                                                                     ;大家不好意思了哦,在这里我就用一句话简单概括下吧。
                                                                     ;“经过分析,段内的N多跳转都是在这个段内部的,没有跳出段外,没也关键代码,只有‘0041721F’处的返回跳不知道到哪里,所以我们把它下段就OK了”。
                                                                     ;下完断点了,我们现在继续开始跟代码往下走,在00417706处按[F4]:执行到当前代码处。
00417706    8B45 00         MOV EAX,DWORD PTR SS:[EBP]               ;也就是这里按[F4]:执行到当前代码处。
                                                                     ;但程序并没有执行到这里,而是在上边的“0041721F”断点处停下了,过去看看。
          .
          .
          .
00416022    B8 004A4100     MOV EAX,B64_372_.00414A00                ;程序会从0041721F处飞到这里。继续按[F8]单步向下走。
00416027    FFD0            CALL EAX                                 ;这里是个函数,再看看下边代码像是数据段。没办法,只能先按[F7]:单步步入。因为要进去看看怎么回事。
00416029    0000            ADD BYTE PTR DS:[EAX],AL
0041602B    0000            ADD BYTE PTR DS:[EAX],AL
0041602D    0000            ADD BYTE PTR DS:[EAX],AL
0041602F    0000            ADD BYTE PTR DS:[EAX],AL
00416031    0000            ADD BYTE PTR DS:[EAX],AL
00416033    0000            ADD BYTE PTR DS:[EAX],AL
          .
          .
          .
00414A00   .  60            PUSHAD                                   ;近来后一看,好熟悉啊。后边的代码不就是UPX壳的入口嘛。
                                                                     ;在这里DUMP一次吧,外边的未知名壳已经被脱掉了,这里就是新壳的入口,也叫壳间的分界线。
00414A01   .  BE 00C04000   MOV ESI,B64_372_.0040C000
00414A06   .  8DBE 0050FFFF LEA EDI,DWORD PTR DS:[ESI+FFFF5000]
00414A0C   .  57            PUSH EDI
00414A0D   .  83CD FF       OR EBP,FFFFFFFF
00414A10   .  EB 10         JMP SHORT B64_372_.00414A22
00414A12      90            NOP
00414A13      90            NOP
00414A14      90            NOP
00414A15      90            NOP
00414A16      90            NOP
00414A17      90            NOP
00414A18   >  8A06          MOV AL,BYTE PTR DS:[ESI]
00414A1A   .  46            INC ESI
00414A1B   .  8807          MOV BYTE PTR DS:[EDI],AL
00414A1D   .  47            INC EDI
00414A1E   >  01DB          ADD EBX,EBX

总结:
    最外边的未知名壳现在已经成功脱掉了,脱壳前程序大小为:,脱壳后程序大小为:,比较后可以知道这个未知名壳为压缩壳。
    因为我们在这里DUMP了一次,是为了用PEID查壳(这个是我的习惯),查后显示壳名为:“UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo [Overlay]”,分析正确。
    现在不要关闭OD,因为我们还要继续去脱里边的UPX壳,那么我们就从00414A00地址处的UPX壳入口开始脱吧。
---------------------------------------------------------------------------------------------
手脱第二层壳(UPX壳):

00414A00   .  60            PUSHAD                                   ;UPX壳入口,按[F8]单步一次。
00414A01   .  BE 00C04000   MOV ESI,B64_372_.0040C000                ;在这里为了省事用ESP定律脱吧,因为快。
                                                                     ;当前ESP:0012FF7C,我们下硬断点“hr 0012FF7C”,[F9]运行。
00414A06   .  8DBE 0050FFFF LEA EDI,DWORD PTR DS:[ESI+FFFF5000]
00414A0C   .  57            PUSH EDI
00414A0D   .  83CD FF       OR EBP,FFFFFFFF
00414A10   .  EB 10         JMP SHORT B64_372_.00414A22
00414A12      90            NOP
00414A13      90            NOP
00414A14      90            NOP
00414A15      90            NOP
00414A16      90            NOP
00414A17      90            NOP
00414A18   >  8A06          MOV AL,BYTE PTR DS:[ESI]
00414A1A   .  46            INC ESI
00414A1B   .  8807          MOV BYTE PTR DS:[EDI],AL
00414A1D   .  47            INC EDI
00414A1E   >  01DB          ADD EBX,EBX
          .
          .
          .
00414B4B   .  8D4424 80     LEA EAX,DWORD PTR SS:[ESP-80]            ;运行后,停在这里。按[F8]单步向下走。
00414B4F   >  6A 00         PUSH 0
00414B51   .  39C4          CMP ESP,EAX
00414B53   .^ 75 FA         JNZ SHORT B64_372_.00414B4F              ;到这里有个小回跳,我们不跳。
00414B55   .  83EC 80       SUB ESP,-80                              ;我们在这里按[F4]执行到当前代码处,继续[F8]单步向下走。
00414B58   .^ E9 C8D4FFFF   JMP B64_372_.00412025                    ;这里是个跨段的大回跳,是飞出壳段,到程序真正入口的关键跳。[F8]跳。
00414B5D      00            DB 00
00414B5E      00            DB 00
00414B5F      00            DB 00
00414B60      784B4100      DD B64_372_.00414B78
00414B64      804B4100      DD B64_372_.00414B80
00414B68      84604000      DD B64_372_.00406084
          .
          .
          .
00412025   > /60            PUSHAD                                   ;跨段的大回跳会跳到这里,这里就是新程序的入口地址了。
                                                                     ;下边代码有些乱,因为这里是数据段嘛,OD没自动分析,那我们使用[CTRL+A]来使OD识别下吧。
00412026   ? |2BDA          SUB EBX,EDX
00412028   ? |85DA          TEST EDX,EBX
0041202A   . |03CA          ADD ECX,EDX
0041202C     |33            DB 33                                    ;  CHAR '3'
0041202D     |C8            DB C8
0041202E     |52            DB 52                                    ;  CHAR 'R'
0041202F     |1B            DB 1B
00412030     |D8            DB D8
00412031     |85            DB 85
00412032     |DB            DB DB
00412033     |8B            DB 8B
00412034     |D2            DB D2
00412035     |11            DB 11
00412036     |DA            DB DA
00412037     |52            DB 52                                    ;  CHAR 'R'
00412038     |51            DB 51                                    ;  CHAR 'Q'
          .
          .
          .
00412025   > /60            PUSHAD                                   ;识别后变成这个样子,一看就知道不是真正的程序入口,一定是后边还有壳或UPX壳没脱完。
                                                                     ;我们在这里再DUMP一次,使用PEID查查剩下的又是什么壳。
00412026   . |2BDA          SUB EBX,EDX
00412028   . |85DA          TEST EDX,EBX
0041202A   . |03CA          ADD ECX,EDX
0041202C   . |33C8          XOR ECX,EAX
0041202E   . |52            PUSH EDX
0041202F   . |1BD8          SBB EBX,EAX
00412031   . |85DB          TEST EBX,EBX
00412033   . |8BD2          MOV EDX,EDX
00412035   . |11DA          ADC EDX,EBX
00412037   . |52            PUSH EDX
00412038   . |51            PUSH ECX
00412039   . |8BCB          MOV ECX,EBX
0041203B   . |52            PUSH EDX
0041203C   . |21D8          AND EAX,EBX
0041203E   . |51            PUSH ECX
0041203F   . |53            PUSH EBX
00412040   . |51            PUSH ECX
00412041   . |52            PUSH EDX
00412042   . |50            PUSH EAX
00412043   . |52            PUSH EDX
00412044   . |50            PUSH EAX
00412045   . |50            PUSH EAX
00412046   . |52            PUSH EDX
00412047   . |09C2          OR EDX,EAX

总结:
    我比较喜欢写总结,呵呵。找到每个壳的分界线,并把他们DUMP出来是件很兴奋的事。
    因为我也忘记了剩下壳的部分是不是属于UPX的壳了,反正以前版本的UPX都没后边部分。
    那我这里就把它拉出来做另一个壳去脱了,谁叫它分界线这么清晰呢。
    也可能后边这部分是一个新壳,叫什么“混迂入口点壳”吧?
    反正我是忘记了,大家不要笑话我哦!只要到最后能把壳都脱掉就行,呵呵。
    这里DUMP出来的程序使用PEID查壳为:“Nothing found [Overlay] *”。
    现在不要关闭OD,因为我们还要继续去脱里边的混迂入口点壳,那么我们就从入口00412025地址处开始脱吧。
---------------------------------------------------------------------------------------------
手脱第三层壳(起混迂入口点作用的壳):

00412025   > /60            PUSHAD                                   ;这里是新入口,按[F8]单步向下走。
00412026   . |2BDA          SUB EBX,EDX
00412028   . |85DA          TEST EDX,EBX
0041202A   . |03CA          ADD ECX,EDX
0041202C   . |33C8          XOR ECX,EAX
0041202E   . |52            PUSH EDX
0041202F   . |1BD8          SBB EBX,EAX
00412031   . |85DB          TEST EBX,EBX
00412033   . |8BD2          MOV EDX,EDX
00412035   . |11DA          ADC EDX,EBX
00412037   . |52            PUSH EDX
00412038   . |51            PUSH ECX
          .
          .
          .
004120D3   .  5A            POP EDX                                  ;  ntdll.KiFastSystemCallRet
004120D4   .  61            POPAD
004120D5   .  60            PUSHAD
004120D6   .  E8 2BFFFFFF   CALL B64_372_.00412006                   ;会走很远,来到这第一个CALL的位置。[F7]跟进去。
004120DB   .  8BC3          MOV EAX,EBX
004120DD   .  3E:8B00       MOV EAX,DWORD PTR DS:[EAX]
004120E0   .  40            INC EAX
004120E1   .  E8 2CFFFFFF   CALL B64_372_.00412012
          .
          .
          .
00412006  /$  B8 18000000   MOV EAX,18                               ;进去后到这里,按[F8]单步向下走。
0041200B  |.  64:8B18       MOV EBX,DWORD PTR FS:[EAX]
0041200E  |.  83C3 30       ADD EBX,30
00412011  \.  C3            RETN                                     ;到这里[F8]返回。
          .
          .
          .
004120DB   .  8BC3          MOV EAX,EBX                              ;返回到这里,继续按[F8]单步向下走。
004120DD   .  3E:8B00       MOV EAX,DWORD PTR DS:[EAX]
004120E0   .  40            INC EAX
004120E1   .  E8 2CFFFFFF   CALL B64_372_.00412012                   ;到这里[F7]跟进去。千万别按[F8]单步步过,那么会把病毒跑起来的。
004120E6   .  45            INC EBP
004120E7   .  3F            AAS
004120E8   .  25 FFB999B9   AND EAX,B999B9FF
004120ED   .  0A8B 6261E965 OR CL,BYTE PTR DS:[EBX+65E96162]
004120F3   .  31FF          XOR EDI,EDI
004120F5   .  FF00          INC DWORD PTR DS:[EAX]
004120F7   .  0000          ADD BYTE PTR DS:[EAX],AL
          .
          .
          .
00412012  /$  40            INC EAX                                  ;进去后到这里,按[F8]单步向下走。
00412013  |.  3E:0FB600     MOVZX EAX,BYTE PTR DS:[EAX]
00412017  |.  C1E0 03       SHL EAX,3
0041201A  |.  83C0 0A       ADD EAX,0A
0041201D  |.  36:010424     ADD DWORD PTR SS:[ESP],EAX
00412021  \.  C3            RETN                                     ;到这里[F8]返回。
00412022      F4            DB F4
          .
          .
          .
004120F0   ?  61            POPAD                                    ;返回到这里,继续按[F8]单步向下走。
004120F1   ?- E9 6531FFFF   JMP B64_372_.0040525B                    ;又是一个跨段的大跳,是飞出壳段,到程序真正入口的关键跳。[F8]跳。
004120F6   ?  0000          ADD BYTE PTR DS:[EAX],AL
004120F8   ?  0000          ADD BYTE PTR DS:[EAX],AL
004120FA   ?  0000          ADD BYTE PTR DS:[EAX],AL
          .
          .
          .
0040525B    55              PUSH EBP                                 ;程序飞到了这里,后边一看就知道是真正的程序了,这就是趁许真正的入口点了。
                                                                     ;我们剩下的就是DUMP、修复和优化了。由于是病毒不用运行,所以就不修复和优化,OK完毕。
0040525C    8BEC            MOV EBP,ESP
0040525E    B9 17000000     MOV ECX,17
00405263    6A 00           PUSH 0
00405265    6A 00           PUSH 0
00405267    49              DEC ECX
00405268  ^ 75 F9           JNZ SHORT B64_372_.00405263
0040526A    51              PUSH ECX
0040526B    53              PUSH EBX
0040526C    56              PUSH ESI
0040526D    57              PUSH EDI
0040526E    B8 F3514000     MOV EAX,B64_372_.004051F3
00405273    E8 BBE9FFFF     CALL B64_372_.00403C33
00405278    33C0            XOR EAX,EAX

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

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢
呵呵,看了这个我也手动脱了一个UPX的壳----UEDIT32
2008-1-9 01:09
0
雪    币: 288
活跃值: (53)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
3
恭喜哦!
2008-1-9 08:35
0
游客
登录 | 注册 方可回帖
返回