Dodałem integrację AutoIt Obfuscatora i procesu obfuskacji do domyślnego edytora AutoIt – SciTE.
Wystarczy zainstalować AutoIt Obfuscator korzystając z instalatora, a plik konfiguracyjny edytora, znajdujący się w folderze %USERPROFILE%\SciTEUser.properties zostanie automatycznie zaktualizowany.
Zmiana ta doda nową komendę Obfuscate do menu edytora Tools, dzięki czemu jednym kliknięciem można obfuskować skrypty *.au3.
Wprowadzone zmiany do pliku konfiguracyjnego:
### AutoItObfuscator Section Start
#
# Menu extension for AutoIt Obfuscator for SciTE editor
#
# 1. Open SciTE editor
# 2. Click menu -> Options -> Open User Options File
# 3. Paste the content of this script into the user options file
# 4. Setup extra obfuscation parameters, activation key, and output file path
# 5. Save file
# 6. You will find a new "Obfuscate" command in Tools menu for *.au3 files
#
# https://www.pelock.com/products/autoit-obfuscator
# https://www.scintilla.org/SciTEDoc.html
#
# Activate the obfuscator menu for *.au3 files only (* for all files)
command.name.11.*.au3=Obfuscate
# Setup your obfuscation parameters, enter your activation key, output path etc.
#
# overwrite existing file (SciTE fill refresh the view, you can always undo it CTRL-Z)
#
command.11.*.au3=C:\Program Files (x86)\AutoIt Obfuscator\AutoItObfuscatorCmd.exe /InputFilePath="$(FilePath)" /OutputFilePath="$(FilePath)"
#command.11.*.au3=C:\Program Files (x86)\AutoIt Obfuscator\AutoItObfuscatorCmd.exe /ActivationCode="ENTER-YOUR-CODE-HERE" /InputFilePath="$(FilePath)" /OutputFilePath="$(FilePath)"
#
# create a new file
#
#command.11.*.au3=C:\Program Files (x86)\AutoIt Obfuscator\AutoItObfuscatorCmd.exe /InputFilePath="$(FilePath)" /OutputFilePath="$(FilePath).obfuscated.au3"
# Save any script before obfuscation (1 - save before obfuscation, 2 - use previously saved file content)
command.save.before.11.*.au3=1
# Specify the subsystem (0 Console, 2 = Windows GUI Executable / Web Link)
command.subsystem.11.*.au3=0
# Obfuscation command shortcut
command.shortcut.11.*.au3=Ctrl+F12
### AutoItObfuscator Section End
Można je edytować w SciTE, klikając w menu Options i Open User Options File,np. zmieniając parametry obfuskacji czy dodając tam swój klucz aktywacyjny.
Jakby kogoś ciekawiło (wątpię), jakie są dostępne opcje konfiguracji — warto zajrzeć do oficjalnej dokumentacji projektu SciTE.
Nie było to najwygodniejsze rozwiązanie. Przyznaję bez bicia.
Myślałem o tym problemie od dawna i najlepszym rozwiązaniem, jakie mi wpadło do głowy, była wtyczka dla systemu Maven. Maven to standardowe narzędzie do budowy aplikacji bazujących na języku Java.
Wtyczka JObfuscatora działa na zasadzie przedwstępnego kompilatora.
Kod źródłowy przed kompilacją poddawany jest automatycznej obfuskacji i dopiero te pliki wysyłane są do kompilatora javac.
Jak z tego skorzystać? Najpierw musisz mieć projekt kompatybilny z systemem Maven i odpowiednio zmodyfikować plik konfiguracyjny pom.xml, który definiuje wszystkie zależności i ustawienia.
Taka minimalna konfiguracja może wyglądać następująco:
Do poprawnej obfuskacji potrzebne jest oznaczenie (tzw. annotation) na poziomie klasy czy metody, że w ogóle chcemy dokonać obfuskacji, dzięki czemu można dokładnie kontrolować co ma być poddane obfuskacji, z jakimi parametrami, a co ma być pominięte.
import java.util.*;
import java.lang.*;
import java.io.*;
//
// MUSISZ dodać adnotację @Obfuscate do
// kodu, aby włączyć obfuskację na poziomie
// całej klasy lub pojedynczej metody
//
@Obfuscate
class Ideone
{
//@Obfuscate
public static double calculateSD(double numArray[])
{
double sum = 0.0, standardDeviation = 0.0;
int length = numArray.length;
for(double num : numArray) {
sum += num;
}
double mean = sum/length;
for(double num: numArray) {
standardDeviation += Math.pow(num - mean, 2);
}
return Math.sqrt(standardDeviation/length);
}
//
// poszczególne strategie obfuskacji
// mogą być włączane lub wyłączane
// na poziomie całej klasy lub
// pojedyncznej metody (domyślnie
// wszystkie strategie obfuskacyjne
// są włączone jeśli użyta jest
// sama adnotacja @Obfuscate bez
// wyszczególnionych strategii)
//
//@Obfuscate(
// ints_math_crypt = true,
// dbls_math_crypt = true,
// string_split = true,
// crypt_strings = true,
// string_char_vault = true,
// rename_methods = false,
// rename_variables = true,
// shuffle_methods = true,
// array_int_crypt = true,
// array_double_crypt = true,
// array_char_crypt = true,
// array_string_crypt = true,
// mix_code_flow = true,
// ints_from_double_math = true,
// opaque_mixer_chain = true,
// complexify_booleans = true,
// try_finally_noise = true,
// ints_to_arrays = true,
// dbls_to_arrays = true,
// self_check = true
// )
public static void main(String[] args) {
double[] numArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
double SD = calculateSD(numArray);
System.out.format("Standard Deviation = %.6f", SD);
}
}
I tyle! Potem normalnie budujesz przez Mavena, a proces obfuskacji jest automatyczny.
Darmowy klucz aktywacyjny do potestowania F4FA-DCDD-58A7-9FE1
PS. A, zapomniałem dodać o nowej strategii obfuskacyjnej bazującej na refleksji w runtime i sprawdzaniu poprawności metod, pól i typów, tak żeby nie za łatwo dało się zdeobfuskować finalny kod.
Autorzy popularnego Flipper Zero kontynuują pracę nad nowym projektem – Flipper One. Nowe urządzenie ma mieć bardziej mobilny i sieciowy charakter w porównaniu do radiowego Flippera Zero.
Wielkie plany, projekt portalu dla developerów, pełna adaptacja Linuxa
Mówiąc o Flipperze Zero to moje szczere przemyślenia są takie, że w moim przypadku okazał się zupełnie nieprzydatnym urządzeniem.
O ile funkcje takie jak monitorowanie pasm radiowych, nagrywanie i odtwarzanie sygnałów działają tak, jak powinny, to sama funkcjonalność zostaje szybko zrewidowana w zetknięciu z rzeczywistością.
Rzeczywistością w tym przypadku są algorytmy tzw. rolling-key jak np. Kee Loq, używane powszechnie w większości rozwiązań bezpiecznej komunikacji radiowej, np. w przypadku bram wjazdowych.
Algorytmy rolling-key zabezpieczają przed atakami replay (czyli nagraniem sygnału i jego odtworzeniem). Do poprawnego działania wymagane byłoby nagranie poprawnego sygnału, zablokowanie go i późniejsze odtworzenie (tak jak robią to złodzieje samochodów). Alternatywą jest wygenerowanie kolejnej sekwencji poprawnego klucza otwierającego. Do tego wymagana jest znajomość klucza producenta lub brute-forcowanie 64-bitowego klucza drogą radiową, co jak się domyślacie, nie jest realne.
Czasami klucze producentów jakichś systemów gdzieś wyciekają i można spróbować ich użyć do generowania kodów, ale to rzadkość.
U mnie Flipper Zero niestety leży na dnie biurka, ale jeśli znacie jakieś ciekawe zastosowanie – chętnie posłucham co mnie ominęło i nie mówie tutaj o chodzeniu po galeriach handlowych i masowym wyłączaniu ekranów 😉
Świetny, techniczny artykuł prezentujący, jakie wyzwania czekają twórców obfuscatorów w dobie AI. Dogłębna analiza, jakie metody obfuskacyjne zawodzą w starciu z deobfuskacją przez Claude 4.6 oraz jakie techniki warto zastosować, żeby chociaż wypalić tokeny przy próbach deobfuskacji.
Z okazji rocznicy, okrągłej oczywiście — odkodowania 133541 (tak — stu trzydziestu trzech tysięcy pięciuset czterdziestu jeden) haseł przez mój dekoder online, publikuję kody źródłowe algorytmu dekodowania haseł FTP Total Commandera w formie paczek dla popularnych języków programowania.
Dostępne są paczki dla PHP, Pythona, JS i waszego ukochanego Rust. Kody źródłowe wszystkich paczek są dostępne na moim GitHubie.