首页
社区
课程
招聘
FSG 2.0 脱壳的问题
发表于: 2006-2-2 20:24 5239

FSG 2.0 脱壳的问题

2006-2-2 20:24
5239
有一文件用PEID探测为FSG 2.0壳,可我用FSG 2.0脱壳器脱壳后,文件却无法运行,手动脱壳用什么方法?请各位大侠赐教!

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
手动脱壳
2006-2-2 20:47
0
雪    币: 199
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我手动脱壳后该怎么修复?用哪些工具呢?
2006-2-2 21:49
0
雪    币: 199
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哪位能帮帮我?多谢!
2006-2-3 20:40
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
5
用这个修复ImportREC
2006-2-3 22:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
在网上看到许多关于fsg2.0的手动脱壳方法,如SFX,硬件访问断点等,但是这些教程只讲了一半,没有讲在脱壳后不能运行的情况下如何修复输入表,今天我就借一个小程序(crackme1.exe)说明一下。高手就不用看啦!!!
首先用OD载入crackme.exe,看到如下代码:
00400154 C>  8725 1C7E4000     xchg dword ptr ds:[407E1C],esp
0040015A     61                popad
0040015B     94                xchg eax,esp
0040015C     55                push ebp
0040015D     A4                movs byte ptr es:[edi],byte ptr ds:[esi]
两下f8看堆栈:
00407E28   004001DE  Crackme1.004001DE
00407E2C   00401000  Crackme1.00401000
00407E30 > 7C801D77  kernel32.LoadLibraryA
00407E34 > 7C80AC28  kernel32.GetProcAddress
然后在00407E2C   00401000  Crackme1.00401000处点右键选在反汇编窗口中跟随,这样我们就来到了这里:
00401000    .  0000            add byte ptr ds:[eax],al  ; /pModule
00401002    .  0000            add byte ptr ds:[eax],al   ; \GetModuleHandleA
00401004    ?  0000            add byte ptr ds:[eax],al
00401006    ?  0000            add byte ptr ds:[eax],al
然后按一下F4就可以看到如下代码:
00401000    .  6A 00           push 0  ; /pModule = NULL
00401002    .  E8 42020000     call Crackme1.00401249    ; \GetModuleHandleA
00401007    .  A3 10244000     mov dword ptr ds:[402410],eax
0040100C    .  6A 00           push 0                ; /lParam = NULL
到这就可以先脱壳了,入口地址点被修改为1000,脱壳后得到unpack.exe。但是双击不能运行,下面我们开始修复输入表,先看这一句:
00401002    .  E8 42020000     call Crackme1.00401249   ; \GetModuleHandleA
这一句可以简单的理解为读取输入表,那好我们来这00401249,看到以下代码:
00401219        $- FF25 6C304000   jmp dword ptr ds:[40306C]   ;  USER32.wsprintfA
0040121F $- FF25 70304000   jmp dword ptr ds:[403070] ;  USER32.DialogBoxParamA
00401225    $- FF25 74304000   jmp dword ptr ds:[403074]  ;  USER32.EndDialog
0040122B $- FF25 78304000   jmp dword ptr ds:[403078] ;  USER32.GetDlgItemTextA
00401231    $- FF25 7C304000   jmp dword ptr ds:[40307C]  ;  USER32.LoadIconA
00401237 $- FF25 80304000   jmp dword ptr ds:[403080]     ;  USER32.MessageBoxA
0040123D $- FF25 84304000   jmp dword ptr ds:[403084]    ;  USER32.SendMessageA
00401243 $- FF25 88304000   jmp dword ptr ds:[403088] ;  USER32.SetDlgItemTextA
00401249 $- FF25 90304000jmp dword ptr ds:[403090] ;  kernel32.GetModuleHandleA
0040124F FF25 94304000   jmp dword ptr ds:[403094]      ;  kernel32.ExitProcess
到了这一步我们就成功80%了,我们直接来到第一句所跳转的地址40306c,哈哈看到关键啦:
0040306B       00              db 00
0040306C    .  ADA8D177        dd USER32.wsprintfA
00403070    .  1CB1D377        dd USER32.DialogBoxParamA
00403074    .  5062D277        dd USER32.EndDialog
00403078    .  1EACD677        dd USER32.GetDlgItemTextA
0040307C    .  2413D277        dd USER32.LoadIconA
00403080    .  EA04D577        dd USER32.MessageBoxA
00403084    .  9AF3D277        dd USER32.SendMessageA
00403088    .  4AC9D377        dd USER32.SetDlgItemTextA
0040308C       FF              db FF
0040308D       FF              db FF
0040308E       FF              db FF
0040308F       7F              db 7F
00403090    .  29B5807C        dd kernel32.GetModuleHandleA
00403094    .  A2CA817C        dd kernel32.ExitProcess
00403098       FF              db FF
这就是我们想要的!!!!RVA=306c   大小为3098-306c=2c
现在我们可以先关掉OD啦,先休息一下!!!
现在我们运行crackme1.exe(不是unpack.exe),然后打开ImportREC1.6,选中crackme1.exe,在下面的OEP窗口中输入1000,点自动获取IAT,可以看到RVA为00003090,大小为00000004,这两个值都是错误的,我们要手动填入我们刚才得到的那两个值RAV=306c   大小为3098-306c=2c。然后点击获得输入表,可以看到上面的窗口中出现了有效:NO。我们点击显示无效的,就可以看到一个看到一个无效的指针,直接剪切掉(不是删除)!!!!哈哈,看到了吧,所有指针都有效啦。现在可以点击修复DUMP,选中我们刚才脱出来的unpack.exe就可以了。让我们试一下新生成的unpack_.exe吧。一切正常,收工,回家。
2006-2-5 11:14
0
雪    币: 202
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼上的能把crackme1.exe传上来吗,学习一下~~
2006-2-5 19:30
0
雪    币: 199
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
多谢liuruixin,感谢各位的支持!~
2006-2-5 20:39
0
游客
登录 | 注册 方可回帖
返回
//