AutoIt Obfuscator — Obfuskacja Kodów Źródłowych Skryptów AutoIt

AutoIt Obfuscator umożliwia obfuskację kodów źródłowych twoich skryptów AutoIt oraz algorytmów w celu ich ochrony przed analizą, inżynierią wsteczną oraz dekompilacją. Obfuscator był już użyty 52085 razy!

Kod źródłowy w formacie AutoIt v3

Kod po obfuskacji

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.


Jak otrzymać darmowy kod aktywacyjny?

Tutaj znajdziesz kilka sposobów, dzięki którym możesz otrzymać kod aktywacyjny bez płacenia:

Pencil

Napisz artykuł

Napisz artykuł na blogu czy na stronie o AutoIt Obfuscator ze zrzutami ekranu, przykładowymi kodami źródłowymi oraz odnośnikiem do strony produktu.

Twitter

Tweetnij o tym

Wyślij Tweeta o AutoIt Obfuscator do swoich fanów wraz z linkiem do strony produktu, użyj hasztagów #autoit #obfuscator oraz #obfuscation.

Pencil

Zgłoś błąd

Zgłoś błąd i jeśli będę w stanie go potwierdzić, otrzymasz darmowy kod aktywacyjny w ramach podziękowanie.

Twitter

Zasugeruj pomysł na obfuskację

Jeśli masz pomysł jak udoskonalić obecne metody obfuskacji lub wprowadzić nowe techniki, skontaktuj się ze mną przedstawiając wszelkie szczegóły.

Skorzytaj z formularza kontaktowego, aby ze mną porozmawiać.

Masz pytania?

Jeśli masz jakieś pytania dotyczące programu AutoIt Obfuscator, masz jakieś uwagi, coś jest niejasne, napisz do mnie, chętnie odpowiem na każde Twoje pytanie.