Java Binary Enhancement Tool (JBET) er en generel Java-program analyse og manipulation værktøj. Eksisterende klasse filer kan skilles ad, samles igen, eller redigeret programmatisk gennem JBET API. JBET kan også anvendes til at skabe nye Java class filer fra bunden. JBET bruger en bekvem intern repræsentation af hele indholdet af Java binære (.class) filer, gør det muligt for brugeren at redigere klasserne let, på en struktureret måde.
JBET blev udviklet som led i DARPA Self-Beskyttelse Mobil Agenter projekt under OASIS og aktive netværk programmer (kontrakt nummer N66001-00-C-8602) for at studere automatiseret software formørkelse.
Java-sproget blev valgt til dette projekt på grund af den (relativt) let konstruere binære redigeringsværktøjer, som den store mængde af type information til stede i klassen filer. Vores to rapporter, de formørkelse Techniques evalueringsrapport og Obfuskering Rapport, er tilgængelige fra download-området. Den formørkelse værktøj udviklet, er ikke en del af denne udgivelse.
JBET blev også brugt i DARPA / AFRL Survivable Server projektet (kontrakt nummer F30602-00-C-0183) at tilføje yderligere sikkerhedskontrol til Java Standard Library. (Java SecurityManager API understøtter ikke mange ønskelige sikkerhedskontrol, såsom fortsat tilladelse til fil adgang efter åbning.)
JBET blev brugt til at erstatte de indfødte metode referencer i Java standard bibliotek med stubbe, der kalder en plug sikkerhedspolitik. Dette værktøj, kaldet Jpolicy, er også tilgængelig for download på hjemmesiden. Jpolicy er meget ufuldstændig på dette tidspunkt, men kan være interessant for dem, selv arbejder i Java sikkerhed eller ændre standard biblioteket.
Den interne repræsentation af Java class filer, der bruges af JBET er man agter at gøre det nemt for programmører at skrive Java binær kode transformationer. Hvert element i Java class filer har en tilsvarende intern datastruktur: ClassInfo for hele klasser, MethodInfo for metoder, FieldInfo for felter, Snippit for kodeblokke og instruktion for de enkelte instruktioner. Snippit og instruktion forstå Java opcode syntaks og semantik, tillader automatiseret oprettelse af gyldige Java-programmer. En Java-kompatible klasse verifikator er også inkluderet.
Nogle kode transformationer er vanskelige at programmere direkte ved at manipulere Java instruktioner. For de transformationer, en rettet acyklisk graf (DAG) repræsentation af koden er tilgængelig. I DAG repræsentation, hver grundlæggende blok har en tilsvarende DAG, med et sæt af input og output knudepunkter. Kanter i grafen forbinde "producent" knudepunkter (såsom konstanter, eller resultatet af beregninger) til "Bruger" knudepunkter (såsom metode opkald eller andre beregninger). Metoder er opdelt i grundlæggende blokke og kontrol flow opbevares ved den grundlæggende blok niveau (muligt, fordi Java kun har fastsat jump mål)
JBET kræver en Java 1.4 virtuel maskine til at køre, selv om det kan operere på class filer fra tidligere Java-versioner. Emballagen og opbygge miljø leveret understøtter Linux og Windows med Cygwin; imidlertid byggeprocessen er enkel og kan udføres manuelt på andre platforme. Perl er nødvendig for regressionstest.
Jpolicy kræver en Java 1.4 virtuel maskine til at bygge enten Linux eller Windows NT / XP med Cygwin. gcc er nødvendig for at bygge på Windows (leveres med Cygwin). Runtime system kan være enten Java 1.3 eller 1.4 (med Suns JVM kun), der kører på Linux eller Windows NT / XP. Windows 9x og Windows 2000 kan arbejde så godt, men er ikke blevet testet.
Installation
1. Installer JDK 1.4.1.
2. Indstil CLASSPATH til jdk1.4.1 / JRE / lib / rt.jar
3. cd src; lave
4. Hvis det ikke virker, undersøge Makefile. Java eller javac kan ikke være i vejen.
5. Hvis du vil bygge en jar-fil, der kan bruges med "java -jar jbet.jar", køre "gøre krukke".
6. Hvis du har perl installeret, skal du køre forsøgene med "gøre test".
Eventuelt køre "gøre regen; gøre test".
Lav et symbolsk link fra jbet3 / bin / jbet til et sted på din vej.
Anvendelse
JBET bruger JNI format for klasse navne, og JNI type og metode deskriptorer. For en oversigt over denne syntaks, brug 'jbet hjælp syntaks ". Suns JVM specifikation kan også være nyttige.
At se på en klasse demontering, brug 'jbet print. Prøv at demontering en klasse, du har kilde til, og blev bygget med debug info (-G): 'jbet -P
Software detaljer:
Kommentarer ikke fundet