Middle+
Ποια είναι η γνώμη σας σχετικά με την απόκρυψη κώδικα και ποια μέτρα προστασίας κώδικα θεωρείτε ότι είναι τα πιο αποτελεσματικά;
sobes.tech AI
Απάντηση από AI
Θετικό. Η απόκρυψη αυξάνει τη δυσκολία της αναστροφολογικής μηχανικής, καθιστώντας πιο δύσκολη την ανάλυση του κώδικα από επιτιθέμενους.
Οι πιο αποτελεσματικές μέθοδοι προστασίας:
- Απόκρυψη: Μπερδεύει τη λογική του κώδικα, μετονομάζει κλάσεις, μεθόδους και πεδία. Εργαλεία όπως R8/ProGuard.
- Κρυπτογράφηση: Κρυπτογραφεί ευαίσθητα δεδομένα και κρίσιμα τμήματα του κώδικα.
- Ακεραιότητα κώδικα: Έλεγχοι ακεραιότητας κατά την εκτέλεση για ανίχνευση τροποποιήσεων.
- Κρυψίματα κλειδιών και μυστικών: Αποθήκευση ευαίσθητων δεδομένων σε ασφαλές μέρος, π.χ. με Android Keystore.
- Προστασία από αποσφαλμάτωση: Ανίχνευση και αντιμετώπιση προσπαθειών σύνδεσης αποσφαλματωτή JDWP.
- Ανίχνευση root/jailbreak: Απενεργοποίηση λειτουργιών ή έξοδος από την εφαρμογή σε περίπτωση ανίχνευσης παραβιασμένης συσκευής.
Μια ολοκληρωμένη προσέγγιση που συνδυάζει πολλές μεθόδους παρέχει την καλύτερη προστασία.
Παράδειγμα βασικής απόκρυψης με R8:
# Διατήρηση όλων των κλάσεων που επεκτείνουν το Activity
-keep public class * extends android.app.Activity
# Αποτροπή διαγραφής των annotations από την βελτιστοποίηση.
-keepattributes *Annotation*
# Διατήρηση όλων των μεθόδων και πεδίων σε κλάσεις που επιστρέφονται από αυτήν τη μέθοδο.
-keepclassmembers class foo.bar.Baz {
<fields>;
<methods>;
}
# Ρητά διαγραφή του αρχείου R.java.
-dontwarn **R$*
-dontnote **R$*
-dontoptimize **R$*