2017-10-19 1 views
-3

Ich versuche, eine App mit Selbstverschlüsselung für Android zu entwickeln.Selbstverschlüsselnde Anwendung zur Vermeidung von Disasmbling auf nicht gerooteten Android-Geräten

Die Idee ist folgende:

  • App ausführen sollte es funktioniert (zB Anzeige "Hallo Welt!"), Aber ...
  • der App-Code vollständig gespeichert (teilweise) verschlüsselt, das heißt „alle was verschlüsselt werden kann, sollte verschlüsselt sein ", so dass es nicht durch einfaches disassemblieren in einer richtigen Weise gelesen werden kann (dh es wird buchstäblich verschlüsselt (durch AES zum Beispiel), so dass es als eine Anzahl von zufälligen Befehlen/Symbolen oder etw dargestellt wird . falsch).
  • der "Teil" der App sollte vor der Ausführung entschlüsselt werden;
  • unbenutzte "Teile" der App sollten nach der Verwendung entschlüsselt werden;
  • Alle oben genannten Operationen sollten von App selbst durchgeführt werden.

Die Kernidee ist also Selbstverschlüsselung.

Ich weiß, was Verschleierung ist, also bitte nicht erwähnen. Das gleiche gilt für alle Side-Apps. Ich werde nicht den Rest meines Lebens im Reverse-Engineering verbringen))). So ...

  • Was ist der richtige Weg, Android (JAVA) -Code zu verschlüsseln?
  • Wie kann der oben genannte Algorithmus implementiert werden?
  • geben Sie bitte alle Code-Schnipsel, wenn u in der Lage sind, solche Dinge zu tun oder alle Links/Informationen/articles/Pseudo-Code/Ideen

ich, was die Idee ist groß und wirklich interessant, und viele Menschen zu freuen, wissen, wie man ihre Apps schützt.

[EDITED] Dank @Pace und @JimmyB für benutzerdefinierte Classloader Idee. Ich werde versuchen, es umzusetzen. Auch mein Dank an @xalo, der ein metamorphes Motorkonzept vorschlug, werde ich in dieses Thema vertiefen, weil ich denke, dass es mein Ziel in einem größeren Ausmaß erfüllen wird.

+0

Blick in diese Frage ist zu breit für diese Seite. Wahrscheinlich möchten Sie einen benutzerdefinierten Classloader erstellen. – Pace

+0

Sie können prüfen, ob Sie ein benutzerdefiniertes ['ClassLoader'] (https://developer.android.com/reference/java/lang/ClassLoader.html) verwenden/implementieren, das Klassen beim Laden entschlüsselt. Jedoch * wenn * Ihre App den Code entschlüsseln kann, kann jeder Angreifer/Hacker. – JimmyB

+0

Vielen Dank für eine benutzerdefinierte ClassLoader-Idee. Und jetzt verstehe ich, dass meine Frage wirklich zu weit gefasst ist ((( –

Antwort

1

Sie sollten nicht versuchen, Ihre App selbst zu verschlüsseln, es wird eine Menge Komplexität für nicht so viele Schutz hinzufügen.

In der Tat, Hacker müssen nur Ihre Entschlüsselungsroutine umkehren oder Speicher ablegen, sobald die App ausgeführt wird.

Der beste Weg zum Schutz gegen Rückwärts wie Java/Android-App ist Verschleierung.

Sie können auch remote metamorphen Motorkonzept https://media.defcon.org/DEF%20CON%2024/DEF%20CON%2024%20presentations/DEFCON-24-Amro-Abdelgawad-The-Remote-Metamorphic-Engine.pdf

+0

) Ja, Sie haben recht. Der Hacker kann bei jedem Start der App Speicher ablegen.Ich habe vergessen zu sagen, dass es angenommen wurde, dass der Benutzer ein nicht gerootetes Gerät hat und es keine Möglichkeit gibt, eine verschlüsselte App ohne eine Erlaubnis auszuführen (vom Server zum Beispiel). Das Verschlüsseln sollte also die Situation schützen, um kopierte Dateien vor dem Zerlegen zu schützen. Habe ich recht? –

Verwandte Themen