对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 |

  ——————————————————————

责编:豆豆技术应用

正在加载评论...