AutoIt3 Decompiler

09/13/2011 01:47 link#1
Hi,
ich habe mich gestern (mittlerweile vorgestern) mal an einen kleinen AutoIt "Decompiler" gesetzt und bin vor ein paar Stunden damit fertig geworden.
Angeschaut habe ich mir nur die neuste AutoIt-Version (also v3.3.6.1), daher wird vermutlich auch nur diese vom Tool unterstützt.

See ReadMe.txt for further information.

Version 0.02:
habe einen kleinen Einrückungsfehler behoben und Support für verschiedene Versionen hinzugefügt

Version 0.03:
Es sollten nun von v3.2.6.0 bis v3.3.7.15 alle Versionen unterstützt werden.
Kleine ReadMe.txt liegt auch bei :)

Version 0.04b:
Bei vordefinierten Funktionen, Schlüsselwörtern, #-Direktiven und Makros wird die Groß- und Kleinschreibung aus der AutoIt Dokumentation verwendet.
Zusätzlich sollten nun auch Dateien, die über FileInstall eingebunden wurden, (in den gleichen Ordner, in dem sich die AutoIt-Exe befindet,) extrahiert werden.

Version 0.05:
Hab ein paar Commandline-Befehle hinzugefügt (Näheres steht in der ReadMe.txt).
Außerdem gab's noch kleinere Space-Fehler und die Groß- und Kleinschreibung von #-Direktiven war nicht richtig angepasst.

Version 0.06:
Crash gefixt, der auftrat, wenn man nur einen Dateinamen statt eines vollen Pfades angegeben hat (Thx an cw2k für Bug Report und Stelle im Code)
Sollte nun auch Armadillo Dateien unterstützen, die Memory-Patching Protection haben (Thx an cw2k für Bug Report und eine Beispielexe)
Außerdem hab ich noch eine quick&dirty Deobfuscation für Jos van der Zandes Obfuscator hinzugefügt (ziemlich unsauber.. falls es nicht oder fehlerhaft funktioniert, deaktivieren oder myAutToExe benutzen)

Version 0.07b:
Rudimentärer Support von 64bit AutoIt Exen implementiert ([Only registered and activated users can see links. Click Here To Register...])

Version 0.08:
Die Ausgabe ist nun in UTF-8 kodiert und es wurden alle AutoIt-Versionen bis v3.3.10.0 hinzugefügt (also die neue Release-Version und alle Betas dazwischen).

Version 0.09:
Support für Safengine und Undecompile It by M3 implementiert und FileInstalls wurden nicht richtig extrahiert.

Version 0.10:
Neuste Beta-Versionen & Support für Enigma Protector hinzugefügt und paar kleine Bugs gefixt.

Version 0.11:
Support für Break-Script von houdini hinzugefügt und einen Bug bezgl. der Einrückung gefixt.


[Only registered and activated users can see links. Click Here To Register...]


Getestete PackerGetestete Mods
unverändert (UPX 3.3)AutoIt3Camo 0.26.5 Beta
Themida 2.1.8.0/2.2.7.0 DemoShadow992's CrackMe v3
Armadillo 8.60 TrialCWAutoComp 2.19
DYAMAR Protector v?Undecompile It by M3
Safengine Shielden v?Break-Script 2.0 by houdini
Enigma Protector 3.150 
09/13/2011 14:13 Che#2
VT fehlt... bitte reineditieren...
Achja: wenn ich die Datei ausführe mault mein Avira rum (Bloodhound.Malautoit)

€dit:

Ich editier jetzt mal, weil ich meinen 500. Post nicht so verschwenden will und noch nicht mit meinem Tutorial fertig bin...

Also:
Die Bloodhound.Malautoit's findet er im Samples Ordner, aber die exe2aut.exe hat er mir auch geblockt und gleich noch gelöscht...
Während mein Avira das Programm während der Ausführung geblockt hat, hat dein Prog n ganzen haufen Temporärer Dateien im Samples Ordner zurückgelassen, was hat es mit denen auf sich?
VT halte ich sehrwohl für angebracht, auch wenn du weißt, dass die Datei clean ist (da glaub ich dir einfach mal und funktionieren tuts ja auch) aber trotzdem möchte mann halt mehr sicherheit :awesome:
Würde den VT normalerweiße selber machen und reinstelln, aber meine Bandbreite ist grade voll ausgelastet, weil ich ca 2gb Videomaterial für mein Tutorial auf Youtube hochlade..... Also bitte mach das selbst...


Source würde mich auch interessieren, wollte schon immer mal wissen, wie man den Autoit Source von ner Compilten Autoit-Executable rauskriegt... (naja mir würde da nur das generieren des Sources über die ASM-Befehle der .exe einfallen, aber das doch bissel arg aufwändig oder? Naja egal wirst es wohl anders machen, sonst könntest die Variablennamen ja logischerweiße nicht zurückkriegen...)

PS: Nettes bild ;D

€dit2:
Also es legt mir Folgende Dateien im Ordner Samples an:
EnCodeIt2.0.exe
EnCodeItInfo/200699.dll
EnCodeItInfo/SkinCrafter.dll
VanZande3 Obfuscated/newprep.au3
VanZande2 Obfuscated/VanZandeObfuscated-Protect.au3.tbl
VanZande2 Obfuscated/VanZandeObfuscated-Protect_Obfuscated.au3
VanZande2 Obfuscated/VanZandeObfuscated-Protect_Obfuscated-tidy.au3
VanZande2 Obfuscated/VanZandeObfuscated-Protect_original.au3
VanZande1 Obfuscated/Simon_obfu.au3
VanZande1 Obfuscated/Simon_orginal.au3
EnCodeIt2 Src Reloaded/EnCodeIt2-reloaded.au3
ahk/ahk_modified.exe
AutoIt2/Snapshot.exe
AutoIt316_TokenFile/TokenTestFile.au3
AutoIt316_TokenFile/!other/_00CF0000.mem
AutoIt316_TokenFile/decompiled/TokenTestFile_Decompiled.au3
AutoIt316_TokenFile/orginal/TokenTestFile.tok

Außerdem Setzt es Verknüpfungen auf folgende Seiten:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

WTF ist dat? Muss aber nochmals dazusagen, dass das Programm mitten unter der Ausführung geblockt wurde

PS: Editiern macht Spaß, spart Posts :awesome:

€dit3: Schade dein Decompiler lässt sich nicht selbst decompilen (Beim .net Reflector ging das, der kann sich selbst decompilen :D)
09/13/2011 14:55 cooler7878#3
Wäre es möglich ,dass du den Source Code reinstellst ?
09/13/2011 16:58 link#4
@〤Che〤:
Ich halte einen VT Bericht eigentlich nicht für nötig, da ich ja weiß, dass nichts drinnen ist ;)
Wenn du welche Datei ausführst?
Bloodhound.Malautoit hört sich nach einer AutoIt-Exe an, Exe2Aut ist aber mit FASM assembliert. Muss wohl eine der Dateien im Samples Ordner sein.

@cooler7878:
Weiß nicht, warum?

Edit:
hehe, Source über's Disassemblieren ist leider nicht möglich, da entstünde aufgrund der Komplexität höchstens Pseudocode wie bei Boomerang oder Hex-Rays
Dass das Tool einen ganzen Haufen Dateien erstellt, sollte eigentlich nicht sein, nur eine, wo dann der Code reinkommt :)
autoit_script.exe -> autoit_script_.au3

Btw. meine Exe ist mit MEW gepackt, um ein paar Bytes zu sparen, und die Samples sind unter "Getestet mit" genannt, also UPX, Camo, Themida und das CrackMe.
09/13/2011 18:34 cooler7878#5
Aus purem Interesse , keine Angst ich werde nichts leaken oder dergleichen.
09/13/2011 18:46 link#6
@cooler7878:
Später wahrscheinlich, ich wollte erst mal gucken, ob's überhaupt funktioniert und ob Interesse besteht

@〤Che〤:
Wtf, das ist aber nicht von mir..
Wann genau werden diese Dateien erstellt, also was führst du aus?

Wie soll das Tool denn seinen eigenen Source wiederherstellen?
Ist doch nicht in AutoIt geschrieben :P
09/13/2011 19:13 cooler7878#7
Ich danke dir !!
btw:Lustige Tags(porn, xxx)
09/15/2011 04:26 abomodar#8
does it support autocamo file that packed with armadillo ?
09/15/2011 10:47 link#9
Don't know. Got some target for me to examine?
09/15/2011 14:36 Che#10
Quote:
Originally Posted by link View Post
@〤Che〤:
Wtf, das ist aber nicht von mir..
Wann genau werden diese Dateien erstellt, also was führst du aus?

Wie soll das Tool denn seinen eigenen Source wiederherstellen?
Ist doch nicht in AutoIt geschrieben :P
Uhm wtf? ;D
Hab mir dein lustiges Prog runtergeladen, entpackt (alles ausm Archiv entzippt), das Prog ausgeführt, 3 Minuten gewartet und gedacht: Wann startet das ding endlich? Dann kam die Meldung vom Avira, dass er das Tool geblockt + gelöscht hat und dann hab ich mir gedacht: Scheiß Avira, hab Avira ausgeschaltet und die Dateien wiederhergestellt und wollte dann ausm Sample Ordner n paar Dateien ausprobieren und merk so, dass da n haufen Dateien sind, denk mir WTF? und hab mich gewundert was das is...
Achja: Beim Themida (wars Themida? glaube schon) gibt er mir n Error aus (kann nicht decompilet werden bla bla) und wenn ich die Datai direkt ausführ (also das Themida-gepackte ding) sagt er mir, dass ich es ned ausführen kann, weil nur der, der es gepackt hat ausführen darf .... o.O

Achja: Hab jetzt endlich meinen Release zum 500. draußen, kann wieder fröhlich 20 Posts am Tag tippen :awesome:
09/15/2011 16:18 link#11
Ich hab gestern Nacht 'ne neue Version hochgeladen, ohne Samples und nicht mit MEW gepackt, vllt. könntest du nochmal gucken, ob Avira sich immer noch meldet.
Bei Themida habe ich einfach die Standardeinstellungen verwendet, funktionieren sollte es eigentlich schon.
Allerdings öffnet sich bei mir ein Splashscreen und sagt, dass es sich um die Demo Version handelt, den man erst einmal wegklicken muss.
09/16/2011 02:51 abomodar#12
This is test.au3 file that u provide with ur tools compiled with auotit3camo and packed with armadillo [Only registered and activated users can see links. Click Here To Register...]
or u can download armadillo packer from here try test it with any compiled autoit file [Only registered and activated users can see links. Click Here To Register...]
09/16/2011 19:34 link#13
Hm, yeah..
Obviously it doesn't work with Armadillo as it's wrapping the executable's code into a protected child process

Btw. which version of Armadillo were you actually using?
I don't know what version this is, either, but I was using the following to test Armadillo ([Only registered and activated users can see links. Click Here To Register...]) and apparently it works quite different..


Edit:
Ah, it seems like the specified level of security is the cause of making Armadillo spawn a child process.
Means you checked "CopyMem-II + Debug-Blocker", didn't you?

I just tried to implement some workaround, could you test it again, once with the standard protection and a second time with debug-blocker and report back if it worked?

You have to pass "-armadillo" to Exe2Aut.exe for trying to decompile a target protected with Armadillo's Debug-Blocker

(see 1st post)
09/16/2011 21:40 blinko#14
just had to say this has helped me in ways you could maybe imagine :P I've been able to gain sources back from compiled executables that I lost my sources too thanx a bunch xD
09/17/2011 00:08 abomodar#15
Thank you Link
the new version u provide work well with Armadillo standard protection and Debug-Blocker
Best regards