; Author ........: Shadow992 ; Modified.......: No Edit ; Version........: 1.3.8c ; Copyright by Shadow992 #RequireAdmin #Include #include #include #include #include #include #include #include #include #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Obfuscator by Shadow992", 569, 267, 253, 183, Default, $WS_EX_ACCEPTFILES) GUISetBkColor(0x9DB9EB) $Schlussel_Button = GUICtrlCreateButton("Generate a new key", 416, 40, 145, 25, $WS_GROUP) $Schlussel_Input = GUICtrlCreateInput("", 8, 40, 401, 21) $Datei_Input = GUICtrlCreateInput("", 8, 8, 353, 21) GUICtrlSetState($Datei_Input, $GUI_DROPACCEPTED) $Datei_Button = GUICtrlCreateButton("Select file to obfuscate", 368, 8, 193, 25, $WS_GROUP) $Label1 = GUICtrlCreateLabel("", 8, 88, 259, 113) $Variblen_Checkbox = GUICtrlCreateCheckbox("Variable name obfuscate", 288, 80, 193, 20) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $Funktionen_Checkbox = GUICtrlCreateCheckbox("Own functions obfuscate", 288, 120, 201, 20) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $AutoITBefehleObfuscaten_Checkbox = GUICtrlCreateCheckbox("AutoIT Commands obfuscate", 288, 160, 195, 20) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $Hash_Combobox = GUICtrlCreateCombo("Shadowhash", 8, 208, 265, 25) GUICtrlSetData($Hash_Combobox,"RC4|CRC32|MD5|MD5 & RC4|MD5 & CRC32|Shadowhash & RC4|CRC32 & RC4|CRC32 & Shadowhash & RC4 & MD5 ") GUICtrlSetState($Hash_Combobox,$GUI_DISABLE) $AutoITStarkObfuscate_Checkbox = GUICtrlCreateCheckbox("AutoIT commands strongly obfuscate", 312, 184, 239, 25) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUICtrlSetState($AutoITStarkObfuscate_Checkbox,$GUI_DISABLE) $Group1 = GUICtrlCreateGroup("", 280, 144, 281, 73) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group2 = GUICtrlCreateGroup("", 280, 104, 281, 41) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group3 = GUICtrlCreateGroup("", 280, 64, 281, 41) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group4 = GUICtrlCreateGroup("", 280, 216, 281, 41) GUICtrlCreateGroup("", -99, -99, 1, 1) $Includes_Checkbox= GUICtrlCreateCheckbox("Includes integrate (minimizes number of errors)", 288, 232, 271, 20) $Kommentar_Checkbox=$GUI_UNCHECKED GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $Start = GUICtrlCreateButton("Start", 8, 232, 265, 25, $WS_GROUP) $Label2 = GUICtrlCreateLabel("© by Shadow992", 76, 64, 124, 24) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0xFF0000) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### $randT="" For $k=0 To Random(20,50,1) If Random(0,1,1)=1 Then $randT=$randT&chr(Random(65,90,1)) Else $randT=$randT&chr(Random(97,122,1)) EndIf Next GUICtrlSetData($Schlussel_Input,$randT) $Zahl=1 $file="" $write="" $salt=Random(65,90,1) $salt2=Random(1,999,1) dim $kommentar[1] dim $arrays[1] $Zahl2=0 $key=0 $file2=0 $hash=0 $read=0 _GUICtrlComboBox_SetCurSel($Hash_Combobox,3) HotKeySet("{F6}","Ende") #Region Hashfunctions made by Ward (http://www.autoitscript.com/forum) Global $_MD5Opcode = '0xC85800005356576A006A006A008D45A850E8280000006A00FF750CFF75088D45A850E8440000006A006A008D45A850FF7510E8710700005F5E5BC9C210005589E58B4D0831C0894114894110C70101234567C7410489ABCDEFC74108FEDCBA98C7410C765432105DC21000C80C0000538B5D088B4310C1E80383E03F8945F88B4510C1E0030143103943107303FF43148B4510C1E81D0143146A40582B45F88945F4394510724550FF750C8B45F88D44031850E8A00700008D43185053E84E0000008B45F48945FC8B45FC83C03F39451076138B450C0345FC5053E8300000008345FC40EBE28365F800EB048365FC008B45102B45FC508B450C0345FC508B45F88D44031850E84D0700005BC9C21000C84000005356576A40FF750C8D45C050E8330700008B45088B088B50048B70088B780C89D021F089D3F7D321FB09D801C1034DC081C178A46AD7C1C10701D189C821D089CBF7D321F309D801C7037DC481C756B7C7E8C1C70C01CF89F821C889FBF7D321D309D801C60375C881C6DB702024C1C61101FE89F021F889F3F7D321CB09D801C20355CC81C2EECEBDC1C1C21601F289D021F089D3F7D321FB09D801C1034DD081C1AF0F7CF5C1C10701D189C821D089CBF7D321F309D801C7037DD481C72AC68747C1C70C01CF89F821C889FBF7D321D309D801C60375D881C6134630A8C1C61101FE89F021F889F3F7D321CB09D801C20355DC81C2019546FDC1C21601F289D021F089D3F7D321FB09D801C1034DE081C1D8988069C1C10701D189C821D089CBF7D321F309D801C7037DE481C7AFF7448BC1C70C01CF89F821C889FBF7D321D309D801C60375E881C6B15BFFFFC1C61101FE89F021F889F3F7D321CB09D801C20355EC81C2BED75C89C1C21601F289D021F089D3F7D321FB09D801C1034DF081C12211906BC1C10701D189C821D089CBF7D321F309D801C7037DF481C7937198FDC1C70C01CF89F821C889FBF7D321D309D801C60375F881C68E4379A6C1C61101FE89F021F889F3F7D321CB09D801C20355FC81C22108B449C1C21601F289D021F889FBF7D321F309D801C1034DC481C162251EF6C1C10501D189C821F089F3F7D321D309D801C7037DD881C740B340C0C1C70901CF89F821D089D3F7D321CB09D801C60375EC81C6515A5E26C1C60E01FE89F021C889CBF7D321FB09D801C20355C081C2AAC7B6E9C1C21401F289D021F889FBF7D321F309D801C1034DD481C15D102FD6C1C10501D189C821F089F3F7D321D309D801C7037DE881C753144402C1C70901CF89F821D089D3F7D321CB09D801C60375FC81C681E6A1D8C1C60E01FE89F021C889CBF7D321FB09D801C20355D081C2C8FBD3E7C1C21401F289D021F889FBF7D321F309D801C1034DE481C1E6CDE121C1C10501D189C821F089F3F7D321D309D801C7037D' $_MD5Opcode &= 'F881C7D60737C3C1C70901CF89F821D089D3F7D321CB09D801C60375CC81C6870DD5F4C1C60E01FE89F021C889CBF7D321FB09D801C20355E081C2ED145A45C1C21401F289D021F889FBF7D321F309D801C1034DF481C105E9E3A9C1C10501D189C821F089F3F7D321D309D801C7037DC881C7F8A3EFFCC1C70901CF89F821D089D3F7D321CB09D801C60375DC81C6D9026F67C1C60E01FE89F021C889CBF7D321FB09D801C20355F081C28A4C2A8DC1C21401F289D031F031F801C1034DD481C14239FAFFC1C10401D189C831D031F001C7037DE081C781F67187C1C70B01CF89F831C831D001C60375EC81C622619D6DC1C61001FE89F031F831C801C20355F881C20C38E5FDC1C21701F289D031F031F801C1034DC481C144EABEA4C1C10401D189C831D031F001C7037DD081C7A9CFDE4BC1C70B01CF89F831C831D001C60375DC81C6604BBBF6C1C61001FE89F031F831C801C20355E881C270BCBFBEC1C21701F289D031F031F801C1034DF481C1C67E9B28C1C10401D189C831D031F001C7037DC081C7FA27A1EAC1C70B01CF89F831C831D001C60375CC81C68530EFD4C1C61001FE89F031F831C801C20355D881C2051D8804C1C21701F289D031F031F801C1034DE481C139D0D4D9C1C10401D189C831D031F001C7037DF081C7E599DBE6C1C70B01CF89F831C831D001C60375FC81C6F87CA21FC1C61001FE89F031F831C801C20355C881C26556ACC4C1C21701F289F8F7D009D031F001C1034DC081C1442229F4C1C10601D189F0F7D009C831D001C7037DDC81C797FF2A43C1C70A01CF89D0F7D009F831C801C60375F881C6A72394ABC1C60F01FE89C8F7D009F031F801C20355D481C239A093FCC1C21501F289F8F7D009D031F001C1034DF081C1C3595B65C1C10601D189F0F7D009C831D001C7037DCC81C792CC0C8FC1C70A01CF89D0F7D009F831C801C60375E881C67DF4EFFFC1C60F01FE89C8F7D009F031F801C20355C481C2D15D8485C1C21501F289F8F7D009D031F001C1034DE081C14F7EA86FC1C10601D189F0F7D009C831D001C7037DFC81C7E0E62CFEC1C70A01CF89D0F7D009F831C801C60375D881C6144301A3C1C60F01FE89C8F7D009F031F801C20355F481C2A111084EC1C21501F289F8F7D009D031F001C1034DD081C1827E53F7C1C10601D189F0F7D009C831D001C7037DEC81C735F23ABDC1C70A01CF89D0F7D009F831C801C60375C881C6BBD2D72AC1C60F01FE89C8F7D009F031F801C20355E481C291D386EBC1C21501F28B4508010801500401700801780C5F5E5BC9C20800C814000053E840000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008F45EC8B5D0C6A088D4310508D' $_MD5Opcode &= '45F850E8510000008B4310C1E80383E03F8945F483F838730B6A38582B45F48945F0EB096A78582B45F48945F0FF75F0FF75ECFF750CE831F8FFFF6A088D45F850FF750CE823F8FFFF6A1053FF7508E8050000005BC9C210005589E55156578B7D088B750C8B4D10FCF3A45F5E595DC20C00' #EndRegion While 1 If $Zahl2=0 Then If (BitAND(GUICtrlRead ($Funktionen_Checkbox),$GUI_CHECKED)=1 Or BitAND(GUICtrlRead ($Variblen_Checkbox),$GUI_CHECKED)=1) Then GUICtrlSetState($Hash_Combobox,$GUI_ENABLE) $Zahl2=1 Else GUICtrlSetState($Hash_Combobox,$GUI_DISABLE) $Zahl2=1 EndIf EndIf $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Schlussel_Button $randT="" For $k=0 To Random(20,50,1) If Random(0,1,1)=1 Then $randT=$randT&chr(Random(65,90,1)) Else $randT=$randT&chr(Random(97,122,1)) EndIf Next GUICtrlSetData($Schlussel_Input,$randT) Case $Schlussel_Input Case $Datei_Input Case $Datei_Button $file=FileOpenDialog("Select file to obfuscate","","(*.au3)",1) GUICtrlSetData($Datei_Input,$file) if FileExists (guictrlread ($Datei_Input)) Then guictrlsetdata ($Label1,"Row: "&_FileCountLines (guictrlread ($Datei_Input))&@CRLF&@CRLF&"Size : "&FileGetSize (guictrlread ($Datei_Input))&" B"&@CRLF&@CRLF&"Estimated size "&@CRLF&"Post obfuscation: "&@CRLF&Round((FileGetSize(guictrlread ($Datei_Input))*5)/1024,1)&" KB") EndIf Case $Variblen_Checkbox $Zahl2=0 Case $Funktionen_Checkbox $Zahl2=0 Case $AutoITBefehleObfuscaten_Checkbox If $Zahl=1 Then GUICtrlSetState($AutoITStarkObfuscate_Checkbox,$GUI_ENABLE) $Zahl=2 Else GUICtrlSetState($AutoITStarkObfuscate_Checkbox,$GUI_DISABLE) GUICtrlSetState($AutoITStarkObfuscate_Checkbox,$GUI_UNCHECKED) $Zahl=1 EndIf Case $Hash_Combobox Case $AutoITStarkObfuscate_Checkbox Case $Kommentar_Checkbox Case $Start If GUICtrlRead($Schlussel_Input)<>"" and GUICtrlRead($Schlussel_Input)<>" " Then If FileExists (guictrlread ($Datei_Input)) and _Filecountlines(guictrlread ($Datei_Input))<>0 and FileRead(guictrlread ($Datei_Input))<>"" Then $file=guictrlread ($Datei_Input) Obfuscate() Else MsgBox(0,"Invalid file","This file is invalid or missing") EndIf Else If _GUICtrlComboBox_GetCurSel($Hash_Combobox) = 3 or _GUICtrlComboBox_GetCurSel($Hash_Combobox) = 5 or _GUICtrlComboBox_GetCurSel($Hash_Combobox) = 2 Then If FileExists (guictrlread ($Datei_Input)) and _Filecountlines(guictrlread ($Datei_Input))<>0 and FileRead(guictrlread ($Datei_Input))<>"" Then $file=guictrlread ($Datei_Input) Obfuscate() Else MsgBox(0,"Invalid file","This file is invalid or missing") EndIf Else If (BitAND(GUICtrlRead ($Funktionen_Checkbox),$GUI_CHECKED)=0 And BitAND(GUICtrlRead ($Variblen_Checkbox),$GUI_CHECKED)=0) Then If FileExists (guictrlread ($Datei_Input)) and _Filecountlines(guictrlread ($Datei_Input))<>0 and FileRead(guictrlread ($Datei_Input))<>"" Then $file=guictrlread ($Datei_Input) Obfuscate() Else MsgBox(0,"Invalid file","This file is invalid or missing") EndIf Else MsgBox(0,"Invalid characters","Please note that the key may only consist of letters") EndIf EndIf EndIf EndSwitch WEnd Func ArrayObfuscate() _FileReadToArray($file2,$arrays) $gros=UBound($arrays)-1 If BitAND(GUICtrlRead ($Funktionen_Checkbox),$GUI_CHECKED)=1 Then _ArrayAdd($arrays,"Func _"&Hash(Chr($salt)&"_Arrays_Definition_Fuction"&Chr($salt),$key,$hash)&Chr($salt)&"()") _ArrayInsert($arrays,2,"_"&Hash(Chr($salt)&"_Arrays_Definition_Fuction"&Chr($salt),$key,$hash)&Chr($salt)&"()") Else _ArrayAdd($arrays,"Func _"&Chr($salt)&"_Arrays_Definition_Fuction"&Chr($salt)&"()") _ArrayInsert($arrays,2,"_"&Chr($salt)&"_Arrays_Definition_Fuction"&Chr($salt)&"()") EndIf For $i=1 To $gros If StringInStr($arrays[$i],"$")<>0 And StringInStr($arrays[$i],"[")<>0 And StringInStr($arrays[$i],"]")<>0 Then $Ok=1 $RightArray=_StringBetween($arrays[$i],"'","'") if IsArray($RightArray) Then For $g=0 To UBound($RightArray)-1 if StringInStr($RightArray[$g],"$")<>0 And StringInStr($RightArray[$g],"[")<>0 And StringInStr($RightArray[$g],"]")<>0 Then $Ok=1 Else $Ok=0 EndIf Next EndIf $RightArray=_StringBetween($arrays[$i],'"','"') if IsArray($RightArray) Then For $g=0 To UBound($RightArray)-1 if StringInStr($RightArray[$g],"$")<>0 And StringInStr($RightArray[$g],"[")<>0 And StringInStr($RightArray[$g],"]")<>0 Then $Ok=1 Else $Ok=0 EndIf Next EndIf $arra=_StringBetween($arrays[$i],"[","]") If IsArray($arra) and StringRegExp($arra[0],"(\d*)") and StringInStr($arra[0],"$")=0 And $Ok=1 Then If StringRegExp($arrays[$i],"["&$arra[0]&"]") Then If BitAND(GUICtrlRead ($Variblen_Checkbox),$GUI_CHECKED)=1 Then $obfus=Chr($salt)&"_"&Chr($salt)&Hash($arra[0],$key,$hash) Else $obfus="_"&Chr($salt)&$arra[0]&Chr($salt) EndIf $arrays[$i]=StringReplace($arrays[$i],"["&$arra[0]&"]","["&"$"&$obfus&"]",1) If BitAND(GUICtrlRead ($Variblen_Checkbox),$GUI_CHECKED)=1 Then _ArrayAdd($arrays,"Global $"&$obfus) _ArrayAdd($arrays,"Assign('"&$obfus&"', '"&$arra[0]&"')") Else _ArrayAdd($arrays,"Global $"&$obfus) _ArrayAdd($arrays,"Assign('"&$obfus&"', '"&$arra[0]&"')") EndIf EndIf EndIf EndIf $prozent=$i/UBound($arrays)*100 ProgressSet($prozent,"Arrays become obfuscated") Next _ArrayAdd($arrays,"Endfunc") _FileWriteFromArray($file2,$arrays) endfunc Func IncludesEinbinden() $i=0 $includes="" $prozent=0 $String="" For $hiu=0 To 1 $i=0 $read=FileRead($file) $read=StringStripWS ($read,8) While StringRegExp($read,"#include<(\w+)")=1 or StringRegExp($read,'#include"(\w+)')=1 $String="" $read=FileRead($file) $read=StringStripWS ($read,8) If StringInStr($read,"#include")<>0 Then $SplitDatei=StringSplit($file,"\") For $a=1 To $SplitDatei[0]-1 $String=$String&$SplitDatei[$a]&"\" Next $read=StringStripWS ($read,8) If StringRegExp($read,"#include<")=1 Then $between=_StringBetween ($read,"#include<",">") Else $between=_StringBetween ($read,'#include"','"') EndIf If IsArray($between) Then $String=$String&$between[0] $String=StringReplace($String,">","") $String=StringReplace($String,'"',"") If FileExists($String) Then $read=StringReplace($read,$between[0],FileRead($String)) Else If FileExists(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt","InstallDir")&"\Include\String.au3") Then $read=StringStripWS ($read,8) $String=StringReplace($String,"<","") $file3=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt","InstallDir")&"\Include\"&$between[0] if FileExists($file3)=0 Then $file3=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt","InstallDir")&"\Include\"&_StringProper($between[0]) Else $read=StringStripWS ($read,8) $between[0]=StringStripWS($between[0],8) if FileExists($file3) Then If StringInStr($includes,$between[0])=0 Then $includes=$includes&" "&$between[0] _ReplaceStringInFile($file,"#include<"&$between[0]&">",FileRead($file3),0,0) _ReplaceStringInFile($file,"#include <"&$between[0]&">",FileRead($file3),0,0) _ReplaceStringInFile($file,"#include <"&$between[0]&">",FileRead($file3),0,0) _ReplaceStringInFile($file,'#include"'&$between[0]&'"',FileRead($file3),0,0) _ReplaceStringInFile($file,'#include "'&$between[0]&'"',FileRead($file3),0,0) _ReplaceStringInFile($file,'#include "'&$between[0]&'"',FileRead($file3),0,0) _ReplaceStringInFile($file,'#include-once',"") $i=$i+1 Else _ReplaceStringInFile($file,"#include<"&$between[0]&">","") _ReplaceStringInFile($file,"#include <"&$between[0]&">","") _ReplaceStringInFile($file,"#include <"&$between[0]&">","") _ReplaceStringInFile($file,'#include"'&$between[0]&'"',"") _ReplaceStringInFile($file,'#include "'&$between[0]&'"',"") _ReplaceStringInFile($file,'#include "'&$between[0]&'"',"") _ReplaceStringInFile($file,'#include-once',"") $i=$i+1 EndIf EndIf _ArrayDelete($between,0) EndIf EndIf EndIf EndIf Else $read2=$read EndIf $counter=StringRegExp($read,"#include<(\w+)",3) $counter2=StringRegExp($read,'#include"(\w+)',3) $gesamt=$i+UBound($counter)+UBound($counter2) $prozent=($i/$gesamt)*100 ProgressSet($prozent,"Includes intergrate "&@CRLF&"Rest Includes "&UBound($counter)) WEnd Next $read=FileRead($file) _FileCreate($file) FileClose($file) FileWrite($file,$read) EndFunc Func KommentareEntfernen() _FileReadToArray($file,$kommentar) $grose=UBound($kommentar)-1 For $i=1 to $grose $prozent=$i/$grose*100 ProgressSet($prozent,"Comments are removed "&@CRLF&"current line: "&$i&" of "&$grose) If $grose<>$i Then If $kommentar[$i]="" or $kommentar[$i]=" " Then _ArrayDelete($kommentar,$i) $grose=$grose-1 $i=$i-1 EndIf if StringInStr(StringStripWS($kommentar[$i],8),";")= 1 Then ;~ _ReplaceStringInFile($file,$kommentar[$i],"",1,0) _ArrayDelete($kommentar,$i) $grose=$grose-1 $i=$i-1 Else if StringInStr(StringStripWS($kommentar[$i],8),";~")= 1 Then _ArrayDelete($kommentar,$i) $grose=$grose-1 $i=$i-1 endif endif If StringInStr($kommentar[$i],"#cs",1)=1 Then do _ArrayDelete($kommentar,$i) $grose=$grose-1 Until $i=$grose-2 or StringRegExp($kommentar[$i],"#ce") If StringRegExp($kommentar[$i],"#ce") Then _ArrayDelete($kommentar,$i) $i=$i-1 $grose=$grose-1 EndIf EndIf If StringInStr($kommentar[$i],";")<>0 Then $komm2=StringStripWS($kommentar[$i],8) $aaaa=0 $len=StringLen($kommentar[$i]) Do $aaaa+=1 $komm3=StringRight ($komm2,$aaaa) If $len<=$aaaa Then ExitLoop Until StringInStr(StringStripWS($komm3,8),"$")=1 And(StringInStr(StringStripWS($komm3,8),");")=1 Or StringInStr(StringStripWS($komm3,8),'";')=1) If $len>$aaaa Then $kommentar[$i]=StringTrimRight($kommentar[$i],$aaaa) EndIf EndIf If StringInStr(StringStripWS($kommentar[$i],8),"EndFunc;",2)=1 Then $kommentar[$i]="EndFunc" Endif Else ExitLoop EndIf Next _FileCreate($file) FileClose($file) _FileWriteFromArray($file,$kommentar,1) EndFunc Func Obfuscate() ;---> Function Obfuscate() ProgressOn("Obfuscate","progress:") $save=FileRead($file) $file4=StringTrimRight($file,4)&"-backup.au3" _FileCreate($file4) FileClose($file4) FileWrite($file4,$save) KommentareEntfernen() $prozent=0 ProgressSet($prozent) if BitAND(GUICtrlRead ($Includes_Checkbox),$GUI_CHECKED)=1 Then IncludesEinbinden() EndIf $hash=_GUICtrlComboBox_GetCurSel($Hash_Combobox) #Region FileOpen Dim $functions[1] If $file="" or $file=1 Then Exit EndIf $schlussel=GUICtrlRead($Schlussel_Input) #EndRegion #Region File erstellen $file2=StringTrimRight($file,4) $file2=$file2&"-obfuscated.au3" _FileCreate($file2) FileClose($file2) #EndRegion if BitAND(GUICtrlRead ($AutoITStarkObfuscate_Checkbox),$GUI_CHECKED)=1 Then If StringInStr(FileRead($file),"Func Quersumme($zahl)"&@CRLF&"local $split")=0 Then $befehl=@CRLF & _ "Func Quersumme($zahl)" &@CRLF & _ 'local $split=StringSplit($zahl,"")'&@CRLF & _ "$zahl=0"&@CRLF & _ "For $i=1 To UBound($split)-1"&@CRLF & _ "$zahl=$zahl+$split[$i]"&@CRLF & _ "Next"&@CRLF & _ "return $zahl"&@CRLF & _ "EndFunc" FileWrite($file,$befehl) EndIf EndIf #Region Search for functions and add to array $ functions (will be needed later) KommentareEntfernen() for $i=0 to _FileCountLines($file) $prozent=($i/_FileCountLines($file))*100 ProgressSet($prozent,"Functions are searched") $prozent=0 $read=FileReadLine($file,$i) $read=StringStripWS ($read,1) If IsArray(_StringBetween($read,"func" & chr(32),"(")) Then $temp = _StringBetween($read,"func" & chr(32),"(") $temp[0]=StringStripWS($temp[0],8) _ArrayAdd($functions,$temp[0]&"(") ;~ $temp2=_StringBetween($read,"func","(") ;~ $temp2=StringStripWS ($temp2,8) ;~ StringReplace($temp2&"(",$temp2&"("," _" & Hash($temp[0],$schlussel,$hash)&"(") If IsArray($functions) Then If $functions[0]="" or $functions[0]=" " Then _ArrayDelete($functions,0) EndIf EndIf EndIf #EndRegion #Region Variables are replaced with hash $befehl=$read $read = $read&";" If StringRegExp($read,"(.*\x24\w+.*)") == 1 Then $temp = StringRegExp($read,"(\x24\w*)",3) if BitAND(GUICtrlRead ($Variblen_Checkbox),$GUI_CHECKED)=1 Then For $a = 0 to UBound($temp) -1 Step 1 $temp[$a] = StringTrimLeft($temp[$a],1) $read = StringRegExpReplace($read,"\x24" & $temp[$a] & "(\W)","$_" & Hash($temp[$a],$schlussel,$hash)& "\1",$hash) $prozent=($a/UBound($temp))*100-1 ProgressSet($prozent,"Variables are hashed") Next EndIf EndIf $read=StringTrimRight($read,1) FileWrite($file2,$read&@CRLF) Next #EndRegion #Region Functions throughout the script that are in the $ functions array are now replaced by hashes throughout the script FileOpen($file2,1) $read=FileRead($file2) $read=StringStripWS ($read,2) _filecreate($file2) FileClose($file2) if BitAND(GUICtrlRead ($Funktionen_Checkbox),$GUI_CHECKED)=1 Then For $hj = 0 to UBound($functions) -1 Step 1 $prozent=int(($hj/UBound($functions))*100) ProgressSet($prozent,"Functions are replaced by hashes") If $functions[0]<>"" and $functions[0]<>" " Then ;~ $read = StringReplace($read ,$functions[$hj],"_" & Hash($functions[$hj],$schlussel,$hash)&"(") $read=StringReplace($read," (","(") $read = StringReplace($read ,$functions[$hj],"_" & Hash($functions[$hj],$schlussel,$hash)&"(") $read = StringReplace($read ,"'"&StringTrimRight($functions[$hj],1)&"'","'"&"_" & Hash($functions[$hj],$schlussel,$hash)&"'") $read = StringReplace($read ,'"'&StringTrimRight($functions[$hj],1)&'"','"'&"_" & Hash($functions[$hj],$schlussel,$hash)&'"') EndIf Next EndIf FileWrite($file2,$read) #EndRegion #Region Die restlichen AutoIT Befehle werden ersetzt Dim $read[_FileCountLines($file2)+3] for $i=0 to _FileCountLines($file2) $read[$i]=FileReadLine($file2,$i) Next $count=_FileCountLines($file2) $splitstring="" $write="" $read4=FileRead($file2) #Region Strings are replaced by variables If BitAND(GUICtrlRead ($AutoITStarkObfuscate_Checkbox),$GUI_CHECKED)=1 Then If BitAND(GUICtrlRead ($Funktionen_Checkbox),$GUI_CHECKED)=1 Then _ArrayAdd($read,"Func _"&Chr($salt)&Hash(Chr($salt)&'_Variable1Definition2Function3',$schlussel,$hash)&"()") Else _ArrayAdd($read,"Func _"&Chr($salt)&"_"&Chr($salt)&'_Variable_Definition_Function'&"()") EndIf $count=_FileCountLines($file2) for $i=0 to $count $splitstring="" $prozent=int(($i/$count)*100) ProgressSet($prozent,"Strings are replaced by variables") For $iiii=0 To 1 $temp3=StringInStr($read[$i],"'") $temp4=StringInStr($read[$i],'"') If $temp4 < $temp3 Or $temp3=0 Then $betw=_StringBetween($read[$i],'"','"') ElseIf $temp3 < $temp4 Or $temp4=0 Then $betw=_StringBetween($read[$i],"'","'") EndIf ;~ ProgressOff() ;~ MsgBox(0,"test","Read : "&$read[$i]&@CRLF&"Temp4 : "&$temp4&@CRLF&"Temp3 : "&$temp3) if IsArray($betw) Then if $betw[0]<>"" and StringLen($betw[0])<400 Then $betw2=StringStripWS($betw[0],8) $betw2=StringRegExpReplace ($betw2, "(\W)",$i&chr($salt)) $var4="$"&Chr($salt)&"_"&Hash(Chr($salt)&$betw2&'_constCharString1',$schlussel,3) _ArrayAdd($read,"Global "&$var4) If $temp4 > $temp3 Then _ArrayAdd($read,'Assign("'&StringTrimLeft($var4,1)&'", "'&$betw[0]&'")') Else _ArrayAdd($read,"Assign('"&StringTrimLeft($var4,1)&"', '"&$betw[0]&"')") EndIf If $temp4 < $temp3 Or $temp3=0 Then $read[$i]=StringReplace($read[$i],'"'&$betw[0]&'"'," "&$var4&" ") ;~ MsgBox(0,"test",'"'&$betw[0]&'"') ElseIf $temp3 < $temp4 Or $temp4=0 Then $read[$i]=StringReplace($read[$i],"'"&$betw[0]&"'"," "&$var4&" ") ;~ MsgBox(0,"test","'"&$betw[0]&"'") EndIf EndIf EndIf next $count=_FileCountLines($file2) Next If BitAND(GUICtrlRead ($Funktionen_Checkbox),$GUI_CHECKED)=1 Then _ArrayInsert($read,2,"_"&Chr($salt)&Hash(Chr($salt)&'_Variable1Definition2Function3',$schlussel,$hash)&"()") Else _ArrayInsert($read,2,"_"&Chr($salt)&"_"&Chr($salt)&'_Variable_Definition_Function'&"()") EndIf _ArrayAdd($read,"EndFunc") _FileWriteFromArray($file2,$read,1) EndIf #EndRegion if BitAND(GUICtrlRead ($AutoITStarkObfuscate_Checkbox),$GUI_CHECKED)=1 Then ArrayObfuscate() EndIf ReDim $read[_FileCountLines($file2)+3] for $i=0 to _FileCountLines($file2) $read[$i]=FileReadLine($file2,$i) Next $prozent=$prozent+10 $cou=_FileCountLines($file2) _ArrayDelete($read,0) _ArrayDelete($read,0) _filecreate($file2) FileOpen($file2,1) for $i=0 to $cou $prozent=($i/$cou)*100 ProgressSet($prozent,"AutoIT commands are obfuscated") $read[$i]=StringStripWS ($read[$i],4) $befehl=$read[$i]&@CRLF $split=StringSplit($read[$i],"") If $split[0]>=4 Then $test=$split[1]&$split[2]&$split[3]&$split[4] If ($split[1] <> "$") and ($split[1]&$split[2] <> "if") and $split[1] <> "" and $split[1] <> "#" and $split[1] <> ";" and $test<>"case" and $test<>"func" and $test<>"next" and $test<>"whil" and ($split[1]&$split[2]&$split[3]<>"for") and $test<>"sele" and $test<>"swit" and $test<>"ends" and $test<>"endi" and $test<>"endf" and $test<>"unti" and $test<>"else" and $test<>"redi" and $test<>"dim " and $test<>"loca" and $test<>"glob" and $test<>"exit" and $test<>"wend" and $test<>"retu" Then If StringinStr($read[$i],",_")<>0 Or StringinStr($read[$i]," _")<>0 Or StringinStr($read[$i],"&_")<>0 Or StringLen($read[$i])>400 Then $befehl=$read[$i]&@CRLF Else $var2=StringToBinary($read[$i]) if BitAND(GUICtrlRead ($AutoITStarkObfuscate_Checkbox),$GUI_CHECKED)=1 Then $var2=StringReplace($var2,"3",'"&Stringlen("'&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&'")&"',Random(1,3,1)) $var2=StringReplace($var2,"1",'"&Stringlen("'&chr(Random(97,122,1))&'")&"',Random(1,3,1)) $var2=StringReplace($var2,"2",'"&Stringlen("'&chr(Random(97,122,1))&chr(Random(65,90,1))&'")&"',Random(2,4,1)) $var2=StringReplace($var2,"7",'"&Stringlen("'&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&'")&"',Random(1,5,1)) $var2=StringReplace($var2,"4",'"&Stringlen("'&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&'")&"',Random(1,3,1)) $if=random(0,4,1) If $if=0 Then $ran=Random(10,99,1) $test=BitXOR(8,$ran) $var3=StringTobinary('BitXOR('&$test&','&$ran&')') $var2=StringReplace($var2,"8",""&'"'&"&Execute(Binarytostring('"&$var3&"'))&"&'"',Random(2,6,1)) ElseIf $if=1 Then If ($split[1] <> "$") Then $ran1=Random(1,10,1) If BitAND(GUICtrlRead ($Funktionen_Checkbox),$GUI_CHECKED)=1 Then $var2=StringReplace($var2,"4",'"&Execute("_'&Hash("Quersumme(",$schlussel,$hash)&'('&$ran1&'*9)-5")&"',Random(1,4,1)) Else $var2=StringReplace($var2,"4",'"&Execute("'&" Quersumme"&'('&$ran1&'*9)-5")&"',Random(1,4,1)) EndIf EndIf Elseif $if=2 Then $ran5=Random(1,100000) $var3=StringTobinary('int(Cos(Sin ('&$ran5&'))^-1)') $var2=StringReplace($var2,"1",""&'"'&"&Execute(Binarytostring('"&$var3&"'))&"&'"') Elseif $if=3 Then If ($split[1] <> "$") Then $ran1=Random(1,10,1) If BitAND(GUICtrlRead ($Funktionen_Checkbox),$GUI_CHECKED)=1 Then $var2=StringReplace($var2,"4",'"&Execute("_'&Hash("Quersumme(",$schlussel,$hash)&'('&$ran1&'*9)-5")&"',Random(1,4,1)) Else $var2=StringReplace($var2,"4",'"&Execute("'&" Quersumme"&'('&$ran1&'*9)-5")&"',Random(1,4,1)) EndIf EndIf Else $var2ran1=Random(1,9,1) $var2ran2=Random(1,9,1) $var2=StringReplace($var2,"8",'"&('&$var2ran1&'+'&$var2ran2&')^2-'&($var2ran2+$var2ran1)^2-8&'&"',Random(1,3,1)) EndIf $var2=StringReplace($var2,'&""&',"&") EndIf if BitAND(GUICtrlRead ($AutoITBefehleObfuscaten_Checkbox),$GUI_CHECKED)=1 Then if BitAND(GUICtrlRead ($AutoITStarkObfuscate_Checkbox),$GUI_CHECKED)=1 Then If StringLen($var2)<35 Then $var2=StringToBinary('Execute('&"'"&'BinaryToString("'&$var2&'")'&"'"&')') if BitAND(GUICtrlRead ($AutoITStarkObfuscate_Checkbox),$GUI_CHECKED)=1 Then $var2=StringReplace($var2,"3",'"&Stringlen("'&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&'")&"',Random(1,3,1)) $var2=StringReplace($var2,"1",'"&Stringlen("'&chr(Random(97,122,1))&'")&"',Random(1,3,1)) $var2=StringReplace($var2,"2",'"&Stringlen("'&chr(Random(97,122,1))&chr(Random(65,90,1))&'")&"',Random(2,4,1)) $var2=StringReplace($var2,"7",'"&Stringlen("'&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&'")&"',Random(1,5,1)) $var2=StringReplace($var2,"4",'"&Stringlen("'&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&'")&"',Random(1,3,1)) $if=random(0,4,1) If $if=0 Then $ran=Random(10,99,1) $test=BitXOR(8,$ran) $var3=StringTobinary('BitXOR('&$test&','&$ran&')') $var2=StringReplace($var2,"8",""&'"'&"&Execute(Binarytostring('"&$var3&"'))&"&'"',Random(2,6,1)) ElseIf $if=1 Then If ($split[1] <> "$") Then $ran1=Random(1,10,1) If BitAND(GUICtrlRead ($Funktionen_Checkbox),$GUI_CHECKED)=1 Then $var2=StringReplace($var2,"4",'"&Execute("_'&Hash("Quersumme(",$schlussel,$hash)&'('&$ran1&'*9)-5")&"',Random(1,4,1)) Else $var2=StringReplace($var2,"4",'"&Execute("'&"Quersumme"&'('&$ran1&'*9)-5")&"',Random(1,4,1)) EndIf EndIf Elseif $if=2 Then $ran5=Random(1,100000) $var3=StringTobinary('int(Cos(Sin ('&$ran5&'))^-1)') $var2=StringReplace($var2,"1",""&'"'&"&Execute(Binarytostring('"&$var3&"'))&"&'"') Elseif $if=3 Then If ($split[1] <> "$") Then $ran1=Random(1,10,1) If BitAND(GUICtrlRead ($Funktionen_Checkbox),$GUI_CHECKED)=1 Then $var2=StringReplace($var2,"4",'"&Execute("_'&Hash("Quersumme(",$schlussel,$hash)&'('&$ran1&'*9)-5")&"',Random(1,4,1)) Else $var2=StringReplace($var2,"4",'"&Execute("'&" Quersumme"&'('&$ran1&'*9)-5")&"',Random(1,4,1)) EndIf EndIf Else $var2ran1=Random(1,9,1) $var2ran2=Random(1,9,1) $var2=StringReplace($var2,"8",'"&('&$var2ran1&'+'&$var2ran2&')^2-'&($var2ran2+$var2ran1)^2-8&'&"',Random(1,3,1)) EndIf $var2=StringReplace($var2,'&""&',"&") EndIf EndIf EndIf $befehl=StringReplace($read[$i],$read[$i],'Execute(BinaryToString("'&$var2&'"))'&@CRLF) EndIf EndIf Else If ($split[1]&$split[2] <> "if") and $test<>"case" and $split[1] <> "" and $split[1] <> "#" and $split[1] <> ";"and $test<>"func" and $test<>"next" and $test<>"whil" and ($split[1]&$split[2]&$split[3]<>"for") and $test<>"sele" and $test<>"swit" and $test<>"ends" and $test<>"endi" and $test<>"endf" and $test<>"unti" and $test<>"else" and $test<>"redi" and $test<>"dim " and $test<>"loca" and $test<>"glob" and $test<>"exit" and $test<>"wend" and $test<>"retu" Then If StringRegExp($read[$i],"=")=1 Then If StringinStr($read[$i],",_")<>0 Or StringinStr($read[$i],"&_")<>0 Or StringinStr($read[$i]," _")<>0 Or StringLen($read[$i])>1600 Then $befehl=$read[$i]&@CRLF Else $StringSplit=StringSplit($read[$i],"=") $var2=StringToBinary($StringSplit[2]) if BitAND(GUICtrlRead ($AutoITStarkObfuscate_Checkbox),$GUI_CHECKED)=1 Then $var2=StringReplace($var2,"3",'"&Stringlen("'&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&'")&"',Random(1,3,1)) $var2=StringReplace($var2,"1",'"&Stringlen("'&chr(Random(97,122,1))&'")&"',Random(1,3,1)) $var2=StringReplace($var2,"2",'"&Stringlen("'&chr(Random(97,122,1))&chr(Random(65,90,1))&'")&"',Random(2,4,1)) $var2=StringReplace($var2,"7",'"&Stringlen("'&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&'")&"',Random(1,5,1)) $var2=StringReplace($var2,"4",'"&Stringlen("'&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&'")&"',Random(1,3,1)) $if=random(0,4,1) If $if=0 Then $ran=Random(10,99,1) $test=BitXOR(8,$ran) $var3=StringTobinary('BitXOR('&$test&','&$ran&')') $var2=StringReplace($var2,"8",""&'"'&"&Execute(Binarytostring('"&$var3&"'))&"&'"',Random(2,6,1)) ElseIf $if=1 Then If ($split[1] <> "$") Then $ran1=Random(1,10,1) If BitAND(GUICtrlRead ($Funktionen_Checkbox),$GUI_CHECKED)=1 Then $var2=StringReplace($var2,"4",'"&Execute("_'&Hash("Quersumme(",$schlussel,$hash)&'('&$ran1&'*9)-5")&"',Random(1,4,1)) Else $var2=StringReplace($var2,"4",'"&Execute("'&"Quersumme"&'('&$ran1&'*9)-5")&"',Random(1,4,1)) EndIf EndIf Elseif $if=2 Then $ran5=Random(1,100000) $var3=StringTobinary('int(Cos(Sin ('&$ran5&'))^-1)') $var2=StringReplace($var2,"1",""&'"'&"&Execute(Binarytostring('"&$var3&"'))&"&'"') Elseif $if=3 Then If ($split[1] <> "$") Then $ran1=Random(1,10,1) If BitAND(GUICtrlRead ($Funktionen_Checkbox),$GUI_CHECKED)=1 Then $var2=StringReplace($var2,"4",'"&Execute("_'&Hash("Quersumme(",$schlussel,$hash)&'('&$ran1&'*9)-5")&"',Random(1,4,1)) Else $var2=StringReplace($var2,"4",'"&Execute("'&" Quersumme"&'('&$ran1&'*9)-5")&"',Random(1,4,1)) EndIf EndIf Else $var2ran1=Random(1,9,1) $var2ran2=Random(1,9,1) $var2=StringReplace($var2,"8",'"&('&$var2ran1&'+'&$var2ran2&')^2-'&($var2ran2+$var2ran1)^2-8&'&"',Random(1,3,1)) EndIf $var2=StringReplace($var2,'&""&',"&") EndIf if BitAND(GUICtrlRead ($AutoITBefehleObfuscaten_Checkbox),$GUI_CHECKED)=1 Then If StringinStr($read[$i],",_")<>0 Or StringinStr($read[$i],"&_")<>0 Then $befehl=$read[$i]&@CRLF Else if BitAND(GUICtrlRead ($AutoITStarkObfuscate_Checkbox),$GUI_CHECKED)=1 Then If StringLen($var2)< 35 Then $var2=StringToBinary('Execute('&"'"&'BinaryToString("'&$var2&'")'&"'"&')') if BitAND(GUICtrlRead ($AutoITStarkObfuscate_Checkbox),$GUI_CHECKED)=1 Then $var2=StringReplace($var2,"3",'"&Stringlen("'&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&'")&"',Random(1,3,1)) $var2=StringReplace($var2,"1",'"&Stringlen("'&chr(Random(97,122,1))&'")&"',Random(1,3,1)) $var2=StringReplace($var2,"2",'"&Stringlen("'&chr(Random(97,122,1))&chr(Random(65,90,1))&'")&"',Random(2,4,1)) $var2=StringReplace($var2,"7",'"&Stringlen("'&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&'")&"',Random(1,5,1)) $var2=StringReplace($var2,"4",'"&Stringlen("'&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&chr(Random(65,90,1))&'")&"',Random(1,3,1)) $if=random(0,4,1) If $if=0 Then $ran=Random(10,99,1) $test=BitXOR(8,$ran) $var3=StringTobinary('BitXOR('&$test&','&$ran&')') $var2=StringReplace($var2,"8",""&'"'&"&Execute(Binarytostring('"&$var3&"'))&"&'"',Random(2,6,1)) ElseIf $if=1 Then If ($split[1] <> "$") Then $ran1=Random(1,10,1) If BitAND(GUICtrlRead ($Funktionen_Checkbox),$GUI_CHECKED)=1 Then $var2=StringReplace($var2,"4",'"&Execute("_'&Hash("Quersumme(",$schlussel,$hash)&'('&$ran1&'*9)-5")&"',Random(1,4,1)) Else $var2=StringReplace($var2,"4",'"&Execute("'&"Quersumme"&'('&$ran1&'*9)-5")&"',Random(1,4,1)) EndIf EndIf Elseif $if=2 Then $ran5=Random(1,100000) $var3=StringTobinary('int(Cos(Sin ('&$ran5&'))^-1)') $var2=StringReplace($var2,"1",""&'"'&"&Execute(Binarytostring('"&$var3&"'))&"&'"') Elseif $if=3 Then If ($split[1] <> "$") Then $ran1=Random(1,10,1) If BitAND(GUICtrlRead ($Funktionen_Checkbox),$GUI_CHECKED)=1 Then $var2=StringReplace($var2,"4",'"&Execute("_'&Hash("Quersumme(",$schlussel,$hash)&'('&$ran1&'*9)-5")&"',Random(1,4,1)) Else $var2=StringReplace($var2,"4",'"&Execute("'&"Quersumme"&'('&$ran1&'*9)-5")&"',Random(1,4,1)) EndIf EndIf Else $var2ran1=Random(1,9,1) $var2ran2=Random(1,9,1) $var2=StringReplace($var2,"8",'"&('&$var2ran1&'+'&$var2ran2&')^2-'&($var2ran2+$var2ran1)^2-8&'&"',Random(1,3,1)) EndIf $var2=StringReplace($var2,'&""&',"&") EndIf EndIf EndIf $read[$i]=$StringSplit[1]&"="&StringReplace($StringSplit[2],$StringSplit[2],'Execute(BinaryToString("'&$var2&'"))') EndIf EndIf EndIf Else $befehl=$read[$i]&@crlf EndIf EndIf $befehl=$read[$i]&@crlf EndIf If ($split[1] = ";") Then $befehl=StringReplace($read[$i],$read[$i],"") EndIf Else $befehl=$read[$i]&@crlf EndIf FileWrite($file2,$befehl) If StringinStr($read[$i],",_")<>0 or StringinStr($read[$i],"&_")<>0 or StringinStr($read[$i]," _")<>0 Then do $i=$i+1 $befehl=$read[$i]&@CRLF FileWrite($file2,$befehl) Until (StringinStr($read[$i],",_")=0 and StringinStr($read[$i],"&_")=0 and StringinStr($read[$i]," _")=0) or $i=UBound($read)-1 EndIf #EndRegion Next FileWrite($file2,$befehl) FileClose($file2) FileClose($file) ProgressOff() MsgBox(0,"Finished","Obfuscation succesed") EndFunc ;---> Funktionsende Obfuscate() Func Hash($var,$key="Thunder",$hash=0) ;---> Funktionsanfang Hash($var,$key,$hash) $var=chr($salt)&"_"&chr($salt)&$var&chr($salt) $String=$var If $hash=0 Then $String=ShadowHash($var,$key) ElseIf $hash=1 Then $String=_RC4($var, $key) ElseIf $hash=2 Then $String=_CRC32($var) ElseIf $hash=3 Then $String=_MD5($var) ElseIf $hash=4 Then $String=_MD5($var) $String=_RC4($String, $key) ElseIf $hash=5 Then $String=_MD5($var) $String=_CRC32($String) ElseIf $hash=6 Then $String=ShadowHash($var,$key) $String=_RC4($String, $key) ElseIf $hash=7 Then $String=_CRC32($var) $String=_RC4($String, $key) ElseIf $hash=8 Then $String=_CRC32($var) $String=ShadowHash($String,$key) $String=_RC4($String, $key) $String=_MD5($String) EndIf $String=Chr($salt)&$String Return $String EndFunc ;---> Funktionsende Hash($var,$key,$hash) Func ShadowHash($var,$key) $StrSpl=StringSplit($var,"") $String=0 $tes=0 $StrSpl2=StringSplit($key,"") For $c=1 To $StrSpl2[0]-1 $tes=$tes+Asc($StrSpl2[$c]) Next For $b=1 To $StrSpl[0]-1 $StrSpl[$b]=Asc($StrSpl[$b]) $String=BitXOr(BitXOR(($String+BitXOR(Mod($StrSpl[$b]^$b,$b^$StrSpl[$b]),(5^0.5-1)/2))*Int($b/2),$StrSpl[$b]),1+((5^0.5-1)/2))-(($StrSpl2[0]+$tes+$salt2)) next If $StrSpl[1]="a" or $StrSpl[1]="e" or $StrSpl[1]="u" or $StrSpl[1]="i" Then $String=$String&$tes $String=_StringToHex($String) $String="DE"&$String&"DE" Return $String EndFunc #Region Hashfunctions made by Ward (http://www.autoitscript.com/forum) Func _RC4($Data, $Key) Local $Opcode = "0xC81001006A006A005356578B551031C989C84989D7F2AE484829C88945F085C00F84DC000000B90001000088C82C0188840DEFFEFFFFE2F38365F4008365FC00817DFC000100007D478B45FC31D2F775F0920345100FB6008B4DFC0FB68C0DF0FEFFFF01C80345F425FF0000008945F48B75FC8A8435F0FEFFFF8B7DF486843DF0FEFFFF888435F0FEFFFFFF45FCEBB08D9DF0FEFFFF31FF89FA39550C76638B85ECFEFFFF4025FF0000008985ECFEFFFF89D80385ECFEFFFF0FB6000385E8FEFFFF25FF0000008985E8FEFFFF89DE03B5ECFEFFFF8A0689DF03BDE8FEFFFF860788060FB60E0FB60701C181E1FF0000008A840DF0FEFFFF8B750801D6300642EB985F5E5BC9C21000" Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]") DllStructSetData($CodeBuffer, 1, $Opcode) Local $Buffer = DllStructCreate("byte[" & BinaryLen($Data) & "]") DllStructSetData($Buffer, 1, $Data) DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _ "ptr", DllStructGetPtr($Buffer), _ "int", BinaryLen($Data), _ "str", $Key, _ "int", 0) Local $Ret = DllStructGetData($Buffer, 1) $Buffer = 0 $CodeBuffer = 0 Return $Ret EndFunc Func _CRC32($Data, $CRC32 = -1) Local $Opcode = '0xC800040053BA2083B8EDB9000100008D41FF516A0859D1E8730231D0E2F85989848DFCFBFFFFE2E78B5D088B4D0C8B451085DB7416E3148A1330C20FB6D2C1E80833849500FCFFFF43E2ECF7D05BC9C21000' Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]") DllStructSetData($CodeBuffer, 1, $Opcode) Local $Input = DllStructCreate("byte[" & BinaryLen($Data) & "]") DllStructSetData($Input, 1, $Data) Local $Ret = DllCall("user32.dll", "uint", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _ "ptr", DllStructGetPtr($Input), _ "int", BinaryLen($Data), _ "uint", $CRC32, _ "int", 0) $Input = 0 $CodeBuffer = 0 Return $Ret[0] EndFunc Func _MD5($Data) Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($_MD5Opcode) & "]") DllStructSetData($CodeBuffer, 1, $_MD5Opcode) Local $Input = DllStructCreate("byte[" & BinaryLen($Data) & "]") DllStructSetData($Input, 1, $Data) Local $Digest = DllStructCreate("byte[16]") DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _ "ptr", DllStructGetPtr($Input), _ "int", BinaryLen($Data), _ "ptr", DllStructGetPtr($Digest), _ "int", 0) Local $Ret = DllStructGetData($Digest, 1) $Input = 0 $Digest = 0 $CodeBuffer = 0 Return $Ret EndFunc #EndRegion Func _StringBetweenReplace($string,$start,$end,$replacestring,$replace_times=0,$casesensitive=0) If $casesensitive=0 Then $casesensitive_between=-1 Else $casesensitive_between=$casesensitive EndIf $string_found=_StringBetween($string,$start,$end,$casesensitive_between) If IsArray($string_found) Then $string_end=StringReplace($string,$string_found[0],$replacestring,$replace_times,$casesensitive) Else $string_end=-1 EndIf Return $string_end EndFunc Func Ende() Exit EndFunc Func _StringAdd($string,$searchpattern,$add,$sre = 0) $string = StringSplit($string,"",2) If $searchpattern == "" Then Return _ArrayToString($string,$add) Else If $sre = 1 Then If $add = "" Then $add = "." EndIf StringRegExpReplace($string,$searchpattern,$searchpattern & $add) Else StringReplace($string,$searchpattern,$searchpattern & $add) EndIf Return $string Endif Return -1 EndFunc