Hallo, ich habe folgendes Problem.
Ich möchte eine neue Section in einen PE Header einbauen, aber mein Versuch scheitert daran, dass er mir meinen neuen PE Header nicht als valid ansieht.
Ich habe die Anzahl der PE Header in meinem Programm erhöht. Die Image Size muss ich noch erhöhen und da ist auch schon meine erste Frage. Desweitern bin ich mit bei VirtualAddress und bei SizeOfRawData unsicher ob das so stimmt.
Wäre schön wenn mit jemand erklären würde wie man die Fehler die ich gemacht habe beheben kann.
MfG
Ich möchte eine neue Section in einen PE Header einbauen, aber mein Versuch scheitert daran, dass er mir meinen neuen PE Header nicht als valid ansieht.
Code:
char* bnewSectionName = ".Test"; IMAGE_SECTION_HEADER* newSection = (IMAGE_SECTION_HEADER*)((DWORD)&NTHeader->OptionalHeader + NTHeader->FileHeader.SizeOfOptionalHeader + (9 * sizeof(IMAGE_SECTION_HEADER))); memcpy(newSection->Name, &bnewSectionName, IMAGE_SIZEOF_SHORT_NAME); IMAGE_SECTION_HEADER* oldSection = (IMAGE_SECTION_HEADER*)((DWORD)&NTHeader->OptionalHeader + NTHeader->FileHeader.SizeOfOptionalHeader + (8 * sizeof(IMAGE_SECTION_HEADER))); newSection->Misc.PhysicalAddress = oldSection->Misc.PhysicalAddress + oldSection->Misc.VirtualSize; newSection->Misc.VirtualSize = 20; newSection->VirtualAddress = NULL; // ??? newSection->SizeOfRawData = NULL; newSection->PointerToRawData = NULL; newSection->PointerToRelocations = 0x00000000; newSection->PointerToLinenumbers = 0x00000000; newSection->NumberOfRelocations = NULL; newSection->NumberOfLinenumbers = NULL; newSection->Characteristics = 0x00000000;
Wäre schön wenn mit jemand erklären würde wie man die Fehler die ich gemacht habe beheben kann.
MfG