Skip to content

Commit f649861

Browse files
authored
reverse engineering added to proguard post
1 parent 95f61e0 commit f649861

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

_drafts/2019-09-23-proguard.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,15 @@ Podczas analizy dokonywanej przez kompilator `R8` następuje także identyfikacj
7171
tools:discard="@menu/unused1" />
7272
{% endhighlight %}
7373

74+
## Optymalizacja
75+
W trakcie procesu redukcji kodu kompilator `R8` dokonuje także analizy na głębszym poziomie w celu zastosowania optymalizacji. Jeśli kod nigdy nie osiągnie pewnego warunku wówczas cała przypisana mu gałąź może zostać usunięta. Ponadto kod może być także przepisany do krótszej formy, np. metoda wywoływana w jednym miejscu jest usunięta, a jej ciało przeniesione w miejsce wywołania. Domyślne ustawienia optymalizacji zawierają są w pliku `proguard-android-optimize.txt`.
76+
77+
{% highlight pro %}
78+
-optimizations !code/simplification/math
79+
-optimizationpasses 6
80+
-repackageclasses
81+
{% endhighlight %}
82+
7483
## Zaciemnianie
7584
Zaciemniania (`obfuscation`) jest częścią procesu zmniejszania kodu. Redukuje rozmiar aplikacji oraz utrudnienia dekompilację. Polega m.in. na skracaniu nazw klas, metod i pól.
7685

@@ -80,11 +89,5 @@ Zaciemniania (`obfuscation`) jest częścią procesu zmniejszania kodu. Redukuje
8089
-keeppackagenames package.name.to.keep
8190
{% endhighlight %}
8291

83-
## Optymalizacja
84-
W trakcie procesu redukcji kodu kompilator `R8` dokonuje także analizy na głębszym poziomie w celu zastosowania optymalizacji. Jeśli kod nigdy nie osiągnie pewnego warunku wówczas cała przypisana mu gałąź może zostać usunięta. Ponadto kod może być także przepisany do krótszej formy, np. metoda wywoływana w jednym miejscu jest usunięta, a jej ciało przeniesione w miejsce wywołania. Domyślne ustawienia optymalizacji zawierają są w pliku `proguard-android-optimize.txt`.
85-
86-
{% highlight pro %}
87-
-optimizations !code/simplification/math
88-
-optimizationpasses 6
89-
-repackageclasses
90-
{% endhighlight %}
92+
## Inżynieria wsteczne
93+
Inżynieria wsteczna (`reverse engineering`) jest procesem badania programu w celu ustalenie sposobu działania. Polega na `dekompilacji` kodu oraz poddawaniu go statycznej i dynamicznej `analizie`. W przypadku aplikacji dla systemu `Android` zalecane jest wykorzystanie różnych narzędzi umożliwiających częściową lub całkowitą dekompilacje. `Android Studio` posiada wbudowane narzędzie analizy `APK`, które dostarcza wielu informacji nt pliku wyjściowego w tym także pozwala na przeprowadzenie analizy zdekompilowanych zasobów oraz kodu. Ponadto wykorzystanie `dex2jar` wraz z `jd-gui` umożliwia konwersję pliku `APK` do `JAR` oraz przeglądanie zawartości plików źródłowych (klas). Pomimo zastosowania zaciemniania kodu wraz z zasadami `ProGuard` możliwe jest jego przekształcenie do czytelnego zapisu dzięki czemu może on stać się zrozumiały i ujawniać informacje wrażliwe takie jak autorskie algorytmy czy klucze. Dobrze zaprojektowany i zaprogramowany kod nawet w przypadku ujawnienia jego zawartości powinien minimalizować ryzyko utraty bezpieczeństwa i wycieku informacji. Zespół deweloperski jest zobowiązany zidentyfikować wrażliwe obszary aplikacji których znajomość osób trzecich może naruszać `bezpieczeństwo` i ujawnienie `know-how` oraz podjąć dodatkowe środki ostrożności. Przykładowo część kodu może być zależna od informacji ze zdalnego serwera. Alternatywnym sposobem na zaciemnienie kodu jest użycie `DexGuard`, który jest narzędziem zaprojektowanym dla aplikacji `Android`. Oferuje on znacznie większą ochronę przed statyczną i dynamiczną analize, aplikuje wiele warstw szyfrowania i zaciemniania oraz przetwarza nie tylko kod bajtowy lecz wszystkie komponenty aplikacji w tym zasoby.

0 commit comments

Comments
 (0)