// 资源表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, "鼠标指针", "位图", "图标", "菜单", "对话框", "字符串列表",
"字体目录", "字体", "快捷键", "非格式化资源", "消息列表", "鼠标