2022年PE资源分析 .pdf
《2022年PE资源分析 .pdf》由会员分享,可在线阅读,更多相关《2022年PE资源分析 .pdf(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、16 中预定义的资源1. 光标2. 位图3. 图标4. 菜单5. 对话框6. 字符串7. 字体目录8. 字体9. 加速键10.未格式化资源11.消息表12.光标组13.14.图标组15.16.版本信息1. 光标资源在独立的文件中光标文件的结构为下面的情况:Cursor 文件是 Windows专用的光标文件。 Cursor 格式是比较简单的,没有做压缩,在 cursor 文件中都是存在调色板的。光标目录:Cursor 的文件头存放着光标目录(Cursor Directory), 他的数据段如下名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -
2、 - - 名师精心整理 - - - - - - - 第 1 页,共 19 页 - - - - - - - - - Field nameField typeSize (bits)保留( Reserved)WORD 16 类型 (Type) WORD 16 光标个数 (count) WORD 16 光标目录信息BYTE 不定在 window 中,我们可以成如下结构typedef struct _cursordir WORD cdreserved; WORD cdtype; WORD cdcount; CURSORDIR; 各数据段的定义保留( Reserved):该字段保留,必须为0 类型 (Ty
3、pe) :光标资源类型,必须为2 光标个数 (count) :指定光标文件中,光标的个数。微软的程序通常不根据不同的情境,使用其中的一个。这种情况在ICON中很常见。光标目录信息:根据光标个数,每一个光标都有自己的光标目录信息。光标目录信息:光标目录信息存放在光标目录之后。他的数据段如下名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 19 页 - - - - - - - - - Field nameField typeSize (bits)宽度( Width )BYTE
4、8 高度 (Height) BYTE 8 颜色数(ColorCount) BYTE 8 保留BYTE 8 X 坐 标 热 点 ( x hotspot )WORD 16 Y坐 标 热 点 (y hotspot) WORD 16 数 据 大 小 (byte size) DWORD 32 数据偏移量 (image offset) DWORD 32 在 window 中,我们可以成如下结构typedef struct _cursordirentry BYTE bwidth; BYTE bheight; BYTE bcolorcount; BYTE breserved; WORD wxhotspot;
5、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 19 页 - - - - - - - - - WORD wyhotspot; DWORD lbytesinres; DWORD dwimageoffset; CURSORDIRENTRY; 宽度( Width):指定光标宽度高度 (Height):指定光标高度颜色数 (ColorCount):保留字段,必须为0 保留:保留字段,必须为0 X坐标热点( x hotspot):指定光标热点区的X左标Y坐标热点 (y hotspo
6、t) :指定光标热点区的Y左标数据大小 (byte size):指定该光标图像的大小数据偏移量 (image offset):指定该光标图像的偏移量,偏移量是从文件头开始计算的。当光标文件中存在多个光标时,就会有多份的光标目录信息。根据每个光标目录信息去读取光标图像。光标图像:每个光标图像数据,由四部分数据构成,其字段如下:Field nameField typeSize (bits)位图信息头( bitmap header BITMAPINFOHEADER 40 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
7、 - - - - - - 第 4 页,共 19 页 - - - - - - - - - info )调色板 ( palette ) RGBQUAD 不定XOR 颜色数据 (Color XOR) BYTE 不定AND 数据( Color AND)BYTE 不定位图信息头( bitmap header info): 指定图片信息,其中只有biBitCount和biSizeImage有效,biHeight是 XOR 和 AND 数据高度之和。biPlanes为 1,其他为 0。调色板 ( palette ):调色板信息,调色板的大小是2 的 biBitCount次方。XOR 颜色数据:每个像素占用b
8、itBitCout位。其信息是对应调色板中的索引值, AND 数据:每个像素占用一个bit 。XOR颜色数据的大小是bwidth * bheight * biBitCount/8, 画图的时候要根据每个像素信息从调色板中取颜色值。再根据AND数据,判断是否透明。具体的图标与光标的成像原理为:每个图标(包括光标)都是由两个单独的位图组成的。如果该图标是屏蔽背景色的话,那么,第一个位图是由黑色背景(相关的颜色位全为0)与彩色图标图案组成的,该位图将与当前屏幕显示通过异或操作(XOR)结合起来,故称其为XOR 位图;第二个位图是由白色背景(相关的颜色位全为1)与黑色图标图案(相关的颜色位全为0)组成
9、的,该位图将与当前屏幕显示通过与操作( AND)结合起来 ,故称其为AND 位图。因此,图标的显示是通过两个步骤完成的:1.当前屏幕显示与AND 位图通过AND 操作结合起来;2.当前屏幕显示与XOR 位图通过 XOR 操作结合起来。大家知道, 1 与任何数值AND 操作的结果将维持原数值,而0 与任何数值AND 操作的结果则是 0,因此在步骤1 中,AND 位图中的白色(1)与屏幕显示经过AND 操作后被原色彩屏蔽,而黑色( 0)则将原色彩屏蔽。步骤1 结束后,屏幕上将留下一个黑色的图标图案。在随后的步骤2 中,由于 0 与任何数值异或的结果都将是原数值,因此,XOR 位图与屏幕显示经过异或
10、操作后, 位图和屏幕中的黑色部分都将被各自对应的彩色部分屏蔽。步骤2 结束后 ,一个形状不规则的图标图案就出现在屏幕上了,这就是图标显示的原理在 PE中光标资源的结构信息为:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 19 页 - - - - - - - - - 光标资源很像图标资源。 它们以成组的格式存储, 前置组头。 组头也使用固定长度的组件索引,允许随机访问每个单独组件。光标头的结构如下: 1 、 资源头 (type = 12) 被保存在组光标中struct C
11、ursorHeader WORD wReserved; / 当前为 0 WORD wType; / 光标 2 WORD cwCount; / 组件数量 ; struct ResourceDirectory WORD wWidth; /与像素值为单位的图片宽度 WORD wHeight; /与像素值为单位的图片高度 WORD wPlanes; /目标设备的位平面数,该值一般为1 WORD wBitCount; /每一个像素所占的位数 DWORD lBytesInRes; / 指向组件 WORD wNameOrdinal; WORD padding; / 填充数据 ; /对于每一个组件都有一个独立
12、的该结构体,来描述在光标图片的信息2 资源头( type = 1 ) 被保存在光标中光标图像:在光标图像的开始处有一个比图标多出来的结构体,那就是热点信息:该信息表示了光标的位置struct CursorComponent short xHotspot; short yHotspot; 接下来的的数据就和图标的一样了,分为四部分:其字段如下:Field name Field type Size (bits) 位图信息头( bitmap header info) BITMAPINFOHEADER 40 调色板 ( palette ) RGBQUAD 不定XOR 颜色数据 (Color XOR)
13、BYTE 不定AND 数据( Color AND)BYTE 不定位图信息头( bitmap header info ): 指定图片信息,其中只有biBitCount和 biSizeImage 有效,biHeight是 XOR 和 AND 数据高度之和。 biPlanes 为 1,其他为 0。调色板 ( palette ):调色板信息,调色板的大小是2 的 biBitCount次方,即 1biBitCount)*sizeof(RGBQUAD) + sizeof(BITMAPINFOHEADER) ;来找到数据区所以该结构被省略了 ( 在单色位图, 16 色位图,还有256 色位图中都是存在调色板
14、的,而在位图数据区放置的数据只是在调色板的索引值, 因此多少色的位图可定就会有多少个RGBQUAD结构,对应这后面的索引值, 这样我们就可以用 pbitmapinfohead-biBitCount域的值来确定位图中的RGBQUAD结构的数目。然而对于大于 256 色 的位图就没有了调色板,在位图的数据区存放的就是该位图中的颜色值) (1. )位图文件头结构体 ; typedef struct tagBITMAPFILEHEADER WORD bfType; / 位图文件的类型,必须为BM(0-1字节 ) DWORD bfSize; / 位图文件的大小,以字节为单位(2-5 字节 ) WORD
15、bfReserved1; / 位 图文件保留字,必须为0(6-7 字节 ) WORD bfReserved2; / 位 图文件保留字,必须为0(8-9 字节 ) DWORD bfOffBits; / 位图数 据的起始位置,以相对于位图(10-13字节 ) / 文件头的偏移量表示,以字节为单位 BITMAPFILEHEADER; 在真正的BMP 文件中接在位图文件头结构体之后的是位图信息结构体,而该结构体确实PE 文件中位图资源的第一个结构体,(2)位图信息结构体。typedef struct tagBITMAPINFOHEADER / bmih DWORD biSize; / 结构 BITMA
16、PINFOHEADER 的字节数LONG biWidth; / 以像素为单位的图像宽度LONG biHeight; / 以像素为单位的图像长度WORD biPlanes; / 目标设备的位平面数,此值常为1 WORD biBitCount / 每个像素的位数DWORD biCompression;/ 图像的压缩格式(这个值几乎总是为0)DWORD biSizeImage;/ 以字节为单位的图像数据的大小LONG biXPelsPerMeter;/ 水平方向上的每米的像素个数LONG biYPelsPerMeter;/ 垂直方向上的每米的像素个数DWORD biClrUsed;/ 调色板中实际使
17、用的颜色数DWORD biClrImportant;/ 现实位图时必须的颜色数 BITMAPINFOHEADER; 1. 对于 biCompression 域图像的压缩格式压缩说明: 有 0(不压缩),1( RLE 8 ,8 位 RLE 压缩), 2( RLE 4 ,4 位 RLE 压缩, 3( Bitfields ,位域存放)。RLE 简单 地说是采用像素数+像素值的方式进行压缩。 T408 采用的是位域存放方式 ,用两个字名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共
18、 19 页 - - - - - - - - - 节表示一个像素,位域分配 为 r5b6g5 。对于 biWidth, biHeight 两个域来从内存所占数据大小来说指的是当我们把PE 映射到内存后对应的多少个字节表示该位图图片的一行数据和该位图图片的列向有说少行。对于 BMP 文件 的数据存放一般是从左到右,从下到上的。2. 对于biBitCount 域来说,是指为一个像素所占的bit 数,0,用在 JPEG格式中1,单色图,调色板中含有两种颜色,也就是我们通常说的黑白图片图像数据中每一个字节表示八个像素4,16 色图 图像数据中每一个字节表示两个像素8,256 色图,通常说的灰度图图像数据
19、中每一个字节表示一个像素16,64K 图,一般没有调色板,图像数据中每两个字节表示一个像素,5 个或 6 个位表示一个RGB分量24,16M 真彩色图,一般没有调色板,图像数据中每3 个字节表示一个像素,每个字节表示一个RGB分量32,4G 真彩色,一般没有调色板,每4 个字节表示一个像素,相对24 位真彩图而言,加入了一个透明度,即 RGBA模式3.对于 biClrUsed 域来说其值常为0,表示使用biBitCount 确定的全部颜色4 对于 biClrImportant 域来说其值常为0,表示所有的颜色都是必需的(3)颜色表。 颜色表一般是针对16 位以下的图像而设置的,对于16 位和
20、16 位以上的图像,由于其位图像素数据中直接对对应像素的RGB(A)颜色进行描述,因而省却了调色板。而对于16 位以下的图像,由于其位图像素数据中记录的只是调色板索引值,因而需要根据这个索引到调色板去取得相应的RGB(A) 颜色。颜色表的作用就是创建调色板。颜色表是由颜色表项组成的,颜色表项结构的定义如下:typedef struct tagRGBQUAD / rgbq BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; RGBQUAD; 其中需要注意的问题是,RGBQUAD结构中的颜色顺序是BGR ,而不是平常的RGB 。(
21、3) 、位图数据。最后,在位图文件头、位图信息头、位图颜色表之后,便是位图的主体部分:位图数据。根据不同的位图,位图数据所占据的字节数也是不同的,比如,对于8 位位图,每个字节代表了一个像素,对于16位位图,每两个字节代表了一个像素,对于24 位位图,每三个字节代表了一个像素,对于32 位位图,每四个字节代表了一个像素。其在PE文件中的地址为:(DWORD)pow(2,pbitmapinfohead-biBitCount)*sizeof(RGBQUAD) + sizeof(BITMAPINFOHEADER) ;来确定3. 图标资源从 PE文件中读取出的图标与完整的图标结构比较缺少图标文件头,图
22、标的文件头被放在了组图标(type=14)中图标文件格式 : 分为六部分:1. 文件头 6B 2. 图像信息块 16B 3.BMP信息头 40B 4.XOR位图调色板 16 色的为 64B 256 色的为 1024B 5.XOR位图6.AND位图在导出图标是一定要注意数据的对齐是以8 字节对齐的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 19 页 - - - - - - - - - 以下结构被放在组图标中type=141. 文件头信息结构体:该结构体在 VC中并没有定
23、义,是从别的文档里面找到的typedef struct WORD idreserved ;/ 改值为 0 是系统保留的域WORD idtype ;/ 是 1 表示该结构是图标资源,是2 表示该资源是光标资源WORD idcount; /在组中图片的数目ICONDIR,*LPICONDIR; 2. 图像信息块ICONDIRENTRY结构,图标资源索引目录结构(一个描述图片信息的结构体的串)Typedef struct BYTE bwidth; /图片的宽度,以像素为单位BYTE bheight; /图片的高度,以像素为单位BYTE bcolorcount; /图片的颜色数,如果颜色数大于8 时该
24、值为 0 BYTE breserved; /系统保留WORD wplanes;/color planes WORD wbitcount; /每个像素的位数DWORD dwbytesinres;/ 该图片的字节数DWORD dwimageoffset;/表示在图标数据中的起始位置;(在PE文件中为 WORD 型表示为该图标的编号)ICONDIRENTRY,*LPCONDIRENTRY; 以下图像数据被 存放在图标段中 type=33.BMP信息头typedef struct BITMAPINFOHEADER icheader RGBQUAD iccolors; BYTE icxor; BYTE
25、icand; ICONIMAGE,*LPICONIMAGE; 该结构体在 VC中有定义其中包含了BMP 的一些信息typedef struct tagBITMAPINFOHEADER /* bmih */ DWORD biSize; / 结构 BITMAPINFOHEADER的字节数LONG biWidth; /该图片的宽度,以像素为单位LONG biHeight; /该图片的高度的 2 倍,以像素为单位WORD biPlanes; / 面数WORD biBitCount; /一个颜色所占的 bit数DWORD biCompression;/ 0 DWORD biSizeImage; / 图片
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年PE资源分析 2022 PE 资源 分析
限制150内