首页
社区
课程
招聘
[讨论]这个是什么壳?哪位有兴趣的来看一下。
发表于: 2004-12-20 10:45 4586

[讨论]这个是什么壳?哪位有兴趣的来看一下。

2004-12-20 10:45
4586
有兴趣的来看看啊,这种壳该如何脱?
主程序下载地址:http://www.skycn.com/soft/2220.html
FI查为未知壳,peid普通扫描为未知壳,deep scan为:ASPack 2.x (without poly) -> Alexey Solodovnikov
OD载入:
选不继续分析,停在以下代码处
00432BA2 >  60              PUSHAD                  
00432BA3    E8 00000000     CALL SXRSGZHH.00432BA8
00432BA8    5D              POP EBP
00432BA9    81ED 06104000   SUB EBP,SXRSGZHH.00401006
00432BAF    8D85 56104000   LEA EAX,DWORD PTR SS:[EBP+401056]
00432BB5    50              PUSH EAX
00432BB6    64:FF35 0000000>PUSH DWORD PTR FS:[0]
00432BBD    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
00432BC4    CC              INT3                //按F8到这里,int3,NOP掉
00432BC5    90              NOP
00432BC6    64:8F05 0000000>POP DWORD PTR FS:[0]
00432BCD    83C4 04         ADD ESP,4
00432BD0    74 05           JE SHORT SXRSGZHH.00432BD7
00432BD2    75 03           JNZ SHORT SXRSGZHH.00432BD7
00432BD4    EB 07           JMP SHORT SXRSGZHH.00432BDD
00432BD6    59              POP ECX
00432BD7    8D9D 00104000   LEA EBX,DWORD PTR SS:[EBP+401000]
00432BDD    53              PUSH EBX
00432BDE    5F              POP EDI
00432BDF    2BFA            SUB EDI,EDX
00432BE1    57              PUSH EDI
00432BE2    8A03            MOV AL,BYTE PTR DS:[EBX]
00432BE4    3007            XOR BYTE PTR DS:[EDI],AL
00432BE6    43              INC EBX
00432BE7    47              INC EDI
00432BE8  ^ E2 F8           LOOPD SHORT SXRSGZHH.00432BE2         //向上的循环,如果直接在下面F4就直接终止进程了,一步一步的跟进这个循环可以看到壳在动态修改上面的代码,把我们刚才改为nop的还原为int3,再在下面F4,代码变成如下状态。

00432BEA    58              POP EAX
00432BEB    894424 1C       MOV DWORD PTR SS:[ESP+1C],EAX
00432BEF    61              POPAD
00432BF0    FFE0            JMP EAX
00432BF2    74 60           JE SHORT SXRSGZHH.00432C54
00432BF4    75 5E           JNZ SHORT SXRSGZHH.00432C54
00432BF6    EB 55           JMP SHORT SXRSGZHH.00432C4D
00432BF8    55              PUSH EBP
---------------------------------------------------------------------------
在00432BEA按F4代码变成如下:
00432BA2 >  60              PUSHAD
00432BA3    8888 888888D5   MOV BYTE PTR DS:[EAX+D5888888],CL
00432BA9    54              PUSH ESP
00432BAA    B9 BFAFEFEF     MOV ECX,EFEFAFBF
00432BAF    62E7            BOUND ESP,EDI                            ; 非法使用寄存器
00432BB1    B1 A1           MOV CL,0A1
00432BB3  ^ E1 E1           LOOPDE SHORT SXRSGZHH.00432B96
00432BB5    B1 D5           MOV CL,0D5
00432BB7    2A1F            SUB BL,BYTE PTR DS:[EDI]
00432BB9    1F              POP DS                                   ; 修正的段位寄存器
00432BBA    1F              POP DS                                   ; 修正的段位寄存器
00432BBB    1F              POP DS                                   ; 修正的段位寄存器
00432BBC    1F              POP DS                                   ; 修正的段位寄存器
00432BBD    7B F2           JPO SHORT SXRSGZHH.00432BB1
00432BBF    D7              XLAT BYTE PTR DS:[EBX+AL]
00432BC0    D7              XLAT BYTE PTR DS:[EBX+AL]
00432BC1    D7              XLAT BYTE PTR DS:[EBX+AL]
00432BC2    D7              XLAT BYTE PTR DS:[EBX+AL]
00432BC3    D7              XLAT BYTE PTR DS:[EBX+AL]
00432BC4    1B8B EF606565   SBB ECX,DWORD PTR DS:[EBX+656560EF]
00432BCA    65:             PREFIX GS:                               ; 多余的前缀
00432BCB    65:             PREFIX GS:                               ; 多余的前缀
00432BCC    65:E6 22        OUT 22,AL                                ; I/O 命令
00432BCF    26:52           PUSH EDX                                 ; 多余的前缀
00432BD1    57              PUSH EDI
00432BD2    2221            AND AH,BYTE PTR DS:[ECX]
00432BD4    CA CD94         RETF 94CD                                ; 远距返回
00432BD7    198484 94D4D487 SBB DWORD PTR SS:[ESP+EAX*4+87D4D494],EA>
00432BDE    D8F3            FDIV ST,ST(3)
00432BE0    095E D4         OR DWORD PTR DS:[ESI-2C],EBX
00432BE3    0231            ADD DH,BYTE PTR DS:[ECX]
00432BE5    06              PUSH ES
00432BE6    43              INC EBX
00432BE7    04 E2           ADD AL,0E2
00432BE9    F8              CLC
00432BEA    58              POP                        EAX                                  ; SXRSGZHH.00432BA3
//在这里F4,可以看到动态修改了代码。
00432BEB    894424 1C       MOV DWORD PTR SS:[ESP+1C],EAX
00432BEF    61              POPAD
00432BF0    FFE0            JMP EAX             //郁闷,刚开始我还以为这里就是OEP了,这里EAX=00432BA3,又从头开始了。。跳到EAX就终止了。
00432BF2    74 60           JE SHORT SXRSGZHH.00432C54
00432BF4    75 5E           JNZ SHORT SXRSGZHH.00432C54
00432BF6    EB 55           JMP SHORT SXRSGZHH.00432C4D
00432BF8    55              PUSH EBP

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (13)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
继续跟踪
或许是王建国的vfp&exeNc系列
2004-12-20 10:54
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢fly版主

我问过几个人他们都说是vfp&exeNc,可是我在
00432BF0    FFE0            JMP EAX     这里就跟不下去了,跳不过这个异常。。        
暂我也没有找到这个壳的有关文章。
2004-12-20 11:17
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
00432BC4    CC              INT3  //按F8到这里,int3,NOP掉
为何nop?
看SE句柄走
可以跟踪下去
程序后面应该还有几处Anti
2004-12-20 11:26
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢,我再试试。
啊,对,我刚开始没注意到堆栈区的se句柄
2004-12-20 12:02
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
OD载入后停在这里,
00432BA2 >  60              PUSHAD
00432BA3    E8 00000000     CALL SXRSGZHH.00432BA8
00432BA8    5D              POP EBP
00432BA9    81ED 06104000   SUB EBP,SXRSGZHH.00401006
00432BAF    8D85 56104000   LEA EAX,DWORD PTR SS:[EBP+401056]
00432BB5    50              PUSH EAX
00432BB6    64:FF35 0000000>PUSH DWORD PTR FS:[0]
00432BBD    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
00432BC4    CC              INT3                          //看堆栈区,
                                     //0012FF9C   0012FFE0  指针到下一个 SEH 记录
                                     //0012FFA0   00432BF8  SE 句柄,就到00432BF8吧,F4

00432BC5    90              NOP
00432BC6    64:8F05 0000000>POP DWORD PTR FS:[0]
00432BCD    83C4 04         ADD ESP,4
00432BD0    74 05           JE SHORT SXRSGZHH.00432BD7
00432BD2    75 03           JNZ SHORT SXRSGZHH.00432BD7
00432BD4    EB 07           JMP SHORT SXRSGZHH.00432BDD
00432BD6    59              POP ECX
00432BD7    8D9D 00104000   LEA EBX,DWORD PTR SS:[EBP+401000]
00432BDD    53              PUSH EBX
00432BDE    5F              POP EDI
00432BDF    2BFA            SUB EDI,EDX
00432BE1    57              PUSH EDI
00432BE2    8A03            MOV AL,BYTE PTR DS:[EBX]
00432BE4    3007            XOR BYTE PTR DS:[EDI],AL
00432BE6    43              INC EBX
00432BE7    47              INC EDI
00432BE8  ^ E2 F8           LOOPD SHORT SXRSGZHH.00432BE2
00432BEA    58              POP EAX
00432BEB    894424 1C       MOV DWORD PTR SS:[ESP+1C],EAX
00432BEF    61              POPAD
00432BF0    FFE0            JMP EAX
00432BF2    74 60           JE SHORT SXRSGZHH.00432C54
00432BF4    75 5E           JNZ SHORT SXRSGZHH.00432C54
00432BF6    EB 55           JMP SHORT SXRSGZHH.00432C4D
00432BF8    55              PUSH EBP                 //f4到这里再跟下去
00432BF9    8BEC            MOV EBP,ESP
00432BFB    53              PUSH EBX
00432BFC    8B45 10         MOV EAX,DWORD PTR SS:[EBP+10]
00432BFF    55              PUSH EBP
00432C00    8B98 B4000000   MOV EBX,DWORD PTR DS:[EAX+B4]
00432C06    8BEB            MOV EBP,EBX
00432C08    8D9D DA104000   LEA EBX,DWORD PTR SS:[EBP+4010DA]
00432C0E    8B0B            MOV ECX,DWORD PTR DS:[EBX]
00432C10    8988 A8000000   MOV DWORD PTR DS:[EAX+A8],ECX
00432C16    83EB 04         SUB EBX,4
00432C19    8B0B            MOV ECX,DWORD PTR DS:[EBX]
00432C1B    8988 AC000000   MOV DWORD PTR DS:[EAX+AC],ECX
00432C21    5D              POP EBP
00432C22    FF80 B8000000   INC DWORD PTR DS:[EAX+B8]
00432C28    33DB            XOR EBX,EBX
00432C2A    8958 04         MOV DWORD PTR DS:[EAX+4],EBX
00432C2D    8958 08         MOV DWORD PTR DS:[EAX+8],EBX
00432C30    8958 0C         MOV DWORD PTR DS:[EAX+C],EBX
00432C33    8958 10         MOV DWORD PTR DS:[EAX+10],EBX
00432C36    8160 14 F00FFFF>AND DWORD PTR DS:[EAX+14],FFFF0FF0
00432C3D    C740 18 5501000>MOV DWORD PTR DS:[EAX+18],155
00432C44    C700 17000100   MOV DWORD PTR DS:[EAX],10017
00432C4A    B8 00000000     MOV EAX,0
00432C4F    5B              POP EBX
00432C50    C9              LEAVE
00432C51    C2 1000         RETN 10           //到这里返回到 ntdll.77F96BA7,怎么跟到系统里面去了?我哪里出错了?
2004-12-20 12:52
0
雪    币: 213
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼上,第一次脱壳?
2004-12-20 13:27
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不是,以前只手脱过UPX等简单的壳,就是那个入门十八篇里的反正是全部都手脱过。。
2004-12-20 13:34
0
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
00432C2A    8958 04         MOV DWORD PTR DS:[EAX+4],EBX
00432C2D    8958 08         MOV DWORD PTR DS:[EAX+8],EBX
00432C30    8958 0C         MOV DWORD PTR DS:[EAX+C],EBX
00432C33    8958 10         MOV DWORD PTR DS:[EAX+10],EBX
00432C36    8160 14 F00FFFF>AND DWORD PTR DS:[EAX+14],FFFF0FF0
00432C3D    C740 18 5501000>MOV DWORD PTR DS:[EAX+18],155
00432C44    C700 17000100   MOV DWORD PTR DS:[EAX],10017

这里是填充 context 结构,注意一下regEip
CONTEXT STRUCT                    ; _
   ContextFlags  DWORD      ?      ;  |            +0
   iDr0          DWORD      ?      ;  |            +4
   iDr1          DWORD      ?      ;  |            +8
   iDr2          DWORD      ?      ;  >调试寄存器  +C
   iDr3          DWORD      ?      ;  |            +10
   iDr6          DWORD      ?      ;  |            +14
   iDr7          DWORD      ?      ; _|            +18
FloatSave    FLOATING_SAVE_AREA <>  ;浮点寄存器区 +1C~~~88h
    regGs        DWORD      ?      ;--|            +8C
    regFs        DWORD      ?      ;  |\段寄存器   +90  
    regEs        DWORD      ?      ;  |/           +94            
    regDs        DWORD      ?      ;--|            +98
    regEdi        DWORD      ?      ;____________  +9C
    regEsi        DWORD      ?      ;      |  通用 +A0
    regEbx        DWORD      ?      ;      |  寄   +A4
    regEdx        DWORD      ?      ;      |  存   +A8
    regEcx        DWORD      ?      ;      |  器   +AC
    regEax        DWORD      ?      ;______|__组_  +B0      
    regEbp        DWORD      ?      ;++++++++++++++++ +B4
    regEip        DWORD      ?      ;    |控制        +B8
    regCs        DWORD      ?       ;    |寄存        +BC
    regFlag      DWORD      ?       ;    |器组        +C0
    regEsp        DWORD      ?      ;    |            +C4
    regSs        DWORD      ?      ;++++++++++++++++  +C8
   ExtendedRegisters db MAXIMUM_SUPPORTED_EXTENSION dup(?)
CONTEXT ENDS

也就是 [eax+B8] 这个位置的值
2004-12-20 13:40
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
啊哦。。我还没有加密与解密这本书哦。。。哪里有电子版的吗?
2004-12-20 13:46
0
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我给你找到这个结构了,你看上面的回复
2004-12-20 13:55
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
呵呵,谢谢binglan212。。你和fly版主一样热心。。
2004-12-20 14:08
0
雪    币: 213
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
最初由 无奈无赖 发布
不是,以前只手脱过UPX等简单的壳,就是那个入门十八篇里的反正是全部都手脱过。。


那还是比较用功的,
不过看那些破文,
不如去看前辈们总结性的文章。
2004-12-20 15:21
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
d1y2j3兄,推荐几篇文章啊。。
2004-12-20 16:54
0
游客
登录 | 注册 方可回帖
返回
//