Ich versuche, einen Exe-Packer/Protector zu programmieren, um mehr über Assembler, C++ und die Funktionsweise von PE-Dateien zu lernen. Ich habe derzeit es funktioniert, so dass der Abschnitt, der die EP enthält, mit einem Schlüssel XORed und ein neuer Abschnitt erstellt wird, die meine Entschlüsselungscode enthält. Alles klappt prima, außer wenn ich versuche, nach der Entschlüsselung per JMP auf die ursprüngliche EP zuzugreifen.
Im Grunde mache ich Folgendes:
DWORD originalEntryPoint = optionalHeader->AddressOfEntryPoint;
// -- snip -- //
crypted.put(0xE9);
crypted.write((char*)&orginalEntryPoint, sizeof(DWORD));
Aber anstatt zum Einstiegspunkt zu springen, zeigt ollydbg, dass dieser Code zu disassembliert wird:
00404030 .-E9 00100000 JMP 00405035 ; should be 00401000 =[
und wenn ich versuche, ihn manuell in olly zu ändern, erscheint der neue Opcode als
00404030 -E9 CBCFFFFF JMP crypted.00401000
Woher kommt 0xCBCFFFFF? Wie würde ich das von der C++-Seite aus generieren?