能否FSG壳入门教程

极客

本文目录导读:

能否FSG壳入门教程

  1. 为啥我当初也被FSG壳“虐”得死去活来?
  2. 第一步:别急着动手!先给FSG壳“相个面”
  3. 第二步:寻找“光明顶”——ESP定律,永远的神!
  4. 第三步:修修补补,防止“翻车”
  5. 最后,我还想跟你说几句掏心窝子的话

别慌!FSG壳入门教程,手把手教你从“小白”到“老司机”(附避坑指南)

哎哟喂,最近后台好多朋友私信我,问得最多的就是:“能否FSG壳入门教程来一篇?”、“这FSG壳到底是个啥?难不难搞?”……行行行,别急别急,今天咱们就坐下来,泡杯茶,我把这事儿掰开了揉碎了跟你唠唠,先说好了,这篇不是那种冷冰冰的说明书,是我自己摸爬滚打出来的经验谈,保证让你看得有滋有味,还能学到真东西!

为啥我当初也被FSG壳“虐”得死去活来?

说实话,我第一次接触FSG壳的时候,心里那个崩溃啊,简直想砸电脑!这玩意儿跟那些流行的UPX壳完全不是一个路数,UPX是“公开透明”的好好先生,FSG壳呢?它就是个闷声搞事情的“神秘特工”,你看着程序运行得挺正常,但想动点手脚?门儿都没有!它讲究的是“小而精”,压缩率极高,但带来的麻烦就是,静态分析的时候代码巨乱,字符串全是乱码,看得我眼睛都快瞎了

但后来呢?当我冷静下来,跟着大神们的思路走,突然就“通了”!“天道酬勤”啊家人们!FSG壳其实没那么可怕,关键是你得摸清它的脾气,它跟别的壳最大的不同就是:它把“重定位”和“导入表”的处理方式搞得很另类,你想想,就像咱们玩游戏,BOSS不按常理出牌,但你抓住它的出招规律,堆装备硬刚,照样能过!你要问我能否FSG壳入门教程?我的回答是:绝对能,但咱们得用巧劲儿,不能瞎使劲儿

第一步:别急着动手!先给FSG壳“相个面”

我刚开始学的时候,最蠢的做法就是下载一个FSG壳加壳的程序,直接用OD(OllyDbg,一款调试神器)往上怼,结果自然是碰了一鼻子灰,要是你也这么干,我可要敲你脑袋啦!记住了,拿到一个加了壳的程序,第一步永远是“查壳”

用PEiD(一款查壳工具)或者ExeinfoPE(另一款更智能的查壳工具)扫一下,你就能看到“FSG 1.33”或者“FSG 2.0”的字样,这时候你会不会心里咯噔一下?嘿嘿,别慌!知道是FSG壳了,咱们心里就有底了,这就像医生看病,先得确诊,才能开药方呀!

我的小技巧:查壳的时候顺便看看程序的区段名,如果是“.fsg”或者“.data”这种特别紧凑的区段,那妥妥的就是FSG家族了,这时候你会不会有点小兴奋?觉得“我好像懂了呢”?对,就是要这股劲儿!

第二步:寻找“光明顶”——ESP定律,永远的神!

好了,现在咱们确定目标了,现在我问你,能否FSG壳入门教程里最核心的一招是什么?我跟你讲,不是脱壳机(虽然网上有FSG脱壳机,但对付新版或者修改过的就废了),而是咱们手动脱壳的精髓——ESP定律

这个方法啊,简直是给FSG这类壳量身定做的!为什么这么说?因为FSG壳在运行的时候,会用pushad保存现场,然后通过各种花指令来干扰你,只要它一popad回归现场,就等于自己把裤子脱了,咱们要做的,就是在它pushad执行之后,立刻对ESP寄存器下硬件断点

你别觉得玄乎,我跟你实操一遍,在OD里载入程序,停在入口点看到一排pushad的字节码(通常以60开头),你单步执行一步,让pushad生效,然后在命令行里输入hr esp(这是对ESP的4字节硬件访问断点),按下回车,再按F9运行。

哎呀妈呀!你会发现程序在某个奇怪的retn处停了下来,恭喜你!这里就是FSG壳的“毕业典礼”场地,也就是原始入口点(OEP)的附近!是不是感觉像坐过山车一样刺激?从深谷一下子跃升到峰顶,这时候你会不会觉得,“嗯?好像也没那么难嘛!”对啦,就是这股自信!

第三步:修修补补,防止“翻车”

停到那个关键位置后,再往上翻几行,你会看到像是jmp或者call到某个地址的指令,那里大概率就是真正的程序入口了,你选择那个地址,按F4(运行到选定位置),再次确认一下周围代码是不是看着“非常顺眼”——比如有push ebpmov ebp,esp这种典型的VC++或Delphi入口代码。

现在高兴吗?先别急着庆祝!你得把脱壳后的文件转储(dump)下来,用OD的插件(比如OllyDump)把当前进程的内存数据保存下来,但FSG壳很狡猾的是,它破坏了导入表(IAT),你要是直接dump完就扔,运行绝对会弹出一堆“内存不能为read”的提示,气死个人。

这时候就要用到 ImportRE(导入表修复神器)了,给它指定你刚刚dump出来的文件,在“OEP”处填上你找到的那个入口地址(比如00451000),点击“自动搜索IAT”,它要是能找到一堆API地址,你就偷着乐吧!点“获取导入表”,如果出现“有效”提示,最后点“修复转储文件”,生成一个新文件,你运行一下,要是没报错,那恭喜你!脱壳完美成功!

我还想跟你说几句掏心窝子的话

FSG壳入门这个过程,真的没少让我掉头发,特别是遇到加了反调试(IsDebuggerPresent)的奇葩变种壳时,ESP定律也会失灵,那咋办?还能咋办?放弃?不可能的! 你可以试试用“内存断点”或者“单步跟踪法”来对付它,方法总比困难多嘛。

家人们,我写这么多,不是在炫耀技术,而是想告诉你:遇到新东西,别先想着“能否”学会,先去动手试一试!就像我当初第一次成功脱掉FSG壳,那种成就感,比喝冰可乐还爽!要是你在看的过程中,脑子里出现任何疑问,欢迎在评论区留言“骚扰”我,看到必回!

当然啦,如果你觉得这篇文章不够过瘾,还想看更多关于手脱别的壳的教程(比如ASProtect或者Themida这种硬茬子),赶紧去我的往期文章里扒拉扒拉,保准让你学得停不下来!咱们下期见,拜拜您嘞!

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]