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$*