Hi syntex!
bloodx hat mir zwar ne entpackte Engine vom offiziellen Server hochgeladen, ich wollte es aber trotzdem lieber nochmal alleine probieren mit dem Entpacken. Nur so lernt man.
Bin mittlerweile soweit gekommen. Allerdings gehen mir langsam die Ideen aus:
Im Segment .adata ist der Decrypter der den Armadillo Loader entpackt.
Im Segment .text1 ist der eigentliche Loader.
Ich setze also nen Hardware Breakpoint auf die Speicheradresse des .text1-Segments. Der wird beim ersten und beim zweiten Durchlauf der Entschlüsselung getriggert. Wenn dieser Breakpoint das dritte mal getriggert wird, dann ist der komplette Loader entpackt und der Instruction Pointer steht an der Startadresse des Loaders (0079D4F2) wo ich folgendes finde:
Quote:
0079D4F2 . E8 E3400000 CALL engine.007A15DA
0079D4F7 .^E9 16FEFFFF JMP engine.0079D312
0079D4FC $ 6A 0C PUSH 0C
0079D4FE . 68 B0B07C00 PUSH engine.007CB0B0
0079D503 . E8 44150000 CALL engine.0079EA4C
...
|
Der Loader entschlüsselt ja nun den eigentlichen Code, der sich glaube ich im .text-Segment befindet und splittet sich anschliessend an bestimmten Stellen in Vater und Kindsprozess.
Der Vaterprozess hängt sich selbst als Debugger an den Kindsprozess um bestimmte Exceptions abzufangen. Das Splitten läuft mit Hilfe eines Mutex.
Ich hab mir also gedacht ich könnte einfach hier nen Breakpoint setzen:
Quote:
Names in kernel32, item 95
Address=7C80EB3F
Section=.text
Type=Export (Known)
Name=CreateMutexA
|
Nunja... der Breakpoint wird zwar ein paarmal getriggert, allerdings komm ich nicht so wirklich weiter. Ich habs irgendwie noch nicht geschafft die Stelle zu finden, an der der Kindprozess gestartet wird.
Hast Du, oder irgendjemand anderes der diesen Thread liest, noch ein paar Tipps parat?
Edit: Ist dieses tolle Copymem2 eigentlich standardmässig aktiviert, wenn man Dateien mit Armadillo packt?
Edit2: Wäre es sinnvoll, bzw. gibt es in Olly die Möglichkeit einen Run-Trace zu machen und an den Stellen wo CreateMutexA aufgerufen wird, bzw. wo schreibende Zugriffe auf das .text-Segment erfolgen, Log-Einträge zu generieren? Schreibende Zugriffe auf das .text-Segment deshalb, weil ja irgendwo der verschlüsselte Code dadrin entschlüsselt werden muss.
Danke und viele Grüße,
ingam0r