Wie zum verschleiern von Java-code schneller?
Wie zur Verschleierung von code schnell. Ich habe eine sehr kleine Java App und die will ich liefern, den verborgenen code zu meinen Kunden. Ich habe gehört, eine Menge über ProGuard zur Verschleierung von code und habe es heruntergeladen, aber nicht wissen, wie zu verschleiern meine "abc.jar" Datei.
Ich überprüfte Ihrer website, aber es enthält eine Menge material zum Lesen. Ich brauche keine schweren Verschleierung. Ich brauche nur ein verschleiern, ändert einfach die Namen von Variablen, Methoden und Klassen, um einige unlesbar lieben. Ich weiß ProGuard all dies mit einer Tonne von anderen Funktionen auch.
Q1. Also könnte mir jemand sagen bitte einige einfache obfuscators oder einige einfache Schritte, um mit proguard so, dass ich nur input "abc.jar" und es gibt "obfuscate_abc.jar" oder etwas, was so einfach ist das.
Q2. Eine weitere Sache, wie mein Java-Programm verwendet externe Bibliotheken, so soll ich zu verschleiern die Bibliotheken zu?
Q3. gibt es eine Eclipse-oder NetBeans-plugin vorhanden, um diese Verschleierung?
Ich habe auch gehört, dass wir Sie behalten sollten die mapping-Tabelle-Datei bei uns so, dass wir in Zukunft Debuggen können oder zu Bearbeiten, obfuscated code, indem Sie zuerst de-Verschleierung mit Hilfe der mapping-Tabelle, die erstellt wurde, zur Zeit der Verbergung.
Q4. So, eine weitere Frage ist, Warum wir halten müssen, dass die mapping-Tabelle mit uns? Wir können uns einfach ein Exemplar der un-obfuscated Anwendung, so dass die änderungen (falls notwendig in der Zukunft). Gibt es irgendeinen Grund zu behalten, dass die mapping-Tabelle-Datei mit uns?
InformationsquelleAutor der Frage Yatendra Goel | 2010-01-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur für ProGuard, es ist definitiv ein gutes Werkzeug (empfohlen in vielen Antworten hier, SO wie diese einediese eine und diese eine).
Kein Bedarf IMHO (auch nicht zu erwähnen, dass Sie auch nicht).
Ich würde eher empfehlen, die Ant-Task oder die proguard-maven-plugin. Sehen diese Frage über die maven-plugin, falls erforderlich.
Ja, zu "übersetzen" stacktrace.
InformationsquelleAutor der Antwort Pascal Thivent
Habe ich versucht, diese von Grund auf neu. Es sollte Ihnen den Einstieg. Ich denke, der Schlüssel wird sein, zu verstehen, den "keep options" in der Konfigurationsdatei.
Mithilfe dieses Codes:
Erstellte ich eine Example.jar. Ich kopierte die proguard.jar aus der ProGuard lib-Verzeichnis, und lief diesen Befehl-Linie
wo myconfig.pro enthält:
Diese produziert ExampleOut.jar enthält die gleiche Funktionalität und ist obfuscated (überprüft mit JAD). Beachten Sie, dass ich nicht verwenden, ein manifest, so testen Sie die Funktionalität, die ich unjarred getestet und die Klasse. Ausführung entry-Punkte innerhalb des jars bleibt dem Leser selbst überlassen.
Gibt es viele weitere halten Optionen aufgeführt im Abschnitt zur Verwendung.
InformationsquelleAutor der Antwort Michael Easter
Müssen Sie nur verschleiern die in anderen Bibliotheken der Fall ist, wo Sie brauchen, um Sie zu schützen gegen alles, was Sie denken, der Verschleierung macht Sie für Ihren code. Allerdings sollten Sie die Lizenzen für die anderen Bibliotheken, um zu sehen, ob Sie Schränken Sie die Verbreitung modifizierter Versionen.
InformationsquelleAutor der Antwort Paul Clapham
bezüglich Q4: Die Zuordnung wird verwendet, wenn Benutzer senden Sie Fehler-Berichte mit Ausnahme stacktraces aus den verborgenen code. ProGuard ermöglicht es Ihnen, übersetzen Sie diese stacktraces zurück zu der ursprünglichen Klasse Namen und Zeilennummern, wenn Sie die Zuordnung.
InformationsquelleAutor der Antwort x4u
Nur die Antwort auf Q4...
Gibt es einen guten Grund zu halten, die Zuordnung. Wenn der client jemals sendet Sie einen stacktrace, kann es sehr nützlich sein zu wissen, wo in der code, den stacktrace kam. Der Zweck der ein obfuscator ist, um loszuwerden, die Informationen 😉 Durch die Beibehaltung der Zuordnung, ermöglichen Sie die Umwandlung der stacktrace in denen das problem aufgetreten ist im original-code.
InformationsquelleAutor der Antwort Paul Wagland
Kann ich Sie beantworten die Frage 4. Sollten Sie behalten es für das Debuggen. Sagen, Sie haben einen bug in der Funktion "printTheAlphabet()" in Zeile 23, nach der Verschleierung der stack-trace könnte sagen so etwas wie "Fehler in j6z9r() on line 27", das macht es ziemlich unmöglich, suchen Sie die Fehler in Ihrem Quellcode.
InformationsquelleAutor der Antwort ZoFreX
Wie zur Verschleierung von code schnell & dirty:
Probieren Sie es aus: http://www.daftlogic.com/projects-online-javascript-obfuscator.htm oder: http://javascriptobfuscator.com/default.aspx oder Google "javascript obfuscator online".
Ich weiß, es ist für Javascript, aber Sie können das
Funktion führen Sie mithilfe einer Javascript-eval für Java (haben Sie einen Blick auf: https://stackoverflow.com/a/2605051/450148)
Ist es nicht der beste aprouch, aber es kann nützlich sein, wenn Sie wirklich in Eile sind und Sie nicht paranoic über Sicherheit.
EDIT: Das nächste Stück code verwendet das simple ROT13 nicht aussetzen direkt Ihr Passwort. Die gute Sache ist die "hacker" nicht wissen, welchen Algorithmus Sie verwenden (Sie können ersetzen ROT13 für welchen Algorithmus du magst), aber es ist immer noch sehr leicht, um es zu brechen:
InformationsquelleAutor der Antwort Felipe
Hatte ich einen kurzen Blick auf yGuard vor und gefiel die Tatsache, dass Sie könnte integrieren die Verschleierung Schritte in ein Ant-Skript. Dies ermöglicht es Ihnen, sehr einfach in Eclipse etc, wenn Sie möchten.
In der Dokumentation kommt es mit bieten eine Reihe von vorgefertigten Ant-Skripten, um Ihnen den Einstieg. Diese müssen nur geändert werden, um die Arbeit mit Ihren Projekten layout, ie Einstellung der korrekten Paket-Namen etc.
Wenn Ihr nicht klar ist, wie man Ant geht in Eclipse, Sie ziemlich viel, nur müssen Sie hinzufügen ein build.xml Datei zum Projekt, kopieren Sie das Beispiel-Skript, das kommt mit yGuard in Sie, ändern Sie das Skript für die Arbeit mit Ihrem Projekt und führen Sie die yGuard Aufgabe in der Ant view.
In Bezug auf die mapping-Tabelle in Frage. Der einzige Grund, warum ich denken kann, müssen Sie möglicherweise etwas wie dies wäre, wenn Sie nicht replizieren ein bug Ihre verborgenen jar Exponate, vom ursprünglichen code. An diesem Punkt müssen Sie möglicherweise die Arbeit mit den verborgenen version, vielleicht, um zu bestimmen, wenn die Verschleierung ein problem verursacht hat.
InformationsquelleAutor der Antwort Binary Nerd