PE文件解析-资源中的位图、图标与光标结构

本文详细介绍了PE文件中位图、图标和光标资源与对应独立文件(bmp、ico、cur)在数据结构上的差异。在位图资源中,BITMAPFILEHEADER文件头被省略,可通过补加该头信息提取位图。图标资源的文件头与图片数据分开存储,光标资源类似但包含热点数据。提供了提取这些资源的步骤和代码示例。
摘要由CSDN通过智能技术生成

一、概述

    想要获取一个可执行文件(PE文件)里包含的资源文件,首先要解析可执行文件,得到资源存储的地址及大小,可参考 https://blog.csdn.net/zhyulo/article/details/85717711 。然后,根据资源存储方式,得到各资源的数据内容及其大小,可参考 https://blog.csdn.net/zhyulo/article/details/85930045

    PE文件的资源中,位图、图标与光标的存储格式与bmp位图、ico图标与cur光标的文件的存储格式不太一样。具体表现在文件头PE资源中的缺失、·分离。但是具体的图片颜色数据,则没有变化。bmp位图、ico图标与cur光标文件格式,可参考 https://blog.csdn.net/zhyulo/article/details/85934728 。PE资源与独立文件的差别,具体见下面内容:

二、位图资源与bmp文件在数据结构上的差别

    位图资源类型ID=2。位图资源与bmp文件在数据结构上的唯一差别,表现在bmp文件的BITMAPFILEHEADER文件头结构,在位图资源中的缺失。而信息头、调色板、位图点阵数据,则没有差别。所以,在位图资源的数据前,补加BITMAPFILEHEADER文件头,另存为bmp文件,就可以做到PE文件位图资源的文件提取了。

    首先回顾一下BITMAPFILEHEADER文件头的定义:

typedef struct tagBITMAPFILEHEADER {
        WORD    bfType;      //文件标识,规定为0x4D42,字符显示就是'BM'
        DWORD   bfSize;      //文件大小
        WORD    bfReserved1; //保留,必须设置为0
        WORD    bfReserved2; //保留,必须设置为0
        DWORD   bfOffBits;   //从头到点阵数据的偏移
} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;

    可以看到,BITMAPFILEHEADER文件头并没有什么重要的信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值