[RELEASE]Undecompileable Autoit program

04/28/2011 19:29 lolkop#16
naja das einfügen von start und endscript sequenzen schützt doch nicht wirklich vor dem decompilieren?

naja man muss etwas zeit aufwenden zum decompilieren, wobei man das im grunde eig nur macht, um zu überprüfen, ob es sich hierbei um viren handelt...

in diesem script steckt beispielsweise solch ein code:
Code:
#Region
#AutoIt3Wrapper_UseUpx=n
#EndRegion
$TRYAGAIN = "Probiers noch einmal"
$TRYAGAIN = "Probiers noch einmal"
$TRYAGAIN = "Probiers noch einmal"
$TRYAGAIN = "Probiers noch einmal"
$TRYAGAIN = "Probiers noch einmal"
$TRYAGAIN = "Probiers noch einmal"
ich persöhnlich bin der meinung, das eine verschleierung des codes eher schlechte als gute konsequenzen hat :s
04/28/2011 19:31 Shadow992#17
Quote:
Originally Posted by lolkop View Post
naja das einfügen von start und endscript sequenzen schützt doch nicht wirklich vor dem decompilieren?

naja man muss etwas zeit aufwenden zum decompilieren, wobei man das im grunde eig nur macht, um zu überprüfen, ob es sich hierbei um viren handelt...

in diesem script steckt beispielsweise solch ein code:
Code:
#Region
#AutoIt3Wrapper_UseUpx=n
#EndRegion
$TRYAGAIN = "Probiers noch einmal"
$TRYAGAIN = "Probiers noch einmal"
$TRYAGAIN = "Probiers noch einmal"
$TRYAGAIN = "Probiers noch einmal"
$TRYAGAIN = "Probiers noch einmal"
$TRYAGAIN = "Probiers noch einmal"
ich persöhnlich bin der meinung, das eine verschleierung des codes eher schlechte als gute konsequenzen hat :s
Das ist aber der falsche Code, führe die Exe doch einmal aus und schau was kommt. ;)

Edit:
Das Verschleiern wird aber nicht ausschließlich für Viren gebraucht.
04/28/2011 21:56 Ende!#18
Quote:
Originally Posted by Shadow992 View Post
Er hat es geschafft, die 2. Crackme gibt es unter:
[Only registered and activated users can see links. Click Here To Register...]
Dieses mal leider (vorerst) ohne Preis. :D
You really did it! Your cracked it!

Ansonsten alles gleich wie beim letzten, würd' ich auf den ersten Blick jetzt sagen ;) Hab dazu btw keinen Decompiler etc. used, ich hab's eben fix per Hand analysiert.
04/28/2011 22:03 Shadow992#19
Quote:
Originally Posted by Ende! View Post
You really did it! Your cracked it!

Ansonsten alles gleich wie beim letzten, würd' ich auf den ersten Blick jetzt sagen ;) Hab dazu btw keinen Decompiler etc. used, ich hab's eben fix per Hand analysiert.
Ende, du bist imba...
Was meinste mit "per Hand gelöst"?
Hast es durch Olly gejagt?

P.S.
Den Sourcecode kannst du so aber, denke ich, nicht herausfinden.
Ich denke du hast dir einfach nur den Stack angeschaut. ;)
04/28/2011 22:31 Ende!#20
Ich hab mir erstmal ein Wenig den grundsätzlichen Aufbau des Au3 Runtime-Interpreters zu Gemüte geführt und beim ersten Durchlauf erstmal das nervige Anti-Debug von Au3 ausgeschaltet (cute, IsDebuggerPresent call =D). Anschließend hab ich mir dann den Mainloop gesucht und die Calls angeschaut, die jeweils einen Teil des Befehls laden. Ist ein wenig blöd, weil vom Au3 Interpreter jeweils nur ein Teil des Befehls geladen und dann entschlüsselt wird. Ich hab halt mit meinem eigenen, kleinen mini-Debugger einen HW-Breakpoint auf die Adresse gesetzt, an der der PTR zu dem entschlüsselten Au3 Teil-Command in einem Register steht, gesetzt und mir immer den String in die Console dumpen lassen. :p

Sollte aber im Grunde kein Problem sein sich die Funktion nochmal genauer anzuschauen und dann zu recoden - der Algorithmus, der zur Verschlüsselung verwendet wird, ist ein einfaches XOR. Ergo ich würde jetzt, wenn ich etwas mehr Zeit hätte, wohl einfach nochmal die Funktion analysieren, die immer einen Part des Codes returnt. Darin könnte ich dann natürlich herrausfinden, wie und wo der Source stored ist; welchen ich dann anschließend durch den Algo entschlüsseln würde. Alles in allem durchaus ohne allzu große Umstände umsetzbar.

Ich möchte noch hinzufügen, dass ich mir das Ganze nicht sehr genau angesehen habe, ich hab etwa 30 Minuten daran rumreversed, meine Aussagen müssen also nicht unbedingt alle stimmen.

/Edit:
Quote:
Ende, du bist imba...
Danke :)