Jar-Datei - Verhindert den Zugriff auf den Quellcode
Möchte ich mit der hand über eine kleine Java-app als runnable jar aber ich will nicht, dass jemand Zugang zu meinem source-code. Gehe ich Recht in der Annahme auszugehen, dass es keinen source code (.java-Dateien) enthalten, mit dem eine jar-Datei?
User269799
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du hast Recht, es gibt keine source-code in das Glas (es sei denn, Sie konfigurieren Sie Ihren build-system speziell steckte es in dort). Aber Sie sind immer in der Gefahr, die Ihr code wird dekompiliert aus dem bytecode. Einen obfuscater könnte hier helfen.
Vorausgesetzt, dass Sie nicht setzen die java-Dateien in der jar-Datei, werden Sie nicht magisch erscheinen 🙂 Sie kann alles beinhalten, wie Sie in der jar-Datei natürlich. Sie können die Liste der Inhalte zu überprüfen:
Beachten Sie, dass Java kann man dekompiliert ziemlich leicht, obwohl - so, während die Empfänger würde nicht haben Zugriff auf Ihre tatsächlichen Quellcode mit Kommentaren etc., konnten Sie sehen, Ihre Logik ziemlich klar. Sie kann möchten, verwenden Sie ein Verschlüsselungsprogramm zu helfen, schützen Sie Ihre IP. Persönlich versuche ich zu vermeiden obfuscators - angesichts der Tatsache, wie schwer die meisten von uns finden, code zu verwalten, wenn wir tun haben die wirkliche Quelle mit Kommentare und tests vorstellen, wie schwer es ist, wenn Sie nicht über diese Dinge 🙂 Es ist Ihr Anruf, wenn. Nur sicherstellen, dass Sie test obfuscated code gründlich - es können subtile Probleme, besonders wenn Sie mit Reflexion.
Ja. In der Regel, Gläser enthalten, die nur byte-kompilierte .class-Dateien. Das heißt, Sie kann Quellcode enthalten, wie gut es hängt davon ab, was Sie (oder Ihre Werkzeuge, bzw.) in Sie.
Beachten Sie jedoch, dass die Dekompilierung funktioniert ziemlich gut auf .die class-Dateien, machen Sie also nicht alles sicherheitsrelevante setzen auf code-obfuscation-Techniken wie dieser.
Wenn ein computer es ausführen zu können, ein Mensch kann reverse Engineering, und es ist nicht besonders schwer für Java.
Also den technischen Schutz funktioniert einfach nicht. Sie brauchen rechtlichen Schutz in form eines verbindlichen Vertrages oder ähnlichen. Sie können sogar Ihre Werke unter die GPL-Ausnahme für diejenigen, die Sie bezahlen, die ausreichend ist für die meisten Unternehmen zu vermeiden Diebstahl Ihrer Arbeit.
Welche situation genau möchtest du vermeiden?
Jar-Dateien in der Regel nur zählen .die class-Dateien, die java-bytecode-Dateien, sowie Ressourcen. Allerdings, um ein wenig sicherer in Ihrer code, Sie werden wollen, schalten Sie debugging-Informationen und wenn Sie wirklich wollen, um sicher zu sein, führen Sie es durch einen obfuscator.
Bearbeiten: berry120 Kommentar ist richtig - Sie können enthalten die source-Dateien, aber in der Regel tun Sie nicht. Ich möchte nur klarstellen, für alle zukünftigen Leser dieses. Es hängt von den Einstellungen des Tools verwenden Sie zum generieren der jar.
Regel gibt es nicht, aber Sie können die
jar -tvf <filename>
Befehl, um es zu überprüfen.Aber ich muss Sie warnen, dass es ist extrem einfach zu dekompilieren meisten
.class
Dateien in halbwegs lesbaren java-Quellcode.Um dies zu vermeiden, müssen Sie verwenden Sie ein Verschlüsselungsprogramm, aber das braucht einige zusätzlichen Aufwand in Ihrem Namen. (E. g. RetroGuard.)
Having said that, stellen Sie sich die Frage: "Ist mein code wirklich so wertvoll oder besonderes, dass ich all dies tun?" Normalerweise ist die Antwort Nein, die meisten der code, den wir schreiben ist nichts besonderes.
Sind Sie korrekt sind, jedoch die .Klasse-Dateien können leicht zerlegt werden, um java-code, und es ist ziemlich präzise in den meisten Fällen.
Wenn man es wirklich braucht, um ordnungsgemäß zu sichern, dann müssen Sie zu verschleiern.
Wird es abhängen, wie Sie generiert .jar, Eclipse verfügt über eine option zu umfassen .java Dateien auf dem .jar, aber es ist standardmäßig deaktiviert, und Sie haben, um es zu aktivieren, falls gewünscht.
Jar-Dateien enthalten könnte, die Quelle (Sie können wählen, ob Sie es oder nicht), so dass Sie nicht wie die Quelle, die speziell für Sie nicht in Frage. Was Sie brauchen, um bewusst sein, ist jedoch für den Menschen potenziell reverse engineering die class Dateien in die jar-Datei.
Können Sie dies umgehen, usng ein Obfuskator wie yGuard, die einfach den Haken in ein ant-task, aber wie schon andere gesagt haben, ist dein code wirklich so wichtig, dass niemand es sieht?
Den .jar-Datei enthält keinen source-code, nur der bytecode (.Klasse). Aber wie der byte-code ist maschinenunabhängig, kann es sein, dekompiliert sehr leicht. Es gibt keine Möglichkeit zu verhindern, dass andere Zugriff auf Ihre source-code.