PE是Portable Executable File Format(可移植的运行体)简写,它是眼下Windows平台上的主流可运行文件格式。
PE文件里包括的内容非常多,详细我就不在这解释了,有兴趣的能够參看之后列出的參考资料及其它相关内容。
近期我也在学习PE文件格式,參考了很多资料。用C++封装了一个高效方便的PE文件格式解析的类。
该类对想学PE文件结构的朋友可算一份可贵的资料。代码均非常易懂,考虑较全面,具有一定的通用性。
同一时候该类也能够让想创建自己的PE文件解析软件的朋能够轻松在此基础上实现。
最后。错误在所难免。假设大家发现有错误,欢迎大家指正。
下面是该类中接口函数的定义代码(完整代码附于之后下载链接中):
凝视部分已经具体说了各功能。主要操作例如以下:
1、调用Attach成员函数使类对象附加到一个PE文件
2、通过ReadXXX 读取须要的文件夹(包含导入表、导出表、资源表、基址重定位....)
3、调用相关处理函数获取对应信息(依据读取内容的不同而不同,详细參看凝视)
4、将获得的数据做你想要的操作(如显示出来等)
5、ClearXXX释放资源(可选,对象析构时会自己主动调用)
6、Detach释放对该文件的关联(可选。对象析构时会自己主动调用)
眼下基本数据文件夹中的大部分都能够获取。.Net部分(IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR)还未实现,之后会继续完好
之后的链接中附有一个Demo演示怎样使用该类,如仍有不清楚的朋友能够回复寻问我
最后发一个自己写的获取PE文件信息的软件,能够Dump出PE文件的各信息,该软件是用该PE解析类实现的,详细代码较多,初看并不易懂,所以在这不提供了国。
该软件我会附载之后的下载链接里。能够方便获取PE文件里各信息,因为精力有限,写的是控制台下的。有兴趣的朋友能够自己实现一个GUI版本号的~
软件中,仅仅需在控制台下输入PE文件路径。或者将文件拖拽进窗体(插入.lnk快捷方式也行)。程序会将须要的信息输出来。
下面附上软件的一部分截图:
哈。啰嗦了这么多,接下来就留给各位去体验吧。事实上PE文件没想像那么难~
相关资源下载地址:
(内含PE文件解析类源代码文件、简单DEMO、以及自已实现的控制台PE文件查看器)
參考书籍:
《Windows PE权威指南》戚利
《加密与解密(第三版)》段钢
《软件加密技术内幕》看雪学院
《Windows环境下32位汇编语言程序设计(典葳版)》罗云彬
《加密与解密》吴强
《逆向project核心原理》李承远
參考软件:
Stud_PE
LordPE
StudyPE+
eXeScope-ha
CFF Explorer
Resource Hacker
PEID
PEview
ExeinfoPe
OllyDbg
IDA Pro
參考源代码:
PEDump
libpe-master
The Portable Executable File Format from Top to Bottom
PE文件格式官方文档:Microsoft PE and COFF Specification
在线PEDump工具:PEdump - dump your PE!
同一时候參考了CSDN、看雪学院、吾爱破解上等资料,在此一并感谢!