Gibt es Richtlinien, wie man ProGuard/ DexGuard effektiv einsetzen kann beim Schreiben von Codes? Ich habe irgendwo gelesen, dass es gut ist, alle sensiblen Daten in einer anderen Klasse anstatt sie direkt in die Activity
-Klasse zu setzen, da Activity
-Klassen nicht obfuskiert werden können. Wie kann ich meine Anwendung so codieren, dass ich die Nutzung von ProGuard/ DexGuard maximieren kann? Gibt es Regeln beim Codieren, wenn man vorhat, ProGuard/ DexGuard zu verwenden, um Anwendungsfehler zu vermeiden?
Antworten
Zu viele Anzeigen?Ja, du hast recht.
Platzieren Sie den gesamten "geheimen" Code in obfuskierten Methoden und lassen Sie die öffentlichen Methoden nur eine obfusierte aufrufen:
Beispiel
public static void main(final String[] args) {
SecretKnowHowWorker.doWork(args);
}
main
kann nicht oder sollte nicht obfuskiert werden, aber der Rest wird obfuskiert. In Eclipse können Sie auf "Referenzierte Bibliotheken" klicken, wenn Sie auf die obfuskierte JAR-Datei klicken, um zu sehen, was obfuskiert wurde und was nicht.
Die Activity-Klasse kann perfekt obfuskiert werden, aber einige Methodennamen (wie z.B. onCreate()
) können nicht. Platzieren Sie daher Ihre sensiblen Informationen außerhalb solcher Einstiegspunkte wie bekannte Methoden (alle, die das Framework aufrufen soll), und es sollte besser sein. Ich empfehle auch, Ihre eigene App zu knacken, um zu sehen, wie sie nach dem Decodieren aussieht, und etwas Mühe zu investieren, um es schlechter aussehen zu lassen :)