在c ++中将新部分添加到pe文件中

时间:2016-09-03 19:04:34

标签: c++ file portable-executable

我在c ++中创建一个简单的打包器有些问题。 我需要在pe文件中添加新的部分来执行此操作我想在visual studio 2015中使用以下代码初始化一个新的section.i:

PIMAGE_SECTION_HEADER new_section;
new_section->Characteristics = IMAGE_SCN_MEM_WRITE;

但是它让我在没有初始化的情况下使用new_section,我该如何解决这个问题?

我想知道如何在初始化后将部分添加到pe文件中,我应该使用memset函数吗? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您没有初始化PIMAGE_SECTION_HEADER指针(注意它是指向struct的指针)。由于它是一个结构,因此您需要将数据转换为结构,假设您的数据存储在buffer中:

PIMAGE_DOS_HEADER pidh = (PIMAGE_DOS_HEADER)buffer;
PIMAGE_NT_HEADERS pinh = (PIMAGE_NT_HEADERS)((BYTE*)pidh + pidh->e_lfanew);
PIMAGE_FILE_HEADER pifh = (PIMAGE_FILE_HEADER)&pinh->FileHeader;
PIMAGE_OPTIONAL_HEADER pioh = (PIMAGE_OPTIONAL_HEADER)&pinh->OptionalHeader;
PIMAGE_SECTION_HEADER new_section = (PIMAGE_SECTION_HEADER)((BYTE*)pinh + sizeof(IMAGE_NT_HEADERS));

此用法示例取自here