// 资源表2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdlib.h>
#include <string.h>
#include <windows.h>
DWORD RVA2Offset(DWORD dwRva, PIMAGE_NT_HEADERS32 pNt)
{
DWORD dwOffset = 0;
PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pNt);
//获取区段的数量
DWORD dwCount = pNt->FileHeader.NumberOfSections;
//判断在哪个区段 并且进行转换
for (DWORD i = 0; i < dwCount;i++)
{
if (dwRva >= pSection[i].VirtualAddress &&
dwRva <( pSection[i].Misc.VirtualSize + pSection[i].VirtualAddress)
)
{
dwOffset = dwRva - pSection[i].VirtualAddress + pSection[i].PointerToRawData;
return dwOffset;
}
}
return dwOffset;
}
static char* szResName[0x11] = { 0, "鼠标指针", "位图", "图标", "菜单", "对话框", "字符串列表",
"字体目录", "字体", "快捷键", "非格式化资源", "消息列表", "鼠标
PE总结13 --PE文件结构之 解析资源表
最新推荐文章于 2023-09-08 09:37:23 发布
本文通过C++代码详细解析了PE文件的资源表结构,包括如何从DOS头开始,逐步找到NT头、数据目录表,直至解析资源目录和资源数据,展示了资源类型ID和资源字符串的获取过程。
摘要由CSDN通过智能技术生成