2012-04-02 17 views
0

Ich entwickle eine Android-Anwendung, die in Kürze veröffentlicht wird. Einige meiner Klassen enthalten sehr vertrauliche Informationen. Mit Proguard verschleierte ich den gesamten Quellcode, aber später stieß ich auf eine große Anzahl von Fehlern. Jetzt plane ich, meinen Code eins nach dem anderen zu verschleiern. Wie man eine bestimmte Klasse verschleiert und den größten Teil der Klasse überspringt? Danke.Wie verschleiern eine bestimmte Klasse auf Android?

+2

Wahrscheinlich hilfreich: http://stackoverflow.com/questions/4458909/how-to-use-java-annotations-to-guide-androids-proguard – Thilo

+0

Sie verstehen, dass dies keinen Sinn macht, weil. Klasse und .dex-Dateien sind unterschiedlich. Ein Dex sind alle Klassen in einer Datei, es ist unmöglich, nur eine Klasse zu ändern, da Sie auch alle anderen Referenzen in Ihrem Code ändern müssen. –

+1

Meine Erklärung mag ein bisschen komisch sein. Ich beabsichtige, eine Klasse zu verschleiern und einige Fehler zu finden, die auftreten könnten. Wenn es sicher ist, werde ich eine weitere Klasse in den nächsten Verschleierungsvorgang einbeziehen und einige Fehler erneut finden. Ich werde diesen Schritt wiederholen, bis ich mich sicher fühle, ihn auf den Markt zu bringen. – KnightCavalry

Antwort

0

Ich hatte eine Menge Probleme mit verschleierten Java-Klassen. In der Tat generierte yGuard (yGuard! = Proguard, ich weiß) * .class-Dateien, die nicht in * .dex konvertiert werden konnten.

Wenn Ihr Code sensible Daten enthält, klingt es wie eine Art "security by obscurity". Vielleicht sollten Sie sensible Daten nicht in Ihrer * .class-Datei speichern, sondern in einer verschlüsselten Eigenschaftendatei.

+0

Aber dann könnte man die .class-Dateien dekompilieren und den Entschlüsselungsschlüssel bekommen. Egal, was du tust, wenn du dich in Sicherheit von Dunkelheit verlässt, wird es immer einen Weg geben, es zu brechen. – Marcelo

+0

Jes, sicher. Deshalb habe ich erwähnt, keine Geheimnisse in * .class-Dateien zu speichern. Wenn Sie ein vorab geteiltes Geheimnis in Ihrem Code speichern, kann es gestohlen werden. –

+0

Ja, ich werde deinen Ratschlag @ckuetbach berücksichtigen. Aber ich muss den Code immer noch verschleiern. Ich weiß, es wird nicht viel von einem Super-Genie-Hacker helfen. Aber es sollte jeden offensichtlichen Versuch des Reverse Engineering verhindern. – KnightCavalry

0

Versuchen Sie, wie diese

verwenden Wenn Sie Verschleierung Prozess machen wollen insbesondere Klasse Sie folgende Codezeile verwenden können.

Syntax:

-keep public class yourPackageName.youClassname { *; } 

Beispiel:

-keep public class com.facebook.katana.MainClass {*; }

Verwandte Themen