用户名: 密码: 验证码: 注册           网站地图 高级搜索 RSS订阅 收藏本站
您的位置:毒霸首页>安全防护>安全书籍>

对于FSG 1.33 的脱壳简单方案

[ 来源: | 更新日期:2008-5-17 00:36:36 | 评论 0 条 | 我要投稿 ]

工具: OLLYDBG 1.09b、Import REConstructor v1.4.2、PEiD0.8

目的: FSG 1.33本身

平台: Windows 2000 Server SP3  

PEiD看一下,不能识别是什么壳,OEP也找不到。

  用ollydbg加载fsg133.exe,程序停留在入口,F8单步执行:

  00533124 > BE A4014000 MOV ESI,fsg133.004001A4

  00533129 AD LODS DWORD PTR DS:[ESI]

  0053312A 93 XCHG EAX,EBX

  0053312B AD LODS DWORD PTR DS:[ESI]

  0053312C 97 XCHG EAX,EDI

  0053312D AD LODS DWORD PTR DS:[ESI]

  0053312E 56 PUSH ESI

  0053312F 96 XCHG EAX,ESI

  00533130 B2 80 MOV DL,80

  00533132 A4 MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]

  00533133 B6 80 MOV DH,80

  00533135 FF13 CALL DWORD PTR DS:[EBX]

  00533137 ^73 F9 JNB SHORT fsg133.00533132

  00533139 33C9 XOR ECX,ECX

  0053313B FF13 CALL DWORD PTR DS:[EBX]

  0053313D 73 16 JNB SHORT fsg133.00533155

  0053313F 33C0 XOR EAX,EAX

  00533141 FF13 CALL DWORD PTR DS:[EBX]

  00533143 73 1F JNB SHORT fsg133.00533164

  00533145 B6 80 MOV DH,80

  00533147 41 INC ECX

  00533148 B0 10 MOV AL,10

  0053314A FF13 CALL DWORD PTR DS:[EBX]

  0053314C 12C0 ADC AL,AL

  0053314E ^73 FA JNB SHORT fsg133.0053314A

  00533150 75 3C JNZ SHORT fsg133.0053318E

  00533152 AA STOS BYTE PTR ES:[EDI]

  00533153 ^EB E0 JMP SHORT fsg133.00533135

  00533155 FF53 08 CALL DWORD PTR DS:[EBX+8]

  …………

  很多地方都要跳回00533135,我们就找到最远的一个地址:

  0053318E 56 PUSH ESI

  0053318F 8BF7 MOV ESI,EDI

  00533191 2BF0 SUB ESI,EAX

  00533193 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>

  00533195 5E POP ESI

  00533196 ^EB 9D JMP SHORT fsg133.00533135

  00533198 8BD6 MOV EDX,ESI

  在00533198这一行上按F2下断,F9执行,拦截之后继续F8往下走:

  00533198 8BD6 MOV EDX,ESI ; fsg133.00532E3A

  0053319A 5E POP ESI

  0053319B AD LODS DWORD PTR DS:[ESI]

  0053319C 48 DEC EAX

  0053319D 74 0A JE SHORT fsg133.005331A9

  0053319F 79 02 JNS SHORT fsg133.005331A3

  005331A1 AD LODS DWORD PTR DS:[ESI]

  005331A2 50 PUSH EAX

  005331A3 56 PUSH ESI

  005331A4 8BF2 MOV ESI,EDX

  005331A6 97 XCHG EAX,EDI

  005331A7 ^EB 87 JMP SHORT fsg133.00533130

  005331A9 AD LODS DWORD PTR DS:[ESI]

  这里又跳回00533130了,同样的道理,在005331A9下断,拦截后F8:

  005331AF 56 PUSH ESI

  005331B0 FF13 CALL DWORD PTR DS:[EBX]

  005331B2 95 XCHG EAX,EBP

  005331B3 AC LODS BYTE PTR DS:[ESI]

  005331B4 84C0 TEST AL,AL

  005331B6 ^75 FB JNZ SHORT fsg133.005331B3

  005331B8 FE0E DEC BYTE PTR DS:[ESI]

  005331BA ^74 F0 JE SHORT fsg133.005331AC

  005331BC 79 05 JNS SHORT fsg133.005331C3

  005331BE 46 INC ESI

  005331BF AD LODS DWORD PTR DS:[ESI]

  005331C0 50 PUSH EAX

  005331C1 EB 09 JMP SHORT fsg133.005331CC

  005331C3 FE0E DEC BYTE PTR DS:[ESI]

  005331C5 -0F84 35DEECFF JE fsg133.00401000

  005331CB 56 PUSH ESI

  005331CC 55 PUSH EBP

  005331CD FF53 04 CALL DWORD PTR DS:[EBX+4]

  005331D0 AB STOS DWORD PTR ES:[EDI]

  005331D1 ^EB E0 JMP SHORT fsg133.005331B3

  在这里我们从右边的状态栏里面可以看到,程序在循环一系列的API名,我们可以特别注意一下

  005331C5 -0F84 35DEECFF JE fsg133.00401000

  很明显,软件在这里是恢复Import表,当完全恢复之后跳到OEP,所以这个程序OEP就是00401000,这也是很多壳采用的方法。

  剩下的事情很简单,DUMP出来之后用Import REConstructor修复,全都可以自动完成,程序执行正常。

  整理:程序有两个长时间的循环,跟踪时应该跳过;OEP地址出现在第二次循环结束之后。

  EOF====================================================================

  BTW:DUMP出来的程序居然有1.2M,而加壳后的文件只有65k:~) 不过这个软件好像对VC编写的程序特别挑剔,加壳后经常非法操作,对汇编程序的支持倒是很好。


Tags:DWORD,ESI,EBX,PTR,加壳,FSG,EAX,SHORT,LODS,脱壳
责任编辑:
您的评论
用户名:新注册) 密码: 匿名评论 [所有评论]

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为