Wykrywaj debuggery, wirtualne maszyny, piaskownice (tzw. sandbox) i emulatory CPU
|
|
- Wykrywaj debuggery dołączone do procesu aplikacji
|
- Sprawdzaj podejrzanie małą liczbę rdzeni procesora (wyjdź jeśli jest ich mniej niż 3)
- Sandboxie (biblioteki DLL)
- Joe Sandbox (procesy)
|
|
|
- VMware (procesy, pliki, sterowniki, WMI, BIOS, GFX)
- Oracle Virtual Box (procesy, pliki, sterowniki, BIOS, GFX)
- Parallels Virtual Machine (procesy, pliki)
- KVM (sterowniki)
|
- WINE (niekonsystencje w funkcjach API, biblioteki DLL, specjalne funkcje API)
- Bochs (WMI BIOS)
- QEMU (procesy, WMI BIOS)
- XEN (procesy)
|
Dodany kod jest uruchamiany na początku skryptu. W przypadku pozytywnej detecji, proces zostanie po cichu zamknięty bez jakiegokolwiek komunikatu błędu.
|
Wybierz rodzaj pomocnicznych wartości losowych do wygenerowania:
|
|
Global $xyz = 1
|
Global $xyz = Asc("[")
|
|
|
Global $xyz[3] = [369, 214, 592]
|
Global $xyz[2][4] = [ [34, 14, 592, 3], [349, 2] ]
|
|
|
Func xyz()
Return 1238948
EndFunc
|
#OnAutoItStartRegister "dhfe_nMCTQQ_qeMdNOv_hTu"
...
Func dhfe_nMCTQQ_qeMdNOv_hTu()
Global Const $xyz = 88643041
EndFunc
|
Losowe wartości są używane w wielu miejscach, im więcej ich rodzajów - tym lepiej. Jeśli nic nie wybierzesz, domyślnie zostaną użyte wszystkie typy.
|
ConsoleWrite("1. Raz" & @CRLF)
ConsoleWrite("2. Dwa" & @CRLF)
ConsoleWrite("3. Trzy" & @CRLF)
|
$rnd = 239892
While True
If 40402 = $rnd Then
$rnd = 1993
ConsoleWrite("2. Dwa" & @CRLF)
ElseIf $rnd = 239892 Then
$rnd = 40402
ConsoleWrite("1. Raz" & @CRLF)
ElseIf $rnd = 1993 Then
ConsoleWrite("3. Trzy" & @CRLF)
$rnd = 203030211
ElseIf $rnd = 203030211 Then
ExitLoop
EndIf
WEnd
|
Przeczytaj czym jest ścieżka wykonywania kodu. Funkcje kontrolujące działanie pętli ExitLoop oraz ContinueLoop są automatycznie korygowane o nowe poziomy pętli.
|
Local $variable = 1
Global $var = 12345
Dim $iValue = 0xABBA
|
Local $nGuiyagSznwgwh = 1
Global $SMGPZHGE_GRUHVBRVUR_TRMWCXZV = 12345
Dim $var_12 = 0xABBA
|
Wszystkie odwołania do przemianowanych zmiennych są automatycznie poprawiane.
|
Func Example($param1, $param2)
Func ProcessSomething()
Func Dummy($aArray)
|
Func VadOeCmEiez($param1, $param2)
Func func_91()
Func AvnsnFunc($aArray)
|
DllCall() i inne funkcje wykorzystujące nazwy funkcji w parametrach są automatycznie poprawiane jeśli tylko parametry z nazwami funkcji przekazywane są w postaci stałego ciągu znakowego (nie jako zmienna!).
|
Local $result = Example($param1, $param2)
ProcessSomething()
$out = Dummy($aArray)
ConsoleWrite("Obfuscation for AutoIt")
|
Local $result = $VsoLkc($param1, $param2)
$DOX_MDK_WAVP()
$out = $aRacmLko($aArray)
$aAxieOjxz("Obfuscation for AutoIt")
|
Funkcje w AutoIt mogą być przypisane do zmiennych, to dobra metoda na ukrycie prawdziwych nazw wywoływanych funkcji.
|
ConsoleWrite(c())
Func a()
return "Hello!"
EndFunc
Func b()
return a()
EndFunc
Func c()
return b()
EndFunc
|
ConsoleWrite(c())
Func c()
return b()
EndFunc
Func a()
return "Hello!"
EndFunc
Func b()
return a()
EndFunc
|
Kolejność funkcji w AutoIt nie ma wpływu na działanie.
|
MsgBox($MB_ICONINFORMATION, "Title", "Caption")
|
MsgBox(64, "Title", "Caption")
|
Obecnie jest rozpoznawanych ponad 15000 stałych Windows API.
|
Local $a = 1
Local $value = 1234
Local $lucky_seven = 777
Local $var = 0xFFFF
Local $count = 999
Local $item = 0x100
Local $diabolo = 666
Local $num = 9
Local $alignment = 512
|
Local $a = 3928 + $EiejcJks[3]
Local $value = (347445640 - 347444406)
Local $lucky_seven = Int(Sqrt(603729))
Local $var = BitXOR(312515813, IbmmftJgowlxa())
Local $count = BitOR(8966, 1033)
Local $item = BitNOT(-257)
Local $diabolo = BitRotate(10911744, 18, "D")
Local $num = 3 * 3
Local $alignment = 2 ^ 9
|
Operacje arytmetyczne wykorzystują operatory + - * ^ oraz funkcję Sqrt(), operacje logiczne używają funkcji BitXOR, BitOR, BitNOT, BitRotate.
|
ConsoleWrite("Hello World!")
ConsoleWrite('Hello Nasty')
ConsoleWrite("Sample ""quotation"" within")
ConsoleWrite('Single ''quotation'' !')
|
ConsoleWrite("H" & "ell" & "o " & "W" & "orld" & "!")
ConsoleWrite('Hel' & 'lo Nast' & 'y')
ConsoleWrite("Samp" & "le ""quotation" & """ with" & "in")
ConsoleWrite('Single ' & '''quotati' & 'on''' & ' ' & '!')
|
Cytowania wewnątrz ciągów tekstowych są automatycznie rozpoznawane i poprawnie obsługiwane.
|
ConsoleWrite("Hello World!")
ConsoleWrite('Hello Bart')
ConsoleWrite('AutoIt Decompilation')
|
ConsoleWrite(StringReverse("!dlroW olleH"))
ConsoleWrite(StringTrimLeft('KKuqTHello Bart', 5))
ConsoleWrite(StringTrimRight('AutoIt DecompilationX', 1))
|
Modyfikacje tekstu wykorzystują wbudowane funkcje StringReverse(), StringTrimRight() oraz StringTrimLeft().
|
ConsoleWrite("How to protect AutoIt script?")
|
ConsoleWrite(DlnWck(87, $KQWGAWTNE, $vOedex))
...
Func DlnWck($var_1238, $g_tagNye, $g_v_nCrR)
Local $6H_T[29] = [ 0x728F, 0x6DAF, 0x6CAF, 0x778F, _
0x6D0F, 0x6DAF, 0x778F, 0x6D8F, _
0x6D4F, 0x6DAF, 0x6D0F, 0x6EEF, _
0x6F2F, 0x6D0F, 0x778F, 0x736F, _
0x6CEF, 0x6D0F, 0x6DAF, 0x726F, _
0x6D0F, 0x778F, 0x6D2F, 0x6F2F, _
0x6D4F, 0x6E6F, 0x6D8F, 0x6D0F, _
0x73AF ]
For $NYwQb = 0 To 28
$Cwium = $6H_T[$NYwQb]
$Cwium -= 0x7B90
$Cwium = BitRotate($Cwium, 11, "W")
$Cwium = BitNOT($Cwium)
$6H_T[$NYwQb] = ChrW(BitAND($Cwium, 0xFFFF))
Next
Return _ArrayToString($6H_T, "")
EndFunc
|
Polimorficzne szyfrowanie ciągów tekstowych wykorzystuje silnik z naszego innego rozwiązania StringEncrypt.
|
Local $a = 1
Local $var = 123
|
Local $a = ($fBnbFcgx[5] >= $xCsccjis[12] ? 1 : $g_GIqyy)
Local $var = (SqXoFunc() <> $Abv ? $var_2029[3] : 123)
|
Przeczytaj więcej o operatorze trójargumentowym w AutoIt.
|