Sobes.tech
Middle+

Jakie jest Twoje zdanie na temat zaciemniania kodu i które metody ochrony kodu uważasz za najbardziej skuteczne?

sobes.tech AI

Odpowiedź od AI

Pozytywne. Obfuskacja zwiększa złożoność inżynierii odwrotnej, utrudniając analizę kodu przez atakujących.

Najskuteczniejsze metody ochrony:

  • Obfuskacja: Zamieszanie logiki kodu, zmiana nazw klas, metod i pól. Narzędzia takie jak R8/ProGuard.
  • Szyfrowanie: Szyfrowanie poufnych danych i krytycznych części kodu.
  • Integralność kodu: Sprawdzanie integralności kodu podczas działania, aby wykryć modyfikacje.
  • Ukrywanie kluczy i sekretów: Przechowywanie poufnych danych w bezpiecznym miejscu, np. przy użyciu Android Keystore.
  • Ochrona przed debugerem: Wykrywanie i przeciwdziałanie próbom podłączenia debugera JDWP.
  • Wykrywanie roota/jailbreak: Wyłączanie funkcji lub zamykanie aplikacji po wykryciu naruszonego urządzenia.

Kompleksowe podejście łączące kilka metod zapewnia najlepszą ochronę.

Przykład podstawowej obfuskacji za pomocą R8:

# Zachowaj wszystkie klasy dziedziczące po Activity
-keep public class * extends android.app.Activity

# Zapobiegaj usuwaniu adnotacji przez optymalizację.
-keepattributes *Annotation*

# Zachowaj wszystkie metody i pola w klasach zwracanych przez tę metodę.
-keepclassmembers class foo.bar.Baz {
  <fields>;
  <methods>;
}

# Wyraźnie usuń plik R.java.
-dontwarn **R$*
-dontnote **R$*
-dontoptimize **R$*