Achat's tiny Obfuscator

05/04/2013 20:13 Achat#1
Hi epvp!

Here I release my tiny Obfuscator:

Code:

Features:
  • Rename all functions irreversible
  • Rename all variables irreversible

How to use:
  1. Select an AutoIt Script
  2. wait a sec
  3. Now you'll find a scriptname.o.au3 file in your script's directory, in which all variable & function names are replaced by some random names. That makes it impossible to get the original variable/function names back.
Note: #include,Assign,Eval are not supported and will lead to errors!

Kind Regards
05/04/2013 20:55 MIROELHACKER#2
i didnt under stand Give a video tut
05/04/2013 20:58 Achat#3
of course ;)
Kind Regards
05/05/2013 00:43 YatoDev#4
Ja schonmal gut aber.willst du den noch weiter verbessern oder bleibt bei dieser funktion ? :D Jeder obfuscator benennt vars und funcs um deswegen hab ich halt keine verwendung fuer deinen aber trotzdem sehr gute arbeit :)
05/05/2013 01:57 Achat#5
[04.05.2013 23:39:51] S!r Achat: Alles, was über das Umbennenen von Variablen und Funktionsnamen hinausgeht, gefährdet die fehlerfreie Ausführung des Scripts, verlangsamt es auf jeden Fall!
Und es ist mit Aufwand sowieso wieder umzukehren.
[04.05.2013 23:44:10] S!r Achat: @error und @extended auslesen
[04.05.2013 23:44:15] S!r Achat: könnte Fehlschlagen

evtl. kommt noch was dazu^^

MfG
05/05/2013 13:08 YatoDev#6
Eine schoene funktion waere wenn das script alle strings die z.b. so aussehen : $test = "hallo" irgendwie "verschluesselt"
05/05/2013 13:16 Achat#7
Quote:
Originally Posted by »FlutterShy™ View Post
Eine schoene funktion waere wenn das script alle strings die z.b. so aussehen : $test = "hallo" irgendwie "verschluesselt"
Bringt dir nichts, da der String ja im Endeffekt wieder ausgegeben werden muss. Mit Aufwand kannst du das wieder "entschlüsseln"
Es macht das ganze nur langsamer und fehleranfälliger.
Am besten sensible Daten gar nicht erst im Skript speichern (Adressen etc.).
Oder noch besser: Gar nicht erst releasen -> keiner kann es leechen.

Quote:
Originally Posted by Achat View Post
[04.05.2013 23:39:51] S!r Achat: Alles, was über das Umbennenen von Variablen und Funktionsnamen hinausgeht, gefährdet die fehlerfreie Ausführung des Scripts, verlangsamt es auf jeden Fall!
Und es ist mit Aufwand sowieso wieder umzukehren.
und btw
Quote:
Originally Posted by Achat View Post

Here I release my tiny Obfuscator:
[Only registered and activated users can see links. Click Here To Register...]
Dann wäre es kein 8-Zeiler mehr.

MfG
05/05/2013 13:26 YatoDev#8
Jo aber trotzdem . naja ich brauch autoit eh nicht mehr so oft
05/05/2013 15:45 Shadow992#9
Quote:
Originally Posted by Achat View Post
Bringt dir nichts, da der String ja im Endeffekt wieder ausgegeben werden muss. Mit Aufwand kannst du das wieder "entschlüsseln"
Es macht das ganze nur langsamer und fehleranfälliger.
Am besten sensible Daten gar nicht erst im Skript speichern (Adressen etc.).
Oder noch besser: Gar nicht erst releasen -> keiner kann es leechen.



und btw

[Only registered and activated users can see links. Click Here To Register...]
Dann wäre es kein 8-Zeiler mehr.

MfG
Noch nicht getestet aber werde ich definitiv noch tun :-D
Zu deiner Aussage, natürlich ist das Umkehrbar aber du musstfolgende Sachen im hinterkopf behalten:
1. Deobfuscaten per Hand:
Der Source-Code wird weiestgehend analysiert und die Stelle wird gesucht an der die sensiblen Daten stehen könnten. Hier ist es wichtig strings usw. zu verschlüsseln, damit es nicht einfach ist diese Stelle zu finden.
2. Per programm:
Hier muss man es dem programm so schwer wie moeglich machen also bringen zusätzliche masnahmen schon etwas.


Edit:
Wenn du nur auch RegEx setzt hast du ein Problem, nämlich folgendes:

Code:
$text&="Start bot first"
Func start()

endfunc
In den Strings würde "Start" jetzt auch umbenannt werden. In diesem Fall ist das nur ein Schönheitsfehler, aber was ist, wenn man einen kleinen Interpreten selbst schreiben möchte?

Code:
if($string="start") then
start()
endif

func start()

endfunc
Sicher das Ganze mag nicht oft passieren und dennoch gibt es dort Probleme.
06/06/2013 12:48 Achat#10
Quote:
Originally Posted by Shadow992 View Post
In den Strings würde "Start" jetzt auch umbenannt werden. In diesem Fall ist das nur ein Schönheitsfehler, aber was ist, wenn man einen kleinen Interpreten selbst schreiben möchte?
Strings müssen zuerst obfuscated werden.
Ich habe schon eine eigene Verschlüsselungsfunktion für Strings, diese würde ich aber ungern in .au3 weitergeben.
Vielleicht lasse ich Strings dann auf einem Server entschlüsseln.

String obfuscation gestaltet sich auch etwas schwierig, wenn " und ' vermischt werden.
Code:
MsgBox(0,"Ein Test",'Nur ein ''Test",''"')
MfG
06/06/2013 14:56 Lawliet#11
Quote:
Originally Posted by Achat View Post
Vielleicht lasse ich Strings dann auf einem Server entschlüsseln.
Sowas in der Art hab ich früher schonmal gemacht. Kann man vergessen. Das Script wird viel zu langsam.
06/06/2013 16:25 Shadow992#12
Quote:
Originally Posted by Achat View Post
Strings müssen zuerst obfuscated werden.
Ich habe schon eine eigene Verschlüsselungsfunktion für Strings, diese würde ich aber ungern in .au3 weitergeben.
Vielleicht lasse ich Strings dann auf einem Server entschlüsseln.

String obfuscation gestaltet sich auch etwas schwierig, wenn " und ' vermischt werden.
Code:
MsgBox(0,"Ein Test",'Nur ein ''Test",''"')
MfG
Bei meinen Obfuscatoren klappt es. :P
08/17/2013 20:17 Achat#13
Habe den Code noch um eine Zeile verkürzt
Code:
FileDelete(StringTrimRight($sScript, 4) & '.o.au3')
FileWrite(StringTrimRight($sScript, 4) & '.o.au3', $sSource)
Code:
FileWrite(FileOpen(StringTrimRight($sScript, 4) & '.o.au3',2), $sSource)
€dit:

Quote:
Originally Posted by »FlutterShy™ View Post
Ja schonmal gut aber.willst du den noch weiter verbessern oder bleibt bei dieser funktion ? :D Jeder obfuscator benennt vars und funcs um deswegen hab ich halt keine verwendung fuer deinen aber trotzdem sehr gute arbeit :)
Danke. Habe ihn mittlerweile erweitert.

MfG