对PE资源的研究
http://tech.ddvip.com 2006年03月31日 社区交流
本文详细介绍对PE资源的研究
11: message table
12: group cursor
14: group icon
16: version information
NAME RVA
名字的相对实际地址,包含一个31位的相对资源的Image Base的地址。表的形式见表4
E 一位的不可缺少的识别码(mask 80000000h)
如果这位为0,则为Resource Data Entries,其中DATA RVA = 31位的(mask 7fffffffh) 数据条目的地址。结构见表5
如果这位为1,则表示接另一个子目录(Subdirectory Entry)。
{ 此函数检验 offset 是一个字符串名还是一个目录 }
{ IMAGE_RESOURCE_NAME_IS_STRING
= IMAGE_RESOURCE_DATA_IS_DIRECTORY
= $80000000 }
function HighBitSet(L: Longint): Boolean;
begin
Result := (L and IMAGE_RESOURCE_DATA_IS_DIRECTORY) <> 0;
end;
{ 下面两个函数用于去掉E位剩下的值或者指针 }
{IMAGE_OFFSET_STRIP_HIGH = $7FFFFFFF;}
function StripHighBit(L: Longint): Longint;
begin
Result := L and IMAGE_OFFSET_STRIP_HIGH;
end;
function StripHighPtr(L: Longint): Pointer;
begin
Result := Pointer(L and IMAGE_OFFSET_STRIP_HIGH);
end;
每一个资源目录名为如下格式
——————————————————————
| LENGTH | UNICODE STRING |
——————————————————————
责编:豆豆技术应用