legendMobile
legend

Heute mal nichts zur VM.

Der Stolen OEP ist ebenfalls ein Feature von Enigma.

Was ist das?

Wie der Name schon sagt, wird der OEP gestohlen. Darunter kann man sich auch nicht wirklich etwas vorstellen, deshalb hier die Erklärung:

Wenn dieses Feature aktiviert wurde, fehlen am OEP einige Instructions.

Warum Stolen OEP?

Der Stolen OEP ist ein Anti-Dump Feature. Logisch: Wenn man versucht das gedumpte File zu starten, und am OEP fehlt etwas, wird das File nicht ordnungsgemäß starten.

Wie funktionert das Ganze?

Hier wird’s interessant:

Die Protector-Stub alloziert zur Laufzeit Speicher, in den es die gestohlenen Instructions kopiert.

Nachdem die Stub fertig ist, wird nicht direkt zum OEP gesprungen, sondern in den eben angeforderten Speicherbereich, in dem die Instructions stehen. Darunter wird dann meist noch ein JMP assembliert, der dann in die Code-Setion, unter die Instructions springt, die bereits ausgeführt wurde.

Aber nun zur Praxis, am besten alles ausführen mit einem deutschen mobile proxy

Hier seht ihr genau das, was ich oben beschrieben habe. Der Adressbereich (links) zeigt eindeutig, dass es ein Bereich außerhalb der PE sein muss. Und genau das ist der vom Protector allozierte Bereich. Da es sich um ein VB6 Target handelt, können nur zwei Instructions gestohlen werden, da garnicht mehr vorhanden sind. Und diese beiden Instructs sind, wie bei jeder anderen VB6 Exeutable auch, PUSH + CALL zu ThunRTMain.

Darunter der JMP in die Code-Section, der hier hin führt:

Genau genommen, ist dieser JMP in dem Fall sogar überflüssig, da die ThunRTMain-Funktion sowieso nie returnen wird. Aber das ist eben nur bei VB6 der Fall.

Um zu dumpen, muss man nun einfach die beiden Instructions kopieren und logischer Weise über der Adresse, zu der der JMP springt, einfügen.

Das würde dann so aussehen:

Ich habe jetzt den Origin auf den Call gesetzt, sodass der OEP vollständig und korrekt ausgeführt würde.

Ist das schon alles?

Im Fall von Enigma ja. Das ist allerdings auch die einfachste Variante des Stolen OEP. Schwierig wird es, wenn, wie immer, Junk-Code ins Spiel kommt. Dann muss man die relevanten Instructions mühsam von den Junk-Instructions trennen.

Diese Methode ist bei Enigma also noch ausbaubar. ;)

PS: Habe es laut Bloguhr gerade so eben noch geschafft rechtzeitig zu posten. ;) Für mehr hierzu und Proxies hier folgen, bald kommen mehr Beiträge