Um Ihnen eine Möglichkeit zu geben, welches Produkt evtl. besser für Ihr Projekt geeignet ist, habe ich versucht, die wesentlichen Unterschiede aus meiner persönlichen Sicht aufzuzeigen:
ProGuard ist ein vielseitiges Produkt zur Optimierung von Java-Bytecode im Allgemeinen, nicht nur für Android-Apps. Das Produkt erlaubt es, sowohl Desktop-Anwendungen, Embedded-Anwendungen als auch mobile Anwendungen (Android) zu komprimieren, zu optimieren und zu obfuskieren (verschleiern). Diese Optimierung hilft, den Speicherbedarf zu reduzieren, und wirkt sich auch positiv auf den Akkuverbrauch beim Nutzen der App aus. Vereinfacht ausgedrückt, kann ProGuard als ein generischer Optimierer für Java Bytecode bezeichnet werden.
DexGuard, auf der anderen Seite, widmet sich speziell dem Schutz und der Optimierung von Android-Apps. Dabei versucht der Hersteller, den schnelllebdigen Entwicklungen in der mobilen Plattform gerecht zu werden. So bietet DexGuard spezielle, auf Android abgestimmte, Schutzfunktionen. Dafür nutzt DexGuard abgestimmten Konfiguration für die jeweilige Android-Laufzeit-Umgebung und für gemeinsame Bibliotheken (Google Play Services, Dagger, Realm, SQLCipher etc.). Zusätzlich teilt DexGuard Dex-Dateien, die die Größenbeschränkungen überschreiten, automatisch auf (MultiDex). Während ProGuards Aktivitäten sich auf den Bytecode von Java-Anwendungen beschränken, bietet DexGuard auch einen Schutz für eigene Dateien, native Bibliotheken, Ressourcen-Dateien und Asset-Dateien.
Das Überführen von Android-Apps in lesbaren Java Code ist für Angreifer meistens problemfrei möglich. Hierzu stehen diesem zwei Ansätze zur Verfügung. Zum einen die Möglichkeit per Decompilierung (statische Analyse) und zum anderen die Analyse des Verhaltens der App zu Laufzeit (dynamische Analyse).
Sowohl ProGuard als auch DexGuard härten den Quellcode einer App. Dies soll diesen vor Reverse-Engineering-Ansätzen schützen.
ProGuard bietet - aufgrund seines generischen Optimierens - einen grundlegenden Schutz vor statischer Analyse. Hierfür bietet ProGuard einen Grundschutz in Form von Namensverschleierung. DexGuard hingegen nutzt Verschlüsselungs- und Obfuscationstechniken nicht für Namen von Klassen, Feldern und Methoden, sondern auch arithmetische und logische Ausdrücke im Quellcode. Auch der Kontrollfluss des Codes innerhalb der Methoden wird angepasst. Damit schützt DexGuard eine App wirkungsvoller vor Analysen.
Zusätzlich implementiert DexGuard eine Reihe von Runtime-Sicherheitsmechanismen (Runtime Application Self-Protection), die zur Laufzeit die Integrität der App überprüfen. Dynamische Analysen werden damit erschwert. Wird eine Anomalie erkannt, kann die App darauf reagieren. DexGuard stellt damit ein spezialisiertes Tool zum Schutz von Android-Apps dar.
Sie entscheiden
Es mag sich komisch anhören, aber der Weg ist das Ziel. ProGuard hilft an vielen Stellen. Das als Open Source verfügbare Produkt sollte auf alle Fälle eingesetzt werden. Wer schützenswerte Apps mit noch schätzenswerteren Daten hat, sollte aber seien Blick auf das kommerzielle Produkt DexGuard werfden. Die Schutzmauern werden damit merklich höher gezogen. (mb)