10 Stimmen

JMP an absolute Adresse (Op-Codes)

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X