Shadows Obfuscator (mit Sourcecode)

10/17/2010 01:14 Jari_666#91
Es liegt mit grosser Sicherheit am Inhalt des Scripts, denn eine Testdatei mit einer einfach MessageBox macht keine Probleme. Was wird denn nach den Strings obfuscatet? Entweder er crasht bei den Strings oder gleich danach, wobei ja gemeldet wird, dass die Strings erfolgreich obfuscatet wurden. Kann dir das Script leider nicht schicken, da einfach schon zu viel Arbeit drinsteckt, als dass ich es jemandem anvertrauen würde ^^
Ich verwende im Script auch Opt(), @CR, GUI-Konstanten, HotKeys, DLL-Funktionen, ....

Es wäre sicher hilfreich, wenn ich wüsste, was nach den Strings obfuscatet wird.

MfG
10/17/2010 01:17 Shadow992#92
Quote:
Originally Posted by Jari_666 View Post
Es liegt mit grosser Sicherheit am Inhalt des Scripts, denn eine Testdatei mit einer einfach MessageBox macht keine Probleme. Was wird denn nach den Strings obfuscatet? Entweder er crasht bei den Strings oder gleich danach, wobei ja gemeldet wird, dass die Strings erfolgreich obfuscatet wurden. Kann dir das Script leider nicht schicken, da einfach schon zu viel Arbeit drinsteckt, als dass ich es jemandem anvertrauen würde ^^
Ich verwende im Script auch Opt(), @CR, GUI-Konstanten, HotKeys, DLL-Funktionen, ....

Es wäre sicher hilfreich, wenn ich wüsste, was nach den Strings obfuscatet wird.

MfG
Danach werden die Unnötigen Zeilen entfernt.
Kannst ja mal testweise ausbauen, deswegen liegt der Source ja bei. ;)
10/17/2010 01:20 omer36#93
shadow, bug: (müsste glaube ich bei jedem sein)
wenn der name der .au3 ein "leerzeichen" im namen hatt, crashed es.
"hallo 123.au3" ->crash.
"hallo123.au3" -> geht.


vllt schauste mal ob es bei dir auch ist ^^
10/17/2010 01:30 Jari_666#94
Quote:
Originally Posted by Shadow992 View Post
Danach werden die Unnötigen Zeilen entfernt.
Kannst ja mal testweise ausbauen, deswegen liegt der Source ja bei. ;)
Weiss leider nicht welchen von den 192'302'102'102 C++ Compilern, welche zu 99% nicht gehen, ich nehmen sollte. Kann es sein, dass Zeile 910 dort falsch am Platz ist?
Code:
test.ObfuscateFunctions();
cout<<"Funktionen wurden erfolgreich obfuscatet.\n";
test.ObfuscateCommands();
cout<<"Befehle wurden erfolgreich obfuscatet.\n";
test.ObfuscateStrings();
cout<<"Strings wurden erfolgreich obfuscatet.\n";
[color=red][b]test.ObfuscateCommands();[/b][/color]
test.RemoveUnusedLines();
cout<<"Unnötige Zeilen wurden erfolgreich entfernt.\n";
10/17/2010 01:34 Shadow992#95
Quote:
Originally Posted by Jari_666 View Post
Weiss leider nicht welchen von den 192'302'102'102 C++ Compilern, welche zu 99% nicht gehen, ich nehmen sollte. Kann es sein, dass Zeile 910 dort falsch am Platz ist?
Code:
test.ObfuscateFunctions();
cout<<"Funktionen wurden erfolgreich obfuscatet.\n";
test.ObfuscateCommands();
cout<<"Befehle wurden erfolgreich obfuscatet.\n";
test.ObfuscateStrings();
cout<<"Strings wurden erfolgreich obfuscatet.\n";
[color=red][b]test.ObfuscateCommands();[/b][/color]
test.RemoveUnusedLines();
cout<<"Unnötige Zeilen wurden erfolgreich entfernt.\n";
Nein das ist das 2. Obfuscaten, das Erste macht nur die Befehle von deinem eigentlichen Skript, das zweite zusätzlich noch die vom Code erstellten Funktionen. ;)
10/17/2010 01:49 Jari_666#96
Es musst mit der Grösse des Scripts zu tun haben. Als Testcode habe ich folgende Zeile verwendet:
Code:
_MD5(_HexToString(_StringToHex(_HexToString(_StringToHex(_StringEncrypt(0, _StringEncrypt(1, _HexToString(_StringToHex("MsgBox(64, 'Test', 'Test')")), 123, 3), 123, 3)))))))
Mit einer Zeile crasht er nicht, bei 3538 aber schon :D
10/17/2010 10:43 Shadow992#97
Quote:
Originally Posted by Jari_666 View Post
Es musst mit der Grösse des Scripts zu tun haben. Als Testcode habe ich folgende Zeile verwendet:
Code:
_MD5(_HexToString(_StringToHex(_HexToString(_StringToHex(_StringEncrypt(0, _StringEncrypt(1, _HexToString(_StringToHex("MsgBox(64, 'Test', 'Test')")), 123, 3), 123, 3)))))))
Mit einer Zeile crasht er nicht, bei 3538 aber schon :D
Meine Projekte waren teilweise noch größer, also liegt es ziemlich sicher nicht daran.
Ich glaube aber das Problem gefunden zu haben, sollte also jetzt klappen.
Genauso wie die MutilineComments jetzt richtig entfernt werden sollten. :D
10/17/2010 17:03 Jari_666#98
Komisch, 2x ist er gecrasht, beim 3. Mal ging's dann, obwohl der Code ein und derselbe war oO
Jetzt crasht aber der Interpreter beim Ausführen des Scripts :O
10/17/2010 17:54 Shadow992#99
Quote:
Originally Posted by Jari_666 View Post
Komisch, 2x ist er gecrasht, beim 3x Mal ging's dann, obwohl der Code ein und derselbe war oO
Jetzt crasht aber der Interpreter beim Ausführen des Scripts :O
AutoIt crasht normalerweise nicht, falls du von Errors redest, wäre es hilfreich zu wissen welche genau auftauchen.
10/17/2010 18:05 Jari_666#100
Es war ein kompletter Crash der Interpreters, keine Errors. Habe versucht mit MsgBox mich an die Codestelle heranzuarbeiten, jedoch crasht der Interpreter jetzt nicht mehr, sondern gibt ein paar Errors wegen Variablen aus. Ist es denn normal, dass die Variablen umbenannt werden? Eine Variable bei mir heisst z.B.
Code:
$GUI_Options_Settings_LootMobsKey
diese wurde dann zu
Code:
$GUI_Options_Settings_[b][color=red]irgendeinHash[/color][/b]Key
Konnte es jetzt sogar schaffen, dass die GUI angezeigt wird, da der Interpreter jetzt komischerweise nicht mehr crasht. Liegt wahrscheinlich daran, dass ich das Script nach ein paar MsgBox neu obfuscatet habe.

Was auch komisch ist, ist die Tatsache, dass der Obfuscator beim genau gleichen Script 10 Mal crashen kann, aber beim 11 Mal erfolgreich obfuscatet.

Edit// Mit welchen Funktionen kommt der Obfuscator denn nicht klar? GUI(Ctrl)SetOnEvent funktioniert jedenfalls nicht.
10/17/2010 18:12 Shadow992#101
Quote:
Originally Posted by Jari_666 View Post
Es war ein kompletter Crash der Interpreters, keine Errors. Habe versucht mit MsgBox mich an die Codestelle heranzuarbeiten, jedoch crasht der Interpreter jetzt nicht mehr, sondern gibt ein paar Errors wegen Variablen aus. Ist es denn normal, dass die Variablen umbenannt werden? Eine Variable bei mir heisst z.B.
Code:
$GUI_Options_Settings_LootMobsKey
diese wurde dann zu
Code:
$GUI_Options_Settings_[b][color=red]irgendeinHash[/color][/b]Key
Konnte es jetzt sogar schaffen, dass die GUI angezeigt wird, da der Interpreter jetzt komischerweise nicht mehr crasht. Liegt wahrscheinlich daran, dass ich das Script nach ein paar MsgBox neu obfuscatet habe.

Was auch komisch ist, ist die Tatsache, dass der Obfuscator beim genau gleichen Script 10 Mal crashen kann, aber beim 11 Mal erfolgreich obfuscatet.

Edit// Mit welchen Funktionen kommt der Obfuscator denn nicht klar? GUI(Ctrl)SetOnEvent funktioniert jedenfalls nicht.
Zu Variablen:
Wenn du eine Funktion hast, die _LootMobs heißt, dann kann es sein, dass die Variable in Mitleidenschafft gezogen wird.

Zu OnEvent:
Edit: Habe es mir jetzt angeschaut und OnEvent funktioniert selbst bei großen Skripten ohne Probleme.

Zum Crashen:
Das liegt wahrscheinlich daran, dass der Obfuscator das Skript jedesmal anders obfuscatet.


Edit:
Das mit den Variablen sollte jetzt auch behoben sein.
10/17/2010 18:40 Jari_666#102
Manchmal kommt mittlerweile auch "Duplicate function name" bei Funktionen, die mehr als 0 Parameter haben, deren Variablen aber unterschiedlich gehasht sind. Wenn dies nicht auftritt, dann crasht der Interpreter. Ich werde mal versuchen den ganzen Start mit MsgBox immer wieder zu stoppen, um den Fehler zu lokalisieren ^^
10/17/2010 18:55 Shadow992#103
Quote:
Originally Posted by Jari_666 View Post
Manchmal kommt mittlerweile auch "Duplicate function name" bei Funktionen, die mehr als 0 Parameter haben, deren Variablen aber unterschiedlich gehasht sind. Wenn dies nicht auftritt, dann crasht der Interpreter. Ich werde mal versuchen den ganzen Start mit MsgBox immer wieder zu stoppen, um den Fehler zu lokalisieren ^^
Der Fehler mit dem Duplicate Functionsnames sollte jetzt auch verschwunden sein. :D
Der Obfuscator sollte jetzt auch nicht mehr crashen. :D
10/17/2010 20:38 Jari_666#104
Leider crasht es immernoch nach den Strings. Habe jetzt zwar alles mit MsgBox zugepflastert, aber aus mir unerklärlichen Gründen stoppt das Script irgendwo. Vor allen Exits sind MsgBoxen,
Code:
Opt("OnExitFunc", "_blabla")
Func _blabla()
	Msgbox(64, "Info", "Exit")
EndFunc
verwende ich auch, aber es kommt keine MsgBox.
10/17/2010 22:03 Shadow992#105
Quote:
Originally Posted by Jari_666 View Post
Leider crasht es immernoch nach den Strings. Habe jetzt zwar alles mit MsgBox zugepflastert, aber aus mir unerklärlichen Gründen stoppt das Script irgendwo. Vor allen Exits sind MsgBoxen,
Code:
Opt("OnExitFunc", "_blabla")
Func _blabla()
	Msgbox(64, "Info", "Exit")
EndFunc
verwende ich auch, aber es kommt keine MsgBox.
Ich habe so das Gefühl, dass AutoIt das nicht mit macht.
Scheinbar sind das ein paar zu viel Zeilen. ^^