JMP, um die absolute Adresse (op-codes)

Ich versuche, code zu einer exe-packer/protector als eine Art des Lernens mehr über assembler, c++, und wie PE-Dateien arbeiten. Ich habe derzeit arbeite daran haben, so dass der Abschnitt mit den EP ist XORed mit ein Schlüssel und ein neuer Abschnitt erstellt wird, enthält mein Entschlüsselungs-code. Alles funktioniert Super, außer wenn ich versuche, JMP, um die original-EP nach der Entschlüsselung.

Grundsätzlich habe ich hierzu:

DWORD originalEntryPoint = optionalHeader->AddressOfEntryPoint;
//-- snip -- //
    crypted.put(0xE9);
 crypted.write((char*)&orginalEntryPoint, sizeof(DWORD)); 

Aber anstatt es zu springen, um den Einstiegspunkt, ollydbg zeigt, dass dieser code zerlegt:

00404030   .-E9 00100000    JMP 00405035 ; should be 00401000 =[

und wenn ich versuche es manuell ändern in olly den neuen opcode zeigt sich als

00404030    -E9 CBCFFFFF    JMP crypted.00401000

Wo hast 0xCBCFFFFF kommen? Wie würde ich generieren, die von der C++ - Seite?

Zu wem könnte stolpern das, es gab eine ähnliche Frage immer WIEDER.SE, wo ich eine sehr ausführliche Erklärung: reverseengineering.stackexchange.com/questions/19459/...

InformationsquelleAutor Christopher Tarquini | 2009-10-09

Schreibe einen Kommentar