[Release] AutoIt3 Deobfuscator

10/07/2012 16:48 Jeoni#1
Projekt eingestellt.

Hallo Elitepvpers,
ich release hier mal den Deobfuscator (geschrieben in VB.net) für Shadows Obfuscator ([Only registered and activated users can see links. Click Here To Register...] zu finden; gute Arbeit übrigens ;) ). Mein Deobfuscator sollte beide Versionen seines Obfuscators (AutoIt und C++) wieder deobfuscaten können.
Und bevor jetzt hier welche ankommen und meinen sie müssten Sachen loslassen wie "bla, voll scheiße, jetzt ist das voll unsicher, bla" meine ich, dass Leute, die die Source wirklich haben wollen, sie auch manuell deobfuscaten können ([Only registered and activated users can see links. Click Here To Register...] kurz erklärt). Mein Programm automatisiert das lediglich.
Wer das Programm nicht braucht, muss es ja nicht nutzen ;)

So, hier ein Screen von dem Programm:
[Only registered and activated users can see links. Click Here To Register...]

Dürfte wohl selbsterklärend sein. Gesagt sei noch, dass die Optionalen Einstellungen (die standartmäßig angehakt sind) das Script unbrauchbar machen können, sollten die Variablennamen gar nicht verändert sein. Also diese Optionen bitte mit Vorsicht genießen. In V.0.5 wurden die optimalen Einstellungen zum deobfuscaten von C++-Obfuscator V.1.0.9-Scripts standartmäßig angehakt (Rename Variables funktioniert noch nicht nach Plan, ist daher nur optional).

Der Zip-Datei im Anhang liegt ein obfuscated Beispielscript bei, an dem ich mein Programm auch getestet habe. Des Weiteren liegt dem Zip-Archiv der normale AutoIt-Include Ordner bei. Der Deobfuscator sollte sich im selben Ordner, wie der Include Ordner befinden (von mir aus könnt ihr ihn auch in euren AutoIt-Installationspfad legen), sonst wird die "Remove Compile Errors"-Funktion das Skript zerstören!

Ich bitte um Rückmeldung, vielen Dank
Jeoni

Changelog:

Virustotal (Funde sind garantiert false-positive):
10/07/2012 17:34 Yauleen#2
Gute Arbeit^^
10/07/2012 17:52 Shadow992#3
Saubere Arbeit kann ich dazu nur sagen. :)

Edit: Mich würde interessieren nach welchem Prinzip der Deobfuscator arbeitet. Führt er den AutoIt-Code aus und lässt das "Execute" vorne weg oder reinterpretiert er den AutoIt-Code?

Edit2:
Ah ok ich sehe die AutoIt-Exe wurde in dasselbe Verzeichnis kopiert also lässt er den Code praktisch ausführen.
10/07/2012 18:11 Jeoni#4
Erstmal vielen Dank :)
Zu deiner Frage:
Erstmal werden per Regex die StringLen, und BinaryToString Befehle entfernt (ist ja nicht allzu schwer). Funktionen wie int(Cos(Sin(irgendeineZahl))) werden ebenfalls geparsed und eben entfernt (hab ich lange für gebraucht, bis ich gemerkt habe, dass der in()-befehl von AutoIt immer abrundet :) ). Das alles passiert, ohne dass AutoIt-Code tatsächlich ausgeführt wird (wie du schon gesagt hast, könnte man es durchaus als reinterpretation sehen). Nur bei selbstgeschriebenen Funktionen (meist Function(x*y)-z) wird AutoItCode mit den entsprechenden Parametern ausgeführt und das Ergebnis eben eingesetzt.
Bei den Execute()-befehlen war es ganz leicht, da ich einfach nur das execute weggelassen habe.
Sicherlich ist der Deobfuscator nicht perfekt und kann sicher relativ leicht gepatcht werden.
Danke für das Feedback
Mit freundlichen Grüßen
Jeoni
10/07/2012 20:37 Lawliet#5
Ich habs mal mit irgend nem alten Projekt von mir getestet und er Crasht nach ner Zeit.
ich hab dir mal das Script angehängt.

Edit:
Immer mit diesen Werten:
[Only registered and activated users can see links. Click Here To Register...]


Evl. rekursion oder es liegt am Script.
10/07/2012 21:34 Jeoni#6
Hab den Fehler gefunden, ich kümmer mich drum und bring dann dementsprechend ein Update raus.
/Edit: Ich könnte behaupten, dass der Fehler im Script liegt (was natürlich dämlich wäre), aber er liegt am Programm und es wird noch etwas dauern, bis das Update rauskommt (ich denke aber noch in dieser Woche). In der Zeit nutzt einfach andere Scripte zum Deobfuscaten :D

P.S.: Fehler tritt auf, wenn es Befehle gibt (im eigentlichen unobfuscateten Script), die wie folgt aussehen:
Code:
Befehl(42, "\(")
Befehl(")("))
Befehl(")")
(Wer das nicht begriffen hat: Befehle mit Klammern, welche einzeln oder nicht in ihrer natürlichen Reihenfolge auftreten)

Folgende führen demnach nicht zu Problemen:
Code:
Befehl(AndererBefehl(42))
Solange der AndererBefehl keiner des obigen Befehlstyp ist.
10/08/2012 10:55 spymare#7
when running "Au3Deobfuscator" it makes a file called AutoIt3.exe

I just a hex editor, and I can see it's a compiled autoit file, however I can't decompile it, neither with exe2aut or myAutToExe.


I'm very interested in how you managed it to now be able to be decompile :) can you tell me :)?
10/08/2012 16:10 Jeoni#8
This is the AutoIt interpreter to execute some AutoIt-Code, which is necessery during the deobfuscation process. If you have AutoIt installed, it's the same file that you can find in your installation directory.
And for that I don't need to decompile the interpreter ;)
And my programm can't decompile anything. If you already have something decompiled and you can't read it, because it's obfuscated with shadows obfuscator, it will make it more readable again.
Best regards
Jeoni

P.S.: Programm updated!
10/09/2012 01:03 Shadow992#9
Ah ich liebe diese kleinen Wettrüstungen. :D
Dein Deobfuscator hat einige Schwachstellen, die ich in meinem neuem Obfuscator gleich einmal benutzt habe, sollte dadurch also allgemein schwerer werden einen Deobfuscator zu bauen. :D
10/09/2012 01:23 Jeoni#10
Gar nicht mal schlecht, ich habe auch schon eine theoretische Gegenmaßnahme im Visier ;)
Aber ich denke, ich lasse mir mit den Updates immer etwas Zeit. Ich könnte natürlich als Begründung immer auf die Schule verweisen und dass ich dieses Schuljahr mein Abi mache, aber eigentlich habe ich keinen Bock mich damit abzuhetzen. Aber ab und zu können wir das Spiel gerne weitertreiben (vielleicht gebe ich aber auch schon nach 2 Patchs auf oder so) :D
Mit Freude
Jeoni
10/09/2012 01:30 Shadow992#11
Quote:
Originally Posted by Jeoni View Post
Gar nicht mal schlecht, ich habe auch schon eine theoretische Gegenmaßnahme im Visier ;)
Aber ich denke, ich lasse mir mit den Updates immer etwas Zeit. Ich könnte natürlich als Begründung immer auf die Schule verweisen und dass ich dieses Schuljahr mein Abi mache, aber eigentlich habe ich keinen Bock mich damit abzuhetzen. Aber ab und zu können wir das Spiel gerne weitertreiben (vielleicht gebe ich aber auch schon nach 2 Patchs auf oder so) :D
Mit Freude
Jeoni
Könnte genau dasselbe als Begründung nehmen, aber ehrlich gesagt hab ich (so wie du scheinbar? :D) nicht wirklich Lust zu dem ganzen Abi-Zeugs...

Ja immer mal weiterspielen hätte defiinitiv etwas und ich glaube da würden sich auch die Leecher freuen. :D
Und wer weiß vielleicht wird es irgendwann ein universelle Deobfuscator. :P
10/13/2012 16:29 Jeoni#12
#Update 0.4 steht bereit um 1.0.7-Skripte zu deobfuscaten
12/03/2012 17:39 Requiable#13
Der gibt mir immer nen Error wegen tmp.au3
Kannste mir da mal helfen? ;)
Danke
12/03/2012 18:05 Lawliet#14
Denke nen Screenshot wäre besser als "wegen tmp.au3" ;)
12/03/2012 18:28 Requiable#15
Er hat mich schon auf Skype geaddet und wir regeln das ;)