-
-
[求助]问个很平常的问题--ImportPEC的脱壳原理
-
发表于:
2009-11-5 21:28
5646
-
[求助]问个很平常的问题--ImportPEC的脱壳原理
Import REConstructor可以从杂乱的IAT中重建一个新的Import表(例如加壳软件等),它可以重建Import表的描述符、IAT和所有的ASCII函数名。
在运行Import REConstructor之前,必须满足如下条件:
1) 目标文件己完全被Dump到另一文件;
2) 目标文件必须正在运行中;
3) 事先要找到真正的入口点(OEP);
4) 最好加载IceDump,这样建立的输入表较少存在跨平台的问题。
(5)在左下角填上应用程序的真正入口点偏移(OEP);
关于这个OEP,我真是百思不得其解,为了重新得到一个Import表要这个OEP信息干吗?
Import表不是只与PE头相关么,仔细想了一下,OEP只可能是提示要对code段进行反汇编,也就是说ImpREC从OEP的代码段开始依次扫描碰到了哪些指令,一旦发现有call指令并没有call本代码段中的地址,而是其他段的地址,便可以得出这是在call一个API函数,一旦发现代码段中有很多call指令都在call一个地方,这是我们可以猜测这个地方可能是IAT,但是因为没有Import表的信息指向这里,系统不承认这里是IAT,我们只有重建一个import表,让其引出指针指向这块IAT,系统在装载的时候才会往这里填充从dll中引入的函数地址。但是现在问题是,如何确定某次对这里的call究竟是对哪个API的调用,从而构建相应函数的import表?这么做起来也未免太复杂了吧
不晓得我的猜测是否有一定道理还是dump的文件中提示了更多可用的信息,可以更快捷地构建该Import表。希望哪位懂得该ImportREC建表原理的同志跟我介绍一下,表示感谢!
另外,若能给我提示一下哪儿有ImportREC源代码的下载地址更好。
[注意]APP应用上架合规检测服务,协助应用顺利上架!