我在c ++中创建一个简单的打包器有些问题。 我需要在pe文件中添加新的部分来执行此操作我想在visual studio 2015中使用以下代码初始化一个新的section.i:
PIMAGE_SECTION_HEADER new_section;
new_section->Characteristics = IMAGE_SCN_MEM_WRITE;
但是它让我在没有初始化的情况下使用new_section,我该如何解决这个问题?
我想知道如何在初始化后将部分添加到pe文件中,我应该使用memset函数吗? 谢谢你的帮助。
答案 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。