【脱文作者】 JIVI(牛粪) JIVI不是英文名,我是严重的爱国主义分子 【使用工具】 Peid 0.94,OllyDbg(OllyIce),ImportRec,LordPE 【脱壳平台】 WinXP 【软件名称】 SPY4WIN 【软件简介】 一个用于分析窗口的好工具,妖哥(CCRUN)的大作 【软件大小】 346KB 【加壳方式】 PECompact 2.x -> Jeremy Collake 【脱壳声明】今天在妖哥的群里有人提到了妖哥的SPY4WIN。于是下了来,感觉很不错,查窗口很方便,信息也很详细,的确是一个不错的帮手,尤其其中有一个分析IE的功能很是吸引我,于是就想反反,研究一下他的代码。看看是怎么实现,还是那句话,说做就做。另外声明一下菜鸟写菜文,高手莫笑。再另外本文只讲脱壳,不讲分析部分,为什么不讲分析部分呢,那是因为我还没分析出来哈,目前成果就只是猜测可能使用了SHDOCVW_TLB里的CONTROLINTERFACE或者其它的什么接口,他的这部分代码在脱了主程序后才发现在另外一个DLL里,当时立马晕倒。再再另外帮妖哥做个广告 程序下载地址 http://www.ccrun.com/spy4win 再再再另外。。。。。。。开始。 第一步,用PEID查壳,壳是PECompact 2.x -> Jeremy Collake。步骤略(~汗) 第二步,载入OD 停在入口点 入口点 00401468 这里特别说明一下 看一下寄存器 ESP 0012FFC4 (不同的机器可能不一样,大牛Lenus在他的广义ESP定律这篇文章里写的很清楚) 下硬件写断点 ,OD命令行里输入 HW 0012FFC0 (为什么这里在12FFCO设断,Lenus写的也很详细) 如果不明白,请参见 Lenus 的 <<寻找真正的入口(OEP)--广义ESP定律>> PECompact好象没有什么反调试,我把HideOD和PhatOm 的隐藏选项全部去掉了,程序仍然可以在调试状况下正常运行。不过事实是否如此,我就不太清楚了,反正这个程序是这样的。 按F9. 断在0040146E。请参照第一幅图,就在入口点的下面两行。SEH不用管, 继续F9 断在这里。 是不是有点眼熟哈,是不是很象那个传说中的PUSHAD哈,虽说我们现在使用的是ESP定律,不过看到这个家伙都出现了,还是不能不把握一下的,好的,我们不防往下看看,向下翻两屏,来到这里。 看到那一堆POP了没有,这个传说中和刚才那一堆PUSH对应的貌似POPAD的家伙也出现了。看图中选中的那一行,JMP EAX,貌似非常象要跳到OEP了,貌似胜利就在眼前了,不禁一阵兴奋,哈哈,真是众里寻他千百度,得来全不费工夫(话外音:文盲,绝对一文盲)。 压住兴奋,还是让我们先来确认一下,看看EAX里究竟是虾米东西,是不是真的就是那个传说中的OEP吧。 在图中的那行F2设断,F9运行到此处。 这时再看寄存器。 EAX 00401468 不对,这丫好象有点眼熟,绝对在哪见过。昏的了,这丫这不就是OD载入的时候那个地址吗。 神啊,我的命不是真的那么苦吧。不会搞了半天,又要跑回去了吧。TNND不是给OD忽悠了吧。 这半天工夫(其实就两个F9)真的算是白费了吗,实在有点不甘心啊。 不行,还是继续跟跟看看放心,要不然死也不会瞑目了 F8,跳到 00401468 图如下。 好象又有点不对头,代码和开始的好象不一样,比较第一幅图(当然我是CTRL+F2确认的哈)果然不一样。 顺便瞅瞅数据窗口。 Borland C++ ,看来运行到这至少是 壳已经解压完了。不管了,死马当活马医吧。就当00401468是OEP了。 至此开始进入第三步了。 祭出LordPE. 选中SPY4WIN,右键,完整转存。选项采用默认即可。 我们把他存在原程序的目录,采用默认文件名dumped.exe。 用PEID查dumped.exe 暴蓝出来了,看来有戏。运行一下。应用程序正常初始化失败。 好的,正式进入第四步,开始修复IAT。表给我讲你不知道IAT是虾米东西,如果真不知道,好的,严重建议你回家喂猪,这年头猪肉十几块钱一斤,是个高薪的产业。鉴定完毕。继续。 ImportRec,手动脱壳的宝贝。 选中SPY4WIN。“看图的下方,IAT Infos needed 找到没“,”没找到呢“。”那就赶紧找啊,你丫,还在这里啰嗦“。”嗯,已经找到了“。”好的,那么我们继续,看到OEP没“,”(~大汗),我严重的认为你有种族歧视倾向“,”驳回意见,继续.这个框里已经帮你填好了00001468,所以就不用手动填了”。”等等,又给你搞糊涂了,刚才假定的OEP不是00401468吗,怎么变成00001468了,那个4哪去了”。”你丫,表逼我野蛮哦。算了,还是给你指条路吧,BAIDU或GOOGLE 搜索RVA。N多人会告诉你为什么,这里就不多做说明了”。 点一下IAT AutoSearch 。 RVA和SIZE 是不是变了。在这里就不切图了,自己看看你的IMPORTREC就可以了。警告点的时候会提示一下的,不要管它,直接点确定。ImportRec根据OEP已经帮你计算出了IAT 的RVA 和 SIZE。当然如果计算不出来或者是错的,那就要手动确定,然后手工输入下面的RVA和SIZE框框里,当然这里不需要,好的,做完了以上,点一下Get Imports .看看上图那个空白框框。是不是全是DLL的列表了。 看来原来假定的OEP,可以确定是真的OEP了。 到了这里,基本上就算完成了。只需再点一下 ImportRec 上的FixDump 选中刚才用LordPE dump出来的那个 dumped.exe. 好了,检查一下战果吧。 回到存放dumped.exe的目录,是不是多出来一个dumped_.exe.这个就是improtRec Fixdump 后创建的文件,运行一下。SPY4WIN窗口出来。一切OK,不放心再次查下壳,还是刚才那个暴蓝。再看一下大小。1.13M 看来脱了无疑。 强烈再声明:我是一个脱壳超超新手,目前只脱过这一个PECompact的壳,所以不能确认你是否也能用这种方法脱同样的壳。写这篇的目的是为了分享我对手动脱壳几步的理解哈。另外有错漏之处,望请高手指正,不胜感激涕零。。。。。。附件: -spy4win.rar
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!