浅谈脱壳中的Dump技术6
本帖最后由 whypro 于 2010-5-27 17:34 编辑和文件地址对齐(RA)。
科普一下:在文件中要节约空间,把数据紧密的存储在一切,而靠节表在load到内存中的时候,把在文件中的不同数据分别隐射到不空内存空间中,而不足的地方就用0填充。但是当我把这些数据从内存中完完整整的dump下来的时候,我们同样把这些0也dump了出来。所以我们要做的首先应该是调整节表,让他的RA=RVA。这样我们实际上做的就是把RA这个指针移动过了若干个0的空间,从而指向正确的数据。
下面我们还是用LoadPE打开它,把RA和SIZE修改过来吧!
这么样,回到桌面刷新一下就会发现图标又回来了吧!
好了,现在运行dumped.exe文件,还是不行的。对了,IAT还没有修复呢,我们停在OEP的时候文件的IAT已经全部释放了出来,而IAT只是对于本计算机的函数地址,每一个计算机都可能不一样。这样我们就要用ImportRECl来重新根据这个IAT地址反向构造一个输入表。OK,使用ImportREC修复了以后就可以运行了,不过dump出来的文件大出了好多。我们可以知道原因了。
1. 因为文件对齐的原因我们把残留的0也dump出来了。
2. 因为使用ImportREC他帮我们重新创建了一个区段存放输入表
所以,我们使用LordPE的ReBuiltPe其中的一个功能就是可以把这些残留的0,自动的删除,然后修改节表让他们对齐。
四.小结
经过了一番的讲解,大家应该知道,LordPE的dump功能大概是怎么运作的了吧,当然从我们的程序从还有很多的不足,从上面例子也能知道了。LordPE在dump下程序的同时,直接将节表中的RA=RVA ,RS=RVS。那么在以后我们将继续改进我们的dump程序,让它增加这些功能。万事开头难,如果你有足够的耐心读完了这一章那么下面的章节就很简单了,不要怕继续吧! 好好参透下
页:
[1]