Claude Opus v4.8 trochę popracował nad analizą silnika mojego AutoIt Obfuscatora i znalazł masę błędów, a także znacznie przyspieszył jego działanie, zachowując 100% kompatybilność.

Zmiany w v2.2
- Znaczne przyspieszenie silnika — przepisane bajtowe operacje wejścia/wyjścia leksera, buforowana długość kodu źródłowego, wyszukiwanie symboli oparte na tablicach mieszających oraz lżejsze przechodzenie drzewa AST sprawiają, że obfuskacja jest znacznie szybsza, dając identyczny bajtowo wynik
- Naprawiono awarię parsera w blokach
Switch/Select— instrukcje umieszczone przed pierwszymCasezwracają teraz czysty błąd parsowania zamiast wyjątku krytycznego - Naprawiono parsowanie deklaracji z wieloma modyfikatorami np.
Local Static Const $var = 1(wcześniej uwzględniany był tylko pierwszy modyfikator) - Naprawiono generowanie nieprawidłowych nazw zmiennych, które mogą zaczynać się od cyfry, np.
$9abc, co jest niedozwolone w AutoIt - Naprawiono błąd, w którym liczbowe wartości warunków
Case/Ifbyły emitowane jako błędne zmienne np.$123456789podczas mieszania przepływu kodu - Naprawiono błędne obliczanie poziomu zagnieżdżenia pętli dla
ContinueLoop/ExitLoopprzy wielu przebiegach mieszania przepływu kodu - Naprawiono szyfrowanie ciągów znaków: literał
"0"jest teraz poprawnie szyfrowany, a nieudane szyfrowanie nie wstawia już uszkodzonej procedury deszyfrującej - Rozpoznawanie funkcji wbudowanych, makr i stałych bez uwzględniania wielkości liter (AutoIt jest niewrażliwy na wielkość liter), aby uniknąć błędnej zmiany nazw i podmiany stałych
- Poprawiono kilka wartości stałych wbudowanych (flagi atrybutów plików) oraz usunięto zduplikowane / błędne wpisy z tablic wewnętrznych
- Zwiększono odporność leksera: poprawna obsługa pustych plików, zakończeń linii typu LF oraz wykrywanie niezamkniętych ciągów znaków
- Wyłączone opcje obfuskacji są teraz ściśle respektowane zamiast powracać do wartości domyślnych
- Liczne wewnętrzne usprawnienia odporności i poprawki zgodności typów z PHP 8 w silniku obfuskacji
Obfuscator dostępny jest pod adresem: