WEB开发网
开发学院网络安全黑客技术 压缩与脱壳-脱壳高级篇 上 阅读

压缩与脱壳-脱壳高级篇 上

 2007-01-12 20:11:51 来源:WEB开发网   
核心提示:1、认识Import表著者: [yAtEs] [Jamesluton@hotmail.com]译者:hying[CCG]有很多介绍PE文件的文章,但是我打算写一篇关于输入表的文章,压缩与脱壳-脱壳高级篇 上,因为它对于破解很有用,我想解释它的最好的方法是举一个例子,以便以后转换其它的偏移,如果你没找到输入表的虚拟偏移,

1、认识Import表

著者: [yAtEs] [Jamesluton@hotmail.com]

译者:hying[CCG]

有很多介绍PE文件的文章,但是我打算写一篇关于输入表的文章,因为它对于破解很有用。

我想解释它的最好的方法是举一个例子,你可以跟着我逐步深入,一步一步的思考,最后你将完全明白,我选择了一个我刚下载下来的小程序,它是用TASM编译的,有一个比较小的输入表,所以我想它应该是个不错的范例。

好了,让我们开始吧。首先我们得找到输入表,它的地址放在PE文件头偏移80处,所以我们用16进制编辑器打开我们的EXE文件,我们先得找到PE文件头的起始点,这很简单,因为它总是以PE,0,0开始,我们可以在偏移100处找到它。在一般的WIN32程序中文件头偏移被放在文件0X3C处,在那我们通常可看到00 01 00 00,由于数据存储时是低位在前,高位在后的,所以翻转过来实际就是00000100,就象前面我们说的。接下来我们就可以在PE文件中找到我们的输入表,100+80=180在偏移180处我们看到0030 0000,翻转一下,它其实应该是00003000,这说明输入表在内存3000处,我们必须把它转换成文件偏移。

一般来说,输入表总是在某个段的起始处,我们可以用PE编辑器来查看虚拟偏移,寻找3000并由此发现原始偏移。很简单的。打开我们看到:

-CODE 00001000 00001000 00000200 00000600
-DATA 00001000 00002000 00000200 00000800
.idata 00001000 00003000 00000200 00000A00
.reloc 00001000 00004000 00000200 00000C00

找一下,我们就发现.idata段的虚拟偏移是3000,原始偏移是A00,3000-A00=2600,我们要记住2600,以便以后转换其它的偏移。如果你没找到输入表的虚拟偏移,那么就找一下最接近的段。

1 2 3 4 5 6  下一页

Tags:压缩 脱壳 脱壳

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接