PE文件解析-资源中的菜单结构

本文详细介绍了PE文件中的菜单资源结构,包括菜单头结构和菜单项结构,探讨了菜单资源作为顺序储存的多叉树式数据结构,并提供了示例程序展示如何解析和提取菜单资源。

一、概述

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

    PE文件的资源中,菜单的资源类型ID=4,菜单可能通过字符串命名,但大部分都是通过ID区分命名,而菜单中的子菜单通过ID区别,菜单名只做信息提示及快捷键,不是区分子菜单的元素。菜单资源的存放实质上是一种顺序储存的多叉树式数据结构,用标志位来记录树节点间的关系。

 图1 深度优先存储的多叉树结构

二、菜单资源结构

1.菜单头结构

    菜单资源的指针指向的起始位置一般有4个字节的0,定义如下:

struct MenuHeader
{
	WORD wVersion;//版本号,为0
	WORD cbHeaderSize;//头大小,为0
};

     菜单头结构结构后紧跟着的是菜单项。

2.菜单项结构

&nbs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值