2012-06-05 3 views
7

So veröffentlichte ich meine Android-App, ich proguarded es, LVL angewendet und sogar einige der LVL-Code geändert, aber natürlich fand ich es irgendwo geknackt mit einem Werkzeug namens Lucky Patcher. Ich werde nicht fragen, wie ich mich vor 1-Klick-Tools wie diesem schützen kann, da ich denke, dass es keine einzige Antwort gibt (außer du hast eine Idee und kannst mich darauf hinweisen).Wie gehe ich von geknackt APK zu Java-Code? 1-Klick-Tool geknackt meine App

Ich muss Sie bitten, herauszufinden, wie mein Code geknackt wurde. Ich verstehe, dass dieses Tool APK-Datei nimmt und die Lizenzierung entfernt. Nun da, wie kann ich diese APK-Datei nehmen und umkehren Ingenieur zurück zu Java-Dateien, um zu sehen, wie das Tool meinen Code geknackt (so ich es beheben)

Bitte helfen Sie mir Dank

+0

Mögliche Duplikat von [ Gibt es eine Möglichkeit, den Quellcode aus einer APK-Datei zu erhalten?] (Https://stackoverflow.com/questions/3593420/is-there-a-way-to-get-the-source-code-from-an- apk-file) –

Antwort

1

Nach Proguard gibt es keine Möglichkeit, Ihren Code in menschenlesbares Java zu dekompilieren.
Während es den Reverse-Engineering-Prozess erschwert, ist es für einen cleveren Reverser nicht unmöglich, den versteckten Algorithmus herauszufinden.

Wie für Werkzeuge,
Verwenden Sie android-apktool, um zu smali zu dekompilieren und alle codierten XML-Ressourcen zu extrahieren.
Verwenden dex2jar Dalvik in jar zu übersetzen und schließlich jd-gui den resultierenden umgekehrt Java-Code

+0

Danke. Ich habe Mapping Samen und from.proguard, ich kann sie verwenden, um es richtig zu deofuscate? – Snake

+0

das ist der gleiche Kommentar, den "Scorpiodawg" geschrieben hat, nur dass er einen Link zu einem Post gab, der darüber sprach. Bitte lesen Sie den Beitrag. –

1

Piraterie ist ein großer Problem, und ich glaube nicht, dass eine Plattform oder ein Betriebssystem vollständig davor geschützt werden kann.

aber Google hat bereits einige Tutorials in Bezug auf den Schutz gegen sie, zum Beispiel: http://www.google.com/events/io/2011/sessions/evading-pirates-and-stopping-vampires-using-license-verification-library-in-app-billing-and-app-engine.html

auch: http://android-developers.blogspot.co.il/2010/09/securing-android-lvl-applications.html

ich denke, dass Sie auch einige anspruchsvolle Hindernisse mit C anstelle von Java setzen können.

auch, wie Google schlägt, in Betracht ziehen, einen anderen Ansatz: Machen Sie die Kernfunktionen frei, und den Rest über In-App-Abrechnung zu erwerben. Sie können auch Anzeigen und eine Funktion hinzufügen, um sie ebenfalls per In-App-Abrechnung zu entfernen.

+0

Danke ich weiß aber wie ich in meinem Beitrag gesagt habe möchte ich mein Programm gegen 1 Klick Tools schützen. was ich implementiert habe, ist.von der Post und ich wünschte es gäbe Beispiele, die es einfacher machen zu verstehen – Snake

+0

und Sie können es ausprobieren und ausprobieren, bis Sie einen Weg finden, dass es nicht gelingt, Ihre App zu knacken. Es ist jedoch nur eine Frage der Zeit, bis die Entwickler der App herausfinden können, wie sie diese beheben können. –

1

Es gibt eine Menge Informationen here auf, um zu sehen, wie aus einer DEX-Datei zurück zu Java-Quellcode zu gehen. Haben Sie sich auch this blog post angesehen, die viele Möglichkeiten zum Schutz Ihrer Quelle behandelt?

+0

Gute schnelle Antwort, aber ich sehe lieber.Einige Informationen hier – Snake

+0

Fair genug, ich wollte nicht alles wiederholen, das in den anderen zwei Pfosten schön gefangen wurde. – scorpiodawg

+0

Ich wünschte, ich kann zwei Antworten akzeptieren .. +1 :) – Snake

1

Ich habe darüber nachgedacht und es scheint, als ob Sie Ihre Anwendung wirklich von Hackern sichern wollten, gibt es wirklich nur 1 Möglichkeit, es zu tun. Sie können alle Arten von Phantasie Methoden der Versicherung Ihrer Anwendung ist lizenziert und bezahlt, wie in der Google-Artikel beschrieben, aber alles, was es braucht, ist ein guter Hacker, um Ihre Anwendung zu dekompilieren und zu finden, wo der Code ist und dann kommentieren oder ändern Sie eine Funktion immer wieder wahr werden.

Implementieren Sie stattdessen einen Teil Ihrer Anwendung, der für die Verwendung in jni/ndk erforderlich ist, und prüfen Sie in diesem Code auf Gültigkeit. Es muss nicht extrem komplizierter Code sein, aber Sie können nicht einfach etwas wie eine Funktion (zB checkValidity) setzen, da ein Benutzer den Java-Aufruf, der in das ndk aufruft, einfach kommentieren kann. Stattdessen sollten Sie einen Aufruf an Ihren ndk machen, um etwas zu tun, das für Ihre Anwendung nicht trivial ist - etwas, das der Benutzer nicht einfach auskommentieren oder mit einer definierten Funktion wechseln kann, die das Gleiche tut. Innerhalb des ndk-Codes überprüfen Sie die Integrität/Lizenzierung Ihrer Anwendung und, falls dies fehlschlägt, beenden Sie die Anwendung oder was immer Sie tun müssen.

Um dies zu umgehen, müsste der Hacker den ndk-Code neu implementieren oder es rückentwickeln. Was viel komplizierter und nicht wert sein sollte.

offensichtlich keine einfache Lösung Dies ist und wird immer noch nicht Ihre Anwendung garantiert nie gehackt wird, aber es sollte als die anderen Methoden sehr viel schwieriger zu brechen sein ..

+0

Awsome. Danke für die Antwort. Ich habe es wirklich genossen, es zu lesen, und ich denke, es ist ein guter Weg. Normalerweise ändern die 1-Klick-Programme die Standard-LVL-Bibliothek, die von Google kommt, also muss ich das ändern, um JNi/NDK einzuschließen. Haben Sie ein Beispiel/Link zu einem Tutorial, wie jni/ndk in Android zu implementieren? Vielen Dank – Snake

+0

vorbei an den 1-Klick-Programme zum Scheitern beim Entfernen LVL ist wahrscheinlich nicht zu schwer, wenn Sie diese Richtlinien folgen. Was jedoch schwierig wäre, ist, dass ein guter Hacker, der den Code versteht, nicht in der Lage ist, den Lizenzverifizierungscode per Hand mit mehreren Stunden Nachahmung zu entfernen. .. Sie könnten immer versuchen zu sehen, ob Sie Ihren eigenen Code mit ihnen umkehren können, bevor Sie auf den Markt freigeben. –

0

Ich persönlich denke, dass Verschleierung {Proguard, Dexguard} und native {.so} sind ziemlich effektiv, wenn sie richtig verwendet werden.

Es schreckt auf jeden Fall weniger erfahrene ‚Spieler‘ und erschwert definitiv das Leben selbst erfahrene ‚Spieler‘

nicht einfach Kopieren/Einfügen die Google Android-Beispiel-Codes ....

Verwandte Themen