2012-04-06 4 views
0

Ok Ich bin gerade in einer misslichen Lage.In einer Gurke mit Verschleierung einer Java-Bibliothek

Ich habe ein Java-Programm, das ich in einen Kern/Außenabschnitte aufgeteilt habe.

Ich sortierte meinen Kern in eine Java-Bibliothek, die der äußere Code (der öffentlich veröffentlicht wird) verweisen kann.

Ich möchte jedoch nicht, dass der Inhalt dieser Java-Bibliothek dekompilierbar ist.

Also ging ich zu einem guten Java-Obfuscator.

Was meine Situation erschwert, ist die Tatsache, dass meine Java-Bibliothek nicht genau modular aufgebaut ist - es verweist/Änderungen Zustand von außen Code (ja, es ist schrecklich, aber was auch immer)

Ich habe Demos aller Premium-obfuscators versucht (ZKM, Allatori, usw.) und kostenlos ist, aber sie entweder

  1. haben sehr schwachen Steuerfluss Verschleierungs das ist, was ich
  2. halt muß wegen Verweise auf Java-Bibliothek/Abhängigkeiten, die nicht in dem Glas selbst sind aber sind immer noch referenziert.

Irgendwelche Ratschläge?

Antwort

0
  1. Wenn es keine obfuscators sind, die Steuerfluss Verschleierungs haben, die Ihre Standards erfüllen, dann müssen Sie Ihre eigene obfuscator schreiben oder eine Anforderung an einen bestehenden Anbieter einreichen, ihr Produkt zu verbessern.

  2. Führen Sie die externen und internen Teile des Programms durch den Obfuscator zusammen gleichzeitig. Aber schreibe exclude rules für den gesamten externen Code. Sie sollten auch Ausschlussregeln für die öffentliche API Ihres internen Codes schreiben. Wenn Sie auf Ihrem internen Code keine öffentliche API-Ebene haben, wird es Ihnen schwer fallen, weil Ihr externer Code sich auf Ihren internen Code durch verschleierte Namen beziehen muss, was sehr unkalkulierbar und schwer zu machen ist Lese externen Quellcode.

+0

Danke für den hilfreichen Kommentar! – user1318256

2

Verschleierung verhindert nicht die Dekompilierung. Es kann immer dekompiliert werden. Es hilft nur, Ihren Code hinterher weniger lesbar zu machen. Verschleiere nur deine Logik, halte Schnittstellen unberührt.

+0

Zugegeben, kein verschleierter Code ist von dem Risiko von Dekompilierung frei. Aber ich brauche ein gewisses Maß an Schwierigkeit beim Dekompilieren, bevor ich verteile. – user1318256

0

Ich zweite Ahanins Kommentar.

Aber wenn Sie nach einem Obfuscator suchen, ist ein guter, der einen ziemlich robusten Regelsatz hat, Proguard. Es wird stark im Android-Bereich verwendet, wo Code so minimal (klein) wie möglich gemacht werden muss.

-Link: Proguard

+0

Ja, das ist der Obfuscator, der eine eher schwache logische Flussverschleierung hat – user1318256

+0

Ah, schade. Nun, viel Glück bei Ihrem Projekt. –