Toolverse
Wszystkie skille

llvm-obfuscation

autor: gmh5225

Zaawansowana ochrona kodu przed dekompilacją – techniki obfuskacji na bazie LLVM

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Autor
gmh5225
Wyświetlenia
4

O skillu

Umiejętności w zakresie obfuskacji kodu opartej na LLVM, obejmujące spłaszczanie przepływu sterowania, szyfrowanie stringów, wirtualizację kodu i metody anty-analizy. Skill zawiera wiedzę o frameworkach takich jak OLLVM, Hikari, Pluto-Obfuscator i o-mvll. Zastosuj go podczas pracy nad ochroną oprogramowania, przeciwdziałaniem inżynierii wstecznej lub implementacją własnych przejść obfuskacji w kompilatorze.

Jak używać

  1. Zapoznaj się z głównymi technikami obfuskacji dostępnymi w LLVM: spłaszczaniem przepływu sterowania (CFF), fałszywym przepływem sterowania (BCF), szyfrowaniem stringów i podstawianiem instrukcji. Każda technika służy innym celom – CFF utrudnia śledzenie logiki programu, BCF dodaje fałszywe ścieżki, a szyfrowanie stringów chroni dane tekstowe.

  2. Wybierz odpowiedni framework OLLVM w zależności od potrzeb: klasyczny OLLVM do podstawowych transformacji, Hikari do zaawansowanej ochrony funkcji, Pluto-Obfuscator do mieszanych wyrażeń boolowsko-arytmetycznych (MBA), lub o-mvll jeśli obfuskujesz aplikacje mobilne (iOS/Android).

  3. Zdefiniuj cele ochrony – czy chcesz utrudnić analizę statyczną, dynamiczną, czy obie. Na tej podstawie dobierz kombinację technik: obfuskacja przepływu sterowania chroni logikę, obfuskacja danych chroni wartości, a wirtualizacja kodu (VMP) zapewnia najwyższą ochronę kosztem wydajności.

  4. Implementuj wybrane przejścia obfuskacji w pipeline'u kompilacji LLVM. Możesz użyć istniejących implementacji z frameworków (np. BCF z klasycznego OLLVM) lub dostosować je do swoich wymagań poprzez modyfikację przebiegu na poziomie pośredniego kodu (IR).

  5. Testuj obfuskowany kod pod kątem poprawności funkcjonalnej i wydajności. Obfuskacja zwiększa rozmiar kodu i czas wykonania – zweryfikuj, czy wpływ jest akceptowalny dla Twojego przypadku użycia.

  6. Rozważ łączenie wielu technik dla głębszej ochrony: na przykład spłaszczanie przepływu sterowania w połączeniu z szyfrowaniem stringów i podstawianiem instrukcji. Jednak pamiętaj, że każda dodatkowa warstwa obfuskacji pogarsza wydajność i utrudnia debugowanie.

Podobne skille