Java Binary Enhancement Tool (JBET) ist eine allgemeine Java-Programm, Analyse und Manipulation Tool. Bestehende Klasse-Dateien können demontiert werden, wieder zusammengesetzt, oder programmgesteuert durch die API JBET bearbeitet. JBET kann auch verwendet werden, um neue Java-Klassendateien von Grund auf neu erstellen. JBET verwendet eine bequeme interne Darstellung aller Inhalte der Java binäre (.class-Dateien), so dass der Benutzer die Klassen einfach bearbeiten, strukturiert.
JBET wurde als Teil des DARPA Self-Schutz mobiler Agents Projekt unter der OASIS und Active Networks Programme entwickelt (Vertragsnummer N66001-00-C-8602), um die automatische Software-Verschleierung zu studieren.
Die Programmiersprache Java wurde für dieses Projekt aufgrund der (relative) Leichtigkeit der Konstruktion von binären Bearbeitungswerkzeuge durch die große Menge an Typ in den Klassendateien vorliegenden Informationen entschieden. Unsere beiden Berichte, die Verschleierungstechniken Evaluierungsbericht und die Obfuscation Report, sind im Download-Bereich. Die Verdunkelung Werkzeug entwickelt, ist nicht Teil dieser Pressemitteilung.
JBET wurde auch in der DARPA / AFRL Survivable Server Projekt (Vertragsnummer F30602-00-C-0183), um zusätzliche Sicherheitsüberprüfungen an die Java-Standardbibliothek hinzufügen, verwendet. (Der Java Security API nicht unterstützt viele wünschenswerte Sicherheitskontrollen, wie weiter Genehmigung der Dateizugriffe nach dem Öffnen.)
JBET wurde verwendet, um die native Methode Referenzen in der Java-Standardbibliothek mit Stichleitungen, die einen steckbaren Sicherheitspolitik nennen ersetzen. Dieses Tool, genannt Jpolicy, ist auch als Download auf dieser Website zur Verfügung. Jpolicy ist sehr unvollständig in dieser Zeit, kann aber auch für diejenigen, die in Java-Sicherheit oder die Änderung der Standard-Bibliothek selbst zu sein.
Die interne Darstellung der Java-Klassendateien von JBET verwendet wird intented um es einfach für Programmierer Java Binärcode Transformationen schreiben zu machen. Jedes Element des Java-Klassendateien eine entsprechende interne Datenstruktur: Class für ganze Klassen, Methodinfo für Methoden, Fieldinfo für Felder, Snippit für Codeblöcke und Anleitung für einzelne Befehle. Snippit und Instruction verstehen Java-Opcode Syntax und Semantik, so dass die automatische Erstellung eines gültigen Java-Programme. Ein Java-kompatible Klasse Gutachter ist ebenfalls enthalten.
Einige Code-Transformationen sind schwer direkt durch Manipulation Java Anweisungen programmieren. Für diese Transformationen, ist ein gerichteter azyklischer Graph (DAG) Darstellung Codes. Im DAG Darstellung weist jeder Basisblock einen entsprechenden DAG, mit einem Satz von Eingangs- und Ausgangsknoten. Kanten in dem Graphen verbinden "Erzeuger" Knoten (wie Konstanten oder das Ergebnis von Berechnungen) auf "Benutzer" Knoten (wie Methodenaufrufe oder andere Berechnungen). Methoden werden in Basisblöcke unterteilt und Kontrollfluss wird an der Basisblockebene gespeichert (möglich, weil Java nur Sprungziele fest)
JBET benötigt eine Java 1.4 virtuelle Maschine zu laufen, obwohl es auf Klassendateien aus früheren Java-Versionen funktionieren. Die Verpackung und Build-Umgebung versorgt unterstützt Linux und Windows mit Cygwin; jedoch ist die Build-Prozess einfach und könnte manuell auf anderen Plattformen ausgeführt werden. Perl ist für Regressionstests erforderlich.
Jpolicy benötigt eine Java 1.4 virtuelle Maschine zu bauen, entweder Linux oder Windows NT / XP mit Cygwin. gcc wird für den Aufbau unter Windows (mit Cygwin mitgeliefert) erforderlich. Das Laufzeitsystem kann entweder Java 1.3 oder 1.4 (nur mit Sun JVM), unter Linux oder Windows NT / XP läuft. Windows 9x und Windows 2000 kann auch funktionieren, aber nicht getestet wurden.
Installation
1. Installieren Sie JDK 1.4.1.
2. Stellen Sie CLASSPATH auf JDK 1.4.1 / jre / lib / rt.jar
3. cd src; machen
4. Wenn das nicht funktioniert, überprüfen Sie die Makefile. java oder javac nicht im Weg sein.
5. Zum Aufbau einer JAR-Datei, die mit "java -jar jbet.jar" verwendet werden können, führen Sie "machen jar".
6. Wenn Sie installierten Perl haben, führen Sie die Tests mit "make test".
Wahlweise laufen "machen regen; make test".
Machen Sie einen symbolischen Link von jbet3 / bin / JBET irgendwo in Ihrem Pfad.
Verwendung
JBET verwendet die JNI-Format für Klassennamen und JNI Art und Methode Deskriptoren. Eine Zusammenfassung dieser Syntax verwenden "JBET Hilfe Syntax. Sun JVM-Spezifikation kann auch hilfreich sein.
Um bei der Demontage einer Klasse zu suchen, verwenden Sie 'JBET print'. Versuchen Zerlegen einer Klasse, die Sie Quelle für zu haben, und wurde mit Debug-Informationen (-g) gebaut: "JBET -P
Softwarebeschreibung:
Version: 3 R1
Upload-Datum: 3 Jun 15
Lizenz: Frei
Popularität: 137
Kommentare nicht gefunden