这几天心血来潮想研究一下PE格式文件,因为我们知道PE文件其实是Windows离不开的一个文件格式,理解了这个格式对以后也有帮助。PE格式文件修复过程。一般来说,正常的PE结构PE头和PE体两部分组成。其中,PE头DOS头、DOS存根、NT头、节区头几部分,余下的节区合称为PE体。PE是Windows可执行文件总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关。意思是,即使一个文件没有任何扩展名,也可以是可执行文件。
理论讲PE有很多结构体,结构体里面又包含很多字节,如果全部记忆下来恐怕也需要很长时间,不如直接就研究下实际修复PE格式文件的过程。实际上有用的头部字节就几个。首先是MZ这两个字,然后,注意到在3C偏移处需要存一个dos头的变量e_lfanew,这个值指示了程序入口。
话不多说,直接开始实例练习,打开一个dll文件分析,这个dll文件看样子大致是一个PE文件。这是因为后面有.text,.data等字符。
但是我们发现头部几个字节看着明显不是PE文件的样式,显然是被更改过,我们找到另外一个dll,直接把这些字节复制过去。
从其他的DLL文件复制前面4行字节可得。
之后用exeinfo探测,发现没什么用。
之后,仔细观察发现没有PE这个字样,我们找到入口,将PE代表的字节数插入进去。
并且还需要把DOS头中最后4个字节指向PE字样的地址。最终修复后结果图如下。
然后就完成了修复过程,再次使用exeinfo发现得到了全部的信息。
总结,PE文件一般来说为了隐藏,往往会抹去一些头部字样,这种情况下软件一般来说不会自动添加,既然软件不会自动添加就需要人为添加来将这个文件修复,首先多看几个PE文件,总结规律,然后看看所需要修复的文件缺少哪个字样,再将入口的偏移更改,最后检查一下。然后通过软件来验证修复结果,只要exeinfo软件能够打开的PE文件就证明结果是正确的,exeinfo软件的下载地址可以在吾爱里面找到。
不同的PE文件损坏的修复过程是不一样的,以上只是一个例子,要想修复更多的同类型文件还需要对PE整个结构了解更加深入,特别是每个字段的存储空间和存储的数据类型。
PE格式文件修复过程
最新推荐文章于 2024-07-29 16:32:12 发布