一、概述
想要获取一个可执行文件(PE文件)里包含的资源文件,首先要解析可执行文件,得到资源存储的地址及大小,可参考 https://blog.youkuaiyun.com/zhyulo/article/details/85717711 。然后,根据资源存储方式,得到各资源的数据内容及其大小,可参考 https://blog.youkuaiyun.com/zhyulo/article/details/85930045 。
PE文件的资源中,版本信息的资源类型ID=16。在RC文件中,版本信息的定义方式如下:
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080404B0"
BEGIN
VALUE "CompanyName", "\0"
VALUE "FileDescription", "PE文件资源提取 Microsoft 基础类应用程序\0"
VALUE "FileVersion", "1, 0, 0, 1\0"
VALUE "InternalName", "PE文件资源提取\0"
VALUE

本文详细介绍了如何解析PE文件中的资源,特别是版本信息。首先概述了获取资源文件的方法,接着详细剖析了版本信息的资源结构,包括其多叉树存储方式和数据头的组成。最后,通过示例程序演示了如何读取和输出版本信息资源的内容。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



