把所有节合并成一个节,好处是可以腾出节表空间,保证能成功新增节。
方法是先拉伸成imagebuffer,修改第一个节的VirtualSize = SizeOfRawData = SizeOfImage - VirtualAddress,因为PE文件本身就对齐好了,所以不用关心对齐问题。由于修改了SizeOfRawData ,处理后PE文件会变大。除此之外还要修改节的数量,和第一个节必须具有其他节的属性。
代码
// 合并所有节
BOOL MergeSection(LPVOID pImageBuffer, LPVOID *pNewImageBuffer, DWORD dwImageSize)
{
*pNewImageBuffer = malloc(dwImageSize);
if (*pNewImageBuffer == NULL)
{
printf("分配内存失败\n");
return FALSE;
}
memcpy(*pNewIma