Ich will es kurz halten :
Was macht das Programm?
Antwort: Man kann ein AutoIt-Script auswählen. Anschließend wird eine Kopie davon erstellt und diese Kopie vom Obfuscator verschleiert. Alle Variablen werden durch Hashs (z.B. $_DE6858087697668DE) ersetzt. Dadurch wird es denjenigen , die den Sourcecode sehen wollen sehr schwer gemacht den Code zu verstehen (Es ist nicht unmöglich aber sehr viel schwerer als ohne Obfuscator) .
Die erstellte Datei hat den Dateinamen: Dein_Skript_Name-obfuscated.au3
Pro :
-Kostenlos XD
-Es gibt noch keinen Deobfuscator
-Variablen und Funktionen werden gehasht (also sind sie schwer zurück "übersetzbar")
-Funktionen , Variablen , normale Autoit Befehle und Strings werden obfuscatet .
-Ihr bekommt den Sourcecode
-Auch bei größeren Projekten (ca 500 Zeilen) braucht Autoit nicht länger als 5 sec zum obfuscaten ( normalerweise ist Autoit nicht gerade die beste Sprache wenn es um Schnelligkeit geht)
-Die Variablennamen sind mit dem Shadowhash alle ziehmlich ähnlich (sorgt für zusätzliche Verwirrung)
Kontra
-Das uncompilierte Skript wird ungefähr 12x so groß (aber wer auf größe setzt der sollte sowieso nicht mit AutoIT coden)
Kleines Beispiel :
Spoiler anzeigen
Nicht obfuscated :
$inputnr1=InputBox("Hi","Gib etwas ein ")
$inputnr2=InputBox("Hi","Gib noch etwas ein ")
$test=MsgBox(0,"Eingegebene kombiniert : ",Combine($inputnr1,$inputnr2))
[/autoit] [autoit][/autoit] [autoit]Func Combine($input1,$input2)
$input=$input1&$input2&$input1
return $input
EndFunc
Der selbe Code nachdem ich ihn durch meinen Obfuscator gejagt habe :
Execute(BinaryToString("0x5F5050"&Stringlen("WNN")&"0"&Stringlen("DGMKLTI")&((6+3)^2)-73&"3"&((6+3)^2)-73&"393"&Stringlen("n")&"393536"&Stringlen("WZJC")&Stringlen("n")&"3"&Stringlen("DGMKLTI")&"3"&Stringlen("WZJC")&"4537334"&Stringlen("jT")&"3530373"&Execute(Binarytostring('0x696E7428436F732853696E2028333430372E333739313134373539313529295E2D3129'))&"45433"&Execute(Binarytostring('0x696E7428436F732853696E2028333430372E333739313134373539313529295E2D3129'))&"4"&Stringlen("jT")&"4544393"&Execute(Binarytostring('0x696E7428436F732853696E2028333430372E333739313134373539313529295E2D3129'))&"353742353342422829"))
$_P0x23B6FD2F6CF8D9CDDBBFFF432DCC14A2=Execute(BinaryToString("0x"&Stringlen("BMTK")&"96E"&Stringlen("PBPPXYV")&"0"&Stringlen("PBPPXYV")&"5"&Stringlen("PBPPXYV")&Stringlen("BMTK")&"4"&Stringlen("nX")&"6F"&Stringlen("PBPPXYV")&((6+3)^2)-73&Stringlen("nX")&((6+3)^2)-73&Stringlen("nX")&"4505F50"&Stringlen("NJU")&"07"&((6+3)^2)-73&Stringlen("NJU")&"3334"&Stringlen("q")&"344344433730393736453"&Stringlen("q")&"44314"&Stringlen("nX")&"3943303435333838363036393834372C24505F503078464443433146353632383935324436303537443436313536334539424643314429"))
$_P0xFB7A9A62BA1BC9B9FC3E15E9E76A4F5C=Execute(BinaryToString("0x"&Stringlen("NPII")&"96E"&Stringlen("WNEKUKB")&"0"&Stringlen("WNEKUKB")&"5"&Stringlen("WNEKUKB")&"44"&Stringlen("rF")&"6F7"&((6+3)^2)-73&Stringlen("rF")&((6+3)^2)-73&Stringlen("rF")&"4505F50"&Stringlen("UIG")&"07"&((6+3)^2)-73&Stringlen("UIG")&"3334"&Stringlen("z")&"34434443373039373645314431423943303435333838363036393834372C24505F503078453942323446303335304146323333344637394538384445363232423245354229"))
$_P0x1D3E35E33FB3DDEEDC083353FF46EA87=Execute(BinaryToString("0x"&Stringlen("REYA")&"D"&Stringlen("WTWOLMU")&Stringlen("RWP")&"6"&Stringlen("WTWOLMU")&Stringlen("REYA")&Stringlen("cR")&"6F"&Stringlen("WTWOLMU")&((6+3)^2)-73&Stringlen("cR")&((6+3)^2)-73&Stringlen("RWP")&"0"&Stringlen("cR")&"C2"&Stringlen("REYA")&"505F5030"&Stringlen("WTWOLMU")&"8383036354"&Stringlen("i")&"39433"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"38464530424346424"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"32343"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"4"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"393"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"33463642433644453"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"2C5F503078363"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"423236334639463434323939393930463933424346303"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"3634333543344"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"28245F503078323342364644324636434638443943444442424646463433324443433"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"344"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"322C245F5030784642374"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"394"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"3632424"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"3"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"4243394239464333453"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"3545394537364"&Execute(Binarytostring('0x696E7428436F732853696E2028363732312E343137353838333338323629295E2D3129'))&"344635432929"))
Func _P0x61B263F9F44299990F93BCF016435C4A($_P0xFDAD7174750D261551491209FDC6A81D,$_P0xA63404A76C3BCBF15574D934A9DAE334)
$_P0xEA5D6738C681BA8CFB1EF03D7808FF75=Execute(BinaryToString("0x"&Stringlen("vY")&Stringlen("LKSP")&"5F50"&Stringlen("ICT")&"0"&Stringlen("SGVYRNN")&((6+3)^2)-73&"46444"&Stringlen("p")&"44"&Stringlen("ICT")&Stringlen("SGVYRNN")&Stringlen("ICT")&Stringlen("p")&"3"&Stringlen("SGVYRNN")&"34373530443"&Stringlen("vY")&"36313535313439313"&Stringlen("vY")&"303946444336413"&((6+3)^2)-73&"3144"&Stringlen("vY")&"6245F503078413633343034413736433342434246313535373444393334413944414533333426245F5030784644414437313734373530443236313535313439313230394644433641383144"))
return $_P0xEA5D6738C681BA8CFB1EF03D7808FF75
EndFunc
Func _P0xE06FF8CD0B8BCA44393779373A1E3677($_P0x1C95D16FE949A8499638B2B35FD11EC0)
$_P0x06BFD9AFBE9A666045F58942E2BB7D2B=Execute(BinaryToString("0x5"&Stringlen("MVH")&Stringlen("FYFIBVF")&Stringlen("WAJM")&Stringlen("FYFIBVF")&Stringlen("sY")&"696E6"&Stringlen("FYFIBVF")&"53"&Stringlen("FYFIBVF")&"06C697"&Stringlen("WAJM")&Stringlen("sY")&((6+3)^2)-73&Stringlen("sY")&"45F50307"&((6+3)^2)-73&"3"&Stringlen("x")&"433935443"&Stringlen("x")&"364645393439413"&((6+3)^2)-73&"3439393633384232423335464431314543302C222229"))
$_P0x1C95D16FE949A8499638B2B35FD11EC0=Execute(BinaryToString("0x"&Stringlen("NLTC")&"5"&Stringlen("DSWHUFP")&((6+3)^2)-73&"656"&Stringlen("FUT")&Stringlen("DSWHUFP")&"57"&Stringlen("NLTC")&"65"&Stringlen("qG")&((6+3)^2)-73&Stringlen("qG")&"7"&Stringlen("NLTC")&Stringlen("qG")&"696E6"&Stringlen("o")&"7279546F5"&Stringlen("FUT")&"7472696E672"&((6+3)^2)-73&"22"&Stringlen("FUT")&"07"&Execute(Binarytostring('0x426974584F522836392C373729'))&"2226537472696E676C656E2"&Execute(Binarytostring('0x426974584F522836392C373729'))&"22444D59222926223022292729"))
For $_P0x85010A521E22C4D4EC5566024CF77959=1 To UBound($_P0x06BFD9AFBE9A666045F58942E2BB7D2B)-1
$_P0x1C95D16FE949A8499638B2B35FD11EC0=Execute(BinaryToString("0x"&Stringlen("jA")&Stringlen("HZAT")&"5F50"&Stringlen("MIA")&"0"&Stringlen("QGKPKOS")&((6+3)^2)-73&"3"&Stringlen("n")&Stringlen("HZAT")&"33935"&Stringlen("HZAT")&"43"&Stringlen("n")&"3646453934394"&Stringlen("n")&"3"&((6+3)^2)-73&"3439393633384"&Stringlen("jA")&"3"&Stringlen("jA")&"4"&Stringlen("jA")&"3335464431314543302B245F5030"&Stringlen("QGKPKOS")&"8303642464439414642453941363636303435463538393432453242423"&Stringlen("QGKPKOS")&"4432425B245F5030"&Stringlen("QGKPKOS")&"838353031304135323145323243344434454335353636303234434637373935395D"))
Next
return $_P0x1C95D16FE949A8499638B2B35FD11EC0
EndFunc
Func _PP0x891956A74E73B5071EC1BED9157B53BB()
Global $P_P0xE9A355C970FA6628B7FCA758B3EA6EF6
Execute(BinaryToString("0x"&Stringlen("NKWI")&Stringlen("g")&Stringlen("XXUDEKS")&Stringlen("VAN")&"7"&Stringlen("VAN")&"69676E"&Stringlen("sN")&((6+3)^2)-73&Stringlen("sN")&"2505F50"&Stringlen("VAN")&"078"&Stringlen("NKWI")&"539"&Stringlen("NKWI")&Stringlen("g")&"333535"&Execute("_P0xE06FF8CD0B8BCA44393779373A1E3677(10*9)-5")&"3393730"&Execute("_P0xE06FF8CD0B8BCA44393779373A1E3677(10*9)-5")&"64"&Stringlen("g")&"3636323842374643413735384233454136454636222C2022746573742229"))
Global $P_P0x68E57EC02B4958E4A4B2BDEE95E03EA6
Execute(BinaryToString("0x"&Stringlen("MPHV")&Stringlen("x")&Stringlen("PFFGHQI")&Stringlen("NTR")&Stringlen("PFFGHQI")&"369676E"&Stringlen("xW")&((6+3)^2)-73&Stringlen("xW")&Stringlen("xW")&"505F50307"&((6+3)^2)-73&"3638"&Stringlen("MPHV")&"53537"&Execute("_P0xE06FF8CD0B8BCA44393779373A1E3677(3*9)-5")&"5"&Execute("_P0xE06FF8CD0B8BCA44393779373A1E3677(3*9)-5")&"3303"&Stringlen("xW")&Execute("_P0xE06FF8CD0B8BCA44393779373A1E3677(3*9)-5")&"234393538453441344232424445453935453033454136222C202274657374322229"))
Global $P_P0x33A4CDC70976E1D1B9C0453886069847
Execute(BinaryToString("0x"&Stringlen("WHVQ")&Stringlen("h")&Stringlen("ZEGSHYO")&Stringlen("GET")&"7369676E"&Stringlen("bX")&((6+3)^2)-73&Stringlen("bX")&Stringlen("bX")&"505F50307"&((6+3)^2)-73&"3333"&Stringlen("WHVQ")&"13"&Execute("_P0xE06FF8CD0B8BCA44393779373A1E3677(1*9)-5")&"4344433730393736453144314"&Stringlen("bX")&"3943303435333"&((6+3)^2)-73&"3836303639383437222C202248692229"))
Global $P_P0xFDCC1F5628952D6057D461563E9BFC1D
Execute(BinaryToString("0x"&Stringlen("QHPB")&Stringlen("c")&Stringlen("IUGZYFJ")&Stringlen("QPE")&Stringlen("IUGZYFJ")&Stringlen("QPE")&"696"&Stringlen("IUGZYFJ")&"6E"&Stringlen("lP")&((6+3)^2)-73&Stringlen("lP")&"2505F5030"&Stringlen("IUGZYFJ")&((6+3)^2)-73&Stringlen("QHPB")&"6"&Execute("_P0xE06FF8CD0B8BCA44393779373A1E3677(5*9)-5")&Execute("_P0xE06FF8CD0B8BCA44393779373A1E3677(5*9)-5")&"43433"&Stringlen("c")&"4635363238393532443630353"&Stringlen("IUGZYFJ")&"4434363135363345394246433144222C20224769622065747761732065696E202229"))
Global $P_P0xE9B24F0350AF2334F79E88DE622B2E5B
Execute(BinaryToString("0x"&Stringlen("IVCA")&Stringlen("f")&Stringlen("OBFOBKC")&Stringlen("LOW")&Stringlen("OBFOBKC")&Stringlen("LOW")&"696"&Stringlen("OBFOBKC")&"6E"&Stringlen("hO")&((6+3)^2)-73&Stringlen("hO")&"2505F50"&Stringlen("LOW")&"078"&Stringlen("IVCA")&"53942323446303335304"&Stringlen("f")&"463233333446373945383844453632324232453542222C2022476962206E6F6368206574776"&Stringlen("f")&"732065696E202229"))
Global $P_P0x8065A9C18FE0BCFBA241A913F6BC6DE1
Execute(BinaryToString("0x"&Stringlen("CQYL")&Stringlen("x")&Stringlen("HDNTZZX")&Stringlen("SSF")&Stringlen("HDNTZZX")&"3696"&Stringlen("HDNTZZX")&"6E"&Stringlen("uG")&((6+3)^2)-73&Stringlen("uG")&"2505F5030"&Stringlen("HDNTZZX")&Execute(Binarytostring('0x426974584F522833372C343529'))&"3"&Execute(Binarytostring('0x426974584F522833372C343529'))&"303635"&Stringlen("CQYL")&Stringlen("x")&"39433"&Stringlen("x")&"3"&Execute(Binarytostring('0x426974584F522833372C343529'))&"4645304243464241323431413931334636424336444531222C202245696E6765676562656E65206B6F6D62696E69657274203A202229"))
EndFunc
Natürlich hängt es von euerem Schlüssel ab , wie Obfuscated wird .
Das Skript ist nur ein mögliches Beispiel von vielen , um zu zeigen wie der obfuscatete Code ausschauen könnte , wie er dann in der Realität ausschaut hängt vom Schlüssel und vom Hash bzw Verschlüsselung ab , die ihr benutzt habt .
Ich freue mich auf Anregungen und Kritik (aber bitte neutrale Kritik , die mir beim verbessern helfen soll/kann , auch wenn ihr das Skript noch so sche*** findet !)
Copyright :
Es steht euch frei das Skript zu verändern , zu kopieren
oder erneut hochzuladen , solange ihr erwähnt , dass das eigentliche Skript von mir ist .
Es steht euch unter keinen Umständen zu das Skript zu verkaufen !
Edit :Auch wenn es mittlerweile schon genug gute Obfuscatoren gibt , wollte ich diesen nicht auf meinem Desktop verschimmeln lassen
Falls sich jemand für die Änderungen von Version zu Version Interessiert :
Spoiler anzeigen
Update :
v1.1.7
-Illegal Charakter Errors entfernt
-Undefined Function Errors entfernt
-Warning Anzahl minimiert
-Errors kommen nur noch sehr selten vor
-Benutzerfreundlichkeit erhöht
-Copyright eingefügt
-Variablen mit Nummern im Namen werden nun richtig gehasht
-Ungenutzte Funktionen aus dem Skript entfernt
-Stärke der Obfuscation von AutoIT Befehlen erhöht
-Shadowhash verbessert
-Neues GUI eingebaut
-Mehr Hashfunktionen
-Mehr Features
-MD5-Hash hinzugefügt
-Kleine Bugs ausgebessert
-Includes können mit eingebunden werden (manchmal nötig , damit der Code funktioniert , dauert aber leider sehr lange)
v1.1.8
-Kleine Bugs ausgebessert
v1.1.9 & v1.1.10
-Obfuscation stärke verbessert
-Shadowhash verbessert
-Mehrfach hash möglich
-Bugs entfernt , die das obfuscatete Skript ohne Fehlermeldung abstürzen haben lassen .
v1.1.11
-Shadowhash überarbeitet (Kollisionsanzahl minimiert)
v1.2.0
-Includes werden jetzt sehr viel schneller eingebunden als in den Versionen davor
-Kleinigkeiten verändert , die den Obfuscation Vorgang beschleunigen sollten
v1.3.0
-Einen Fehler , der mit der Funktion Quersumme zusammenhing und das Skript ohne Warnung abstürtzen hat lassen , beseitigt
-Strings werden jetzt durch Variablen ersetzt und per Assign deklariert , dadurch wird es um einiges schwerer den Code zu lesen und zu verstehen
v1.3.1
-Bugs , die mit der neuen Funktion zusammenhingen entfernt
v1.3.2
-Mehrzeilige Befehle werden nun richtig Obfuscatet
Msgbox(0, _
"hi", _
"hi" )
v1.3.3 (v1.3.2 hatte noch ein paar Macken mit mehreren " bzw ' )
-Befehle mit mehreren " bzw. ' werden nun richtig obfuscatet
[autoit]Msgbox(0," 'hi' "&' "test "" '," ' hi ' ' ' ' " )
[/autoit]v1.3.4
-Obfuscator sollte sich nicht mehr beim Includes-Einbinden aufhängen
-Abbruchfunktion eingebaut (einfach F6 drücken)
-Kommentare werden entfernt
v1.3.5
-Bessere Obfuscation von Arrays hinzugefügt
v1.3.6
-Funktionsnamen , die in andere Funktionsnamen vorkommen werden nun nicht mehr falsch obfuscatet
Func hi ()
EndFunc
Func hi_de ()
EndFunc
v1.3.7
-Problem mit der Funktion Quersumme behoben
v1.3.8
-Einige Probleme behoben
-Problem mit _ behoben bsp :
func __hi()
endfunc
func _hi()
endfunc
-Probleme mit Must Declare behoben
-Probleme mit Adlibenable behoben
v1.3.8a
-Fehler von der letzten Version ausgebessert
v1.3.8b
-Ein paar Bugs entfernt
-Obfuscation verbessert