首页
社区
课程
招聘
[原创]广义ESP定律秒杀PECompact
发表于: 2008-4-21 13:39 9020

[原创]广义ESP定律秒杀PECompact

2008-4-21 13:39
9020

【脱文作者】 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


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (10)
雪    币: 391
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
秒杀~~~~~~~~~~~~看起来很厉害啊~哈哈    学习
2008-4-21 15:25
0
雪    币: 226
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
运气很重要哈。
2008-4-21 19:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
呵呵,不错不错。。下次在出个狭义ESP定律秒杀!
2008-4-22 07:15
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
依样学习了一下. 不错!
2008-4-24 16:54
0
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
图文的。,。。。。。。。。。。很好的文章
2008-4-24 20:09
0
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
别的不说,文章好,就是真的好。。
2008-6-8 19:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
支持开源并学习
2008-6-10 09:52
0
雪    币: 244
活跃值: (40)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
支持一下。。。。。
2008-6-10 18:21
0
雪    币: 1263
活跃值: (4337)
能力值: ( LV5,RANK:69 )
在线值:
发帖
回帖
粉丝
10
学习下     不过是否有运气的成分啊    继续学习

2008-6-17 21:06
0
雪    币: 166
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
讲得很细,我照着做了一下,完全一样的结果.好东西.好兄弟.
2008-7-12 00:46
0
游客
登录 | 注册 方可回帖
返回
//