首页
社区
课程
招聘
[原创]PE文件菜单资源的格式分析
发表于: 2013-6-15 21:55 15579

[原创]PE文件菜单资源的格式分析

2013-6-15 21:55
15579

  前些日子做了一些PE文件分析,查阅了包括《Windows PE 权威指南》在内的不少文章及源码。可能出于实用的需要,大家分析的目标通常集中在区段、输入输出表方面的缘故,很少有文章对资源部分做很详细的介绍,即便是《Windows PE 权威指南》,在菜单资源部分说的也很简练,只分析了第一个简单菜单项,其他的一带而过。为了正确读取菜单资源的内容,不得已查了些资料,做了些分析推测,记录一下。当然,这些分析没有什么实际价值,内容非常初级,并且不带来任何效益,菜鸟以上级别请自行闪退。
  菜单资源的存放实质上是一种顺序储存的多叉树式数据结构,用标志位来记录树节点间的关系。
  
  图1 深度优先存储的多叉树结构

  菜单项有两种:弹出菜单(POPUP)和普通菜单项(MENUITEM)。
弹出菜单项

typedef struct
{
WORD		fItemFlag; //菜单项标志
WCHAR[]	szItemText;//菜单名
}PopupMenuItem;
typedef struct
{
WORD		fItemFlag; //菜单项标志
WORD		wMenuID;   //菜单ID
WCHAR[]	szItemText;//菜单名
}NormalMenuItem;
#define MF_ENABLED          0x00000000L
#define MF_GRAYED           0x00000001L
#define MF_DISABLED         0x00000002L

#define MF_UNCHECKED        0x00000000L
#define MF_CHECKED          0x00000008L
#define MF_USECHECKBITMAPS  0x00000200L

#define MF_STRING           0x00000000L
#define MF_BITMAP           0x00000004L
#define MF_OWNERDRAW        0x00000100L

#define MF_POPUP            0x00000010L
#define MF_MENUBARBREAK     0x00000020L
#define MF_MENUBREAK        0x00000040L
#define MF_END              0x00000080L

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 5
支持
分享
最新回复 (20)
雪    币: 778
活跃值: (208)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
2
mark,以后也许会用到
2013-6-15 22:04
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个要顶!!
2013-6-16 09:18
0
雪    币: 351
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
写的不错
之前写过pe的东西 资源类的没做细研究
2013-6-18 13:57
0
雪    币: 141
活跃值: (318)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个以后会用到,先看看
2013-6-18 21:01
0
雪    币: 102
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
顶顶顶顶顶顶

学习了,谢谢!
2013-6-18 22:42
0
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
mark  学习了
2013-6-18 22:56
0
雪    币: 1392
活跃值: (5172)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
8
MARKKKKKKKKKKKKKK
2013-6-19 09:48
0
雪    币: 437
活跃值: (78)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不错的资源
2013-6-19 10:01
0
雪    币: 97697
活跃值: (200819)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
10
Thanks for share.
2013-6-19 10:19
0
雪    币: 1485
活跃值: (884)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
分析下E语言吧,来个E语言资源编辑工具挺好。
2013-6-19 17:20
0
雪    币: 1839
活跃值: (295)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
12
感谢楼主,我前几年写PELoader的时候,关于资源因为找不到合适的资料,也不是很重要就放弃了。

所以感谢楼主,得空把我的PELoader的资源部分也可以完善一下了。
2013-6-20 10:11
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
不错,学习了~
2013-6-20 17:43
0
雪    币: 483
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
受教了
2013-6-21 00:05
0
雪    币: 327
活跃值: (30)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
非常不错!学习了
2013-6-21 23:24
0
雪    币: 14
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
支持一下,留个名吧
2013-6-24 18:30
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
刚入论坛不久,潜心学习
2013-7-27 16:19
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
make下,已经说不定需要
2013-8-4 14:50
0
雪    币: 253
活跃值: (27)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
19
可以参考这本书
[Windows.PE权威指南].戚利.扫描版.pdf
2013-8-4 17:36
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
mark mark!
2013-8-5 09:15
0
雪    币: 9
活跃值: (180)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
21
多叉数
2018-1-12 12:26
0
游客
登录 | 注册 方可回帖
返回
//