Frage

Ich bin irgend Java-Code suchen, und ich habe folgendes bemerkt:

if (!foo(bar, baz, qux)) {
    i = 0; jsr 433;
}

javac würgt auf sich, sagt, es ist nicht eine Aussage, und dass ein Semikolon wird erwartet, nach dem Schlüsselwort jsr.

habe ich einige googeln, und ich fand das gleiche enthält, das führt mich ist es zu glauben, dass es absichtlich (auch wenn sie es bekommen nicht in der Lage waren entweder zu kompilieren). Was tut jsr? Wie kann man get Code es enthält, kompilieren?

War es hilfreich?

Lösung

Ich bin nah an sicher, dass dieser Code von einem Java Decompiler kommt.

Die JSR 432 riecht wie ein Decompiler Note, wo die Decompiler einen „Sprung“ Code gefunden, aber haben keine Ahnung, wie man es ausdrücken in Java-Sprache.

Andere Tipps

Sie sind die meisten der Suche wahrscheinlich auf die Ergebnisse von einigen Code dekompiliert, die die Decompiler nicht in der Lage war zu bewältigen. JSR ist die mnemonische für den Sprung-Unterprogramm-Bytecode; finden Sie unter Diese Seite für eine Auflistung. So bedeutet jsr 432 kann eine private Methode bei Bytecode-Adresse 432 nennen. Doch die Decompiler kann nicht das herauszufinden, vielleicht das Verfahren synthetisch ist, oder etwas anderes vor sich geht.

Bearbeiten

gegoogelt Beispiel Sie gefunden ist definitiv Decompiler Ausgabe, und es sieht aus wie der Teil mit der JSRs entweder Ursache von Verschleierung, Byte-Code-Änderung / Generation oder durch einen Decompiler stuffup.

jsr 433 ist keine gültige Java-Anweisung. Es ist eine VM-Anweisung, die "zu Sub Routine Jump" steht für (Siehe VM Spec für weitere Informationen). Die Decompiler es eingesetzt, weil es nicht den Bytecode-Befehl verstanden hat (vielleicht war es verschleiert) und so konnte es nicht dekompilieren es in gültige Java-Quelle.

JSR steht für Java Specification Request.

Es gibt wahrscheinlich einen Tippfehler in diesem Code und es sollte gewesen sein

if (!foo(bar, baz, qux)) {
    i = 0; //jsr 433;
}

Es scheint mir, dass jemand aus irgendeinem Grund einen nicht funktionierenden checkin hat.

Aber an diesem Code suchen, es sieht schrecklich künstlich, so dass es wahrscheinlich Code dekompiliert ist, wie Andreas_D bereits angegeben.

Mini-Update : Zeigt den unteren Kommentar:

/* Location:           C:\Users\Matteo\Downloads\FreeDownApplet.signed.jar
 * Qualified Name:     FreeDownApplet
 * JD-Core Version:    0.5.4
 */

Von dieser würde ich sagen, jemand eine signierte JAR-Datei aus, die verschleiert wurde, und wer diesen Code geschrieben dekompilierten es.

Update 2 : Googeln "JD Kern" Erträge http: //java.decompiler .free.fr / als erstes Ergebnis.

Es ist nicht in der Liste von Java Schlüsselwort . So glaube ich nicht, es einen Sinn hat. Und ich bezweifle, es ist möglich, es zu kompilieren.

JSR (die für Jump Unterprogramm steht) ist Teil der Java Virtual Machine Specification. Es ist ein Befehlssatz für die JVM.

Kurzbeschreibung

  

Die Adresse des Opcodes des   Befehl unmittelbar im Anschluss an diese   JSR-Befehl wird auf die gedrückt   Operandenstapelspeicher als ein Wert des Typs    return .

Dies kann auf der Buch 2nd edition JVM finden .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top