首页
社区
课程
招聘
[旧帖] [原创]新手脱FSG2.0 0.00雪花
发表于: 2011-10-21 22:43 1750

[旧帖] [原创]新手脱FSG2.0 0.00雪花

2011-10-21 22:43
1750
我觉得脱FSG2.0很有意思,在这里把思路写一写,和像我一样的新手共同学习。
------------------------------
目标程序:一个FSG2.0脱壳练习程序
系统平台:Windows 2003 R2
应用工具:PEID0.95,OllyDBG,LoadPE,ImportREC
------------------------------
PEID查壳:FSG 2.0 -> bart/xt
------------------------------
OD载入:

00400154 >  8725 BC365C00   xchg    dword ptr [5C36BC], esp
0040015A    61              popad
0040015B    94              xchg    eax, esp
0040015C    55              push    ebp

单步跟踪:

004001CF   /75 03           jnz     short 004001D4
004001D1   |FF63 0C         jmp     dword ptr [ebx+C]
004001D4   \50              push    eax
004001D5    55              push    ebp
004001D6    FF53 14         call    dword ptr [ebx+14]
004001D9    AB              stos    dword ptr es:[edi]
004001DA  ^ EB EE           jmp     short 004001CA
004001DC    33C9            xor     ecx, ecx
004001DE    41              inc     ecx

打破004001DA向上的跳转,F4到后面的代码,程序就运行起来了。Ctrl+F2重新加载单步。发现在单步的过程中并没有走到未实现的跳过004001DA的跳转,记得在脱Aspack壳时遇到无法向下跳转时有连续两个向上实现的跳转,跳上去后再接着单步跟踪,但是这里也没有发现这样的跳转。注意看这几行代码,004001CF这行向下跳是实现的,但是这句后面一句的jmp却没有实现,于是在单步到004001CF,在下一行004001D1处F4。

004001D1  - FF63 0C         jmp     dword ptr [ebx+C]                ; 脱FSG2_0.004A2ADC

发现实现了一个很大的跳转,F8到OEP。

004A2ADC    E8 B6A40000     call    004ACF97
004A2AE1  ^ E9 16FEFFFF     jmp     004A28FC
004A2AE6    CC              int3
004A2AE7    CC              int3

脱壳修复后发现不能运行,需要手动输入IAT信息。
在刚刚未关闭的OD中把代码往后翻,有这样一个call:

004A2C2F    FF15 E4724C00   call    dword ptr [4C72E4]      ; kernel32.LCMapStringW

于是在数据窗口中Ctrl+G,输入004C72E4,(选择Hex显示)往上翻,找到全为0的行:

004C6FE4  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
004C6FF4  00 00 00 00 00 00 00 00 00 00 00 00 E1 DD F5 77  ............彷鮳
004C7004  86 E0 F4 77 17 6A F4 77 FA F4 F4 77 D7 EB F3 77  嗋魒j魒魒纂體

计算第一个不为0的数据地址为004C7000,这个地址减去基址00400000的结果C7000就为ImportREC中要填入的RVA。然后在OEP处填上跟踪得到的A2ADC,在Size处直接填入1000。Get Imports,Show Invalid发现有很多无效指针。不要急,右键Trace Level1 (Disasm)后还是有无效指针,再把无效指针剪切掉Cut Trunks。
Fix Dump保存,正常运行。

附件是练习程序。

[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
呵呵 硬是没有看懂啊
2011-10-22 00:09
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看不懂,真难学
2011-10-22 21:12
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
找简单的看看。
2011-10-22 22:01
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习了下,是啊 ,2.0的把iat里面填了些乱东西,1.3不用这个,很实用的。
2012-2-12 12:10
0
雪    币: 380
活跃值: (103)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
6
好帖啊,收藏了,说的很详细,照着也脱壳成功了,谢谢!
2012-2-12 12:58
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
虽然我也是新手,但是这个壳也是比较简单的。只是我不会修复idt。楼主对pe格式也挺了解的
2012-2-12 14:16
0
雪    币: 114
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
好帖啊,收藏了,说的很详细
2013-1-28 22:10
0
雪    币: 1208
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
好帖啊,收藏了,说的很详细
2013-10-10 15:42
0
游客
登录 | 注册 方可回帖
返回
//