de-compilieren von class-dateien?

Status
Nicht offen für weitere Antworten.

bummerland

Top Contributor
hat sich schon mal jemand mit dem de-compilieren von class-dateien beschäftigt? wie lesbar ist der code, der dabei herauskommt?
 

DTR

Bekanntes Mitglied
So viel ich weiß bekommst du die Signaturen der Klasse heraus, aber nicht den Code. Kann mich aber auch irren. Am besten mal selbst ausprobieren.
 

bummerland

Top Contributor
Hab nen decompiler gefunden, der scheint nicht schlecht zu sein.

http://members.fortunecity.com/neshkov/dj.html

Der stellt anscheinend fast den kompletten Quellcode wiederher, nur dass die variablennamen nicht mehr original sind, die erfindet er selbst.

vielleicht kann man beim compilieren irgendwelche parameter angeben, die das decompilieren erschweren?
 
S

stev.glasow

Gast
hast du mal den decompilierten code wieder compiliert - ob der läuft.
 

Nobody

Top Contributor
also ich teste das nacher mal, den ich hätte manchmal schon ganz gerne mal den quelltext von daten angesehen, ging aber leider nicht.

ich denke jeder programmiere sollte so fair sein und keinen quelltext von anderen nutzen, solange ihm dies nicht gestattet wurde. aber das nachlesen um anregungen für eigene problematikas zu finden, finde ich in ordnung daher werde ich das mal testen obs funzt
 
S

Stefan1200

Gast
Bei mir zuhause habe ich ein Java Decompiler, vor dem ist jeder Java Byte Code lesbar, der nicht verschlüsselt wurde. Ich habe meine eigenen Programme damit decompiliert, und durfte mit erstaunen feststellen, das nicht nur der Source komplett lesbar ist, sondern sogar die Variablen Namen richtig sind.

Leider kann man diesen Decompiler nicht mehr runterladen, da die Seite down ist. Und aus dem Kopf heraus kenne ich auch den Namen nicht mehr auswendig. Wenn interesse besteht, poste ich das mal nächste Woche.
 

bummerland

Top Contributor
also wie gesagt, der hier ist echt gut. der stellt den kompletten quelltext wieder her. wenn die class-datei nicht mit entsprechenden parametern kompiliert wurde, werden sogar die originalen variablennamen erkannt.
 

Stefan1200

Top Contributor
becstift hat gesagt.:
also wie gesagt, der hier ist echt gut. der stellt den kompletten quelltext wieder her. wenn die class-datei nicht mit entsprechenden parametern kompiliert wurde, werden sogar die originalen variablennamen erkannt.

Den DJ Java Decompiler habe ich mir auch mal angeschaut. Der rockt ja.
Mal so nebenbei: Der DJ Decompiler basiert zufällig auf den Decompiler, den ich meinte :)
Den, den ich meinte, heisst "jad". Und im Ordner von DJ liegt zufällig eine jad.exe (ist auch wirklich der Gleiche) :)

Danke für den Tipp, dieser Decompiler kann sogar direkt JAR Dateien öffnen und so. Gefällt mir.
 

aquanox

Mitglied
Moin,

da beteilige ich mich auch mal an der Diskussion:

Der Decompiler, der mir derzeit am besten zusagt ist wie oben JAD. Für alle Windows Benutzer gibts davon sogar eine bequeme Oberfläche zum herumklicken (FrontEnd Plus).

http://kpdus.tripod.com/jad.html

Der Code, den er produziert ist mit dem Original gleich, fehlen tun nur Kommentare, aber die werden vom Compiler auch nicht in die Klassendateien gepackt.

Das decompilieren kann man erschweren und sogar soweit bekommen, dass es nicht mehr wieder compilierbar wird. Dazu benötigt man sogenannte Obfuscator. Diese löschen alles aus den Klassendateien, das nicht unbedingt für das Programm zum laufen nötig ist. Darunter sind Zeilennummern (Werden nur eingefügt, damit bei einem Fehler die Zeile ausgegeben werden kann) oder Ähnliches. Außerdem stellt er noch paar Sachen um und der decompilierte code glänzt dann an gotos (Existieren in Java nicht als gülige Benutzung), wo vorher schleifen und if's waren.
 
S

stev.glasow

Gast
das ist doch mist . gibt es da eine möglichkeit dem compiler zu sagen, dass er so compiliert, dass der code nicht mehr decompilierbar ist ?
 

mariopetr

Bekanntes Mitglied
jain. es gibt imho keinen javacompiler, der ein decompilieren verhindert. aber es gibt obfuscator, welche das decompilieren relativ erfolgreich verhindern. allerdings ist java (und alle anderen sprachen) prinzipbedingt nicht vor reverse engineering sicher. aber man kann den aufwand fuer den "cracker" fast beliebig in die hoehe treiben. wozu das gut sein soll, weiss ich aber auch nicht. zum einen gibt es ja das urheberrecht, zum andern kann mann zwar das decompilieren erschweren, aber nicht verhindern. oft macht man sich aber das leben selbst durch obfuscator das leben schwer. wenn man (relativ) sicher gehen will, kann man die klassen auch verschluesseln, ein tool dafuer kann man zb unter mailto:securepackager@itemic.<com | de> erhalten
 
S

stev.glasow

Gast
mariopetr hat gesagt.:
aber man kann den aufwand fuer den "cracker" fast beliebig in die hoehe treiben. wozu das gut sein soll, weiss ich aber auch nicht. zum einen gibt es ja das urheberrecht, zum andern kann mann zwar das decompilieren erschweren, aber nicht verhindern. oft macht man sich aber das leben selbst durch obfuscator das leben schwer.
damit, dass jemand den code sieht, kann mann ja leben, aber bei passwörtern, etc siehts schon anders aus

mariopetr hat gesagt.:
wenn man (relativ) sicher gehen will, kann man die klassen auch verschluesseln, ein tool dafuer kann man zb unter mailto:securepackager@itemic.<com | de> erhalten
ist itemic.com nicht deine seite ?
kostet das tool was ?
 

mariopetr

Bekanntes Mitglied
www.itemic.com ist die site meines arbeitgebers (fuer das design wuerde ich mich schaemen). das tool an sich hat ein mitarbeiter erstellt, als urheber ist er auch frei in seiner lizenzgebung (die firma darf das tool nutzen, er darf dafuer in seiner arbeitszeit daran arbeiten). frag ihn einfach, ob er dafuer geld haben will oder nicht, ich weiss es nicht.

fuer passwoerter wuerde ich eher richtige verschluesselung empehlen, oder, wenn man nicht das passwort braucht, sondern nur authentifizieren will, java.security.* (also den digest speichern).
 

DTR

Bekanntes Mitglied
Mit Passwörtern in Klassen ist das so eine Sache. Wenn ich sie nicht übers Decompilieren herausbekomme kann ich immernoch über Vererbung versuchen sie zumindest zu nutzen. deshalb sollte man sie auserhalb der Klassen aufbewahren. Da kann man sie dann auch nach belieben verschlüsseln.
 

Nobody

Top Contributor
für passwort verschlüsselung eignet sich assembler meiner meinung nach am besten. durch verschiebungen der bit reihenfolge und ähnliches kann man die meisten zur weisglut treiben, da die entschlüsselung im quelltext kaum erkennbar ist und der kreis der sich mit assembler auskennt ist doch deutlich geringer als mit den hochsprachen
 

Nobody

Top Contributor
dem user solls doch egal sein, wie das ganze funktioniert und am assa tool solls nicht scheitern:
http://www.kryptocrew.de/archiv/coding/asm/Asmtut.html

wird das mit dem ringsystem sogar erklärt.

ach und wegen sicherung der quelltexte: .htaccess bietet zumindest serverseitig sehr guten schutz der rest liegt dann an euch. aber wenn jemand den quelltext haben will wird ihn bekommen, wobei wohl das erlernen und entwickeln da besser wäre ;)
 
R

RoyArtelo

Gast
Do you think that Obama is going to win because the Republicans have such a bad candidate?
Why did John McCain make his final argument against Obama... coal?
That's his closing argument? William Ayers, Rev. Wright, spreading the wealth, Born Alive, meeting dictators without preconditions, etc. all have to take a back seat so that McCain can go to Colorado and New Mexico to talk about coal? Does this more or less explain why he's going to get his clock cleaned Tuesday?
 

ARadauer

Top Contributor
falls jetzt hier jemand in den alten thread rein schaut, weil ihn der spam nach oben gepusht hat und fragen über das decompilieren von class files auftauchen...

www.kpdus.com/jad.html jad ist da ganz sinnvoll
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H2SO3- bestimmte class immer mit 1.4 compilieren Allgemeine Java-Themen 5
J Jasper Report - seltame Meldung beim compilieren Allgemeine Java-Themen 3
J WARNING: An illegal reflective access operation has occurred, beim Compilieren von JasperReports, was bedeutet das ? Allgemeine Java-Themen 23
P Java Android Code in IOS compilieren? Allgemeine Java-Themen 9
H JUnit Fehler beim Compilieren - erledigt Allgemeine Java-Themen 0
H Java SWT nativ compilieren Allgemeine Java-Themen 10
M Compilieren auf der COnsole bzw batch Allgemeine Java-Themen 3
M Java Datei Compilieren Allgemeine Java-Themen 9
C Java-Datei compilieren Allgemeine Java-Themen 6
T Java - Compilieren während Laufzeit Allgemeine Java-Themen 3
T Fehler beim Compilieren Allgemeine Java-Themen 10
E Problem beim Compilieren Allgemeine Java-Themen 6
S Probleme mit dem Compilieren von Dateien in Verzeichnis Allgemeine Java-Themen 4
N warning beim compilieren des eigenen TableRenderers Allgemeine Java-Themen 5
G mit javac in Console mehrere java Files compilieren Allgemeine Java-Themen 6
T Code für VM 1.4 mit SDK1.5 compilieren Allgemeine Java-Themen 4
b3ny javaprogramm als windows anwendung compilieren Allgemeine Java-Themen 9
D NoClassDefFoundError: Could not initialize class Allgemeine Java-Themen 0
J Class to link Java Allgemeine Java-Themen 4
C Was passt hier nicht bei der Calendar-Class Allgemeine Java-Themen 2
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
Erwin82a Object cannot be converted to Custom Class in Lampda Expression Allgemeine Java-Themen 2
T Java Robot Class - Bot Allgemeine Java-Themen 3
S Class File Editor -> Source not found Allgemeine Java-Themen 4
G javafx "class path" exception Allgemeine Java-Themen 5
S Java class direved from inner class Allgemeine Java-Themen 6
S Inner Class Allgemeine Java-Themen 11
K Wildcard und class type Allgemeine Java-Themen 9
M Java model class ? Allgemeine Java-Themen 9
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
S class path resource [config.properties}] cannot be opened because it does not exist Allgemeine Java-Themen 4
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
T Compiler-Fehler NoClassDefFoundError beim Laden einer Class Allgemeine Java-Themen 11
J Class Decompile als String (Procyon) Allgemeine Java-Themen 2
H Class 'java.io.BuferedReader' is not present in JRE Emulation Libary | GWT Fehler?! Allgemeine Java-Themen 0
I Datentypen String in class sicher verwahren Allgemeine Java-Themen 17
R Dynimc Class Loading Allgemeine Java-Themen 5
J Inner class + Leer-Konstruktor Allgemeine Java-Themen 1
Neumi5694 Methoden Generic: Rückgabetyp als Class-Parameter übergeben Allgemeine Java-Themen 3
D Collections.sort funktioniert nicht in exportierten .class Dateien Allgemeine Java-Themen 10
V Eclipse .class Dateien Allgemeine Java-Themen 9
KeexZDeveoper Von .class zu .java Allgemeine Java-Themen 7
N Wo ist Object.class ? Allgemeine Java-Themen 0
K Nicht alle class-Dateien im JRE? Allgemeine Java-Themen 2
M *.class Files ausführen Allgemeine Java-Themen 2
L Klassen Nested Class In Nested Class Allgemeine Java-Themen 3
perlenfischer1984 Dialect class not found exception Allgemeine Java-Themen 15
Tort-E Manifest Main-Class Allgemeine Java-Themen 8
I JSoup Class auslesen Allgemeine Java-Themen 1
K Generic class und Reflection Allgemeine Java-Themen 2
R .class Datei in .jar austauschen Allgemeine Java-Themen 2
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
A main-class Not found Allgemeine Java-Themen 3
T Java Class Intrumentation mit Annotations in Laufzeit Allgemeine Java-Themen 1
N Per Reflection auf (method) local inner class zugreifen? Allgemeine Java-Themen 3
P JDK installieren Error: Could not find or load main class HelloWorld.java Allgemeine Java-Themen 3
B public class JarFilter extends FileFilter « Falsch? Allgemeine Java-Themen 4
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
T Hash von *.class-Datein überprüfen Allgemeine Java-Themen 1
F java.lang.ClassNotFoundException: .class Allgemeine Java-Themen 5
T InvalidClassException - Read null attempting to read class descriptor for object Allgemeine Java-Themen 8
Phash Can't find Main Class Allgemeine Java-Themen 4
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
B json zu java class Allgemeine Java-Themen 2
antonbracke Aus Jar eine Class laden und damit arbeiten! Allgemeine Java-Themen 5
D Class<CAP#1> statt Class<...> Allgemeine Java-Themen 5
T Class-Objekt mit URLClassloader Allgemeine Java-Themen 7
A Class Datei aus Verzeichnis über URLClassLoader laden Allgemeine Java-Themen 2
L Class Files , Methode .delete() Allgemeine Java-Themen 13
E NetBeans warning: [options] bootstrap class path not set in conjunction with -source 1.6 Allgemeine Java-Themen 4
X Could not find the main class programm will exit (textdokument) Allgemeine Java-Themen 3
S Could not find the main class Allgemeine Java-Themen 7
B Mal wieder "Could not find the main class" Allgemeine Java-Themen 3
B Variable class in java.lang.Object Allgemeine Java-Themen 11
C Could not find the main class. Allgemeine Java-Themen 15
S Klassen .jar - eine .class datei ändern? Allgemeine Java-Themen 23
A Could not find main class: start Allgemeine Java-Themen 5
S main() class finden Allgemeine Java-Themen 7
hdi Could not find main class? Allgemeine Java-Themen 8
R Warum Class.forName(); Allgemeine Java-Themen 7
C class.class angefordert ? Allgemeine Java-Themen 2
S Methoden Class.forName() >> Methoden - Reihenfolge Allgemeine Java-Themen 5
B Test$1.class mit dem javac compiler Allgemeine Java-Themen 7
G jar Datei findet Main Class nicht... Allgemeine Java-Themen 2
P Java Editor Could not find the main class GUI. Programm will exit. Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
T Interface > Abstract > Class Allgemeine Java-Themen 11
TheDarkRose Subversion .class Dateien auch commiten? Allgemeine Java-Themen 3
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
E String name in class convertieren Allgemeine Java-Themen 4
F Änderung in .jar bzw. .class vornehmen ? Allgemeine Java-Themen 18
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
G Unterschied MyClass.class vs this Allgemeine Java-Themen 2
S mit Class eine Klasse nur einmal instantiieren Allgemeine Java-Themen 4
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
M Klasse aus xyz.class Datei laden / package entfernen? Allgemeine Java-Themen 4
BattleMaster246 Could not find the Main class Allgemeine Java-Themen 30
N class Task extends TimerTask ohne Blockieren Allgemeine Java-Themen 15
H .class in .java umwandeln Allgemeine Java-Themen 3
T class.newinstance + try/catch-konstruktor Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben