Pregunta

Estoy mirando algo de código Java, y me he dado cuenta de lo siguiente:

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

javac estrangulaciones en él, diciendo que no es una declaración y que se espera que un punto y coma después de la palabra clave jsr.

He hecho un poco buscando en Google y encontré algo de código que contiene la misma cosa , lo que me lleva a creer que está ahí intencionadamente (a pesar de que no fueron capaces de que se compile tampoco). Entonces, ¿qué hacer jsr? ¿Cómo se puede conseguir que contiene código que se compile?

¿Fue útil?

Solución

Estoy cerca de asegurarse de que el código está viniendo de un descompilador de Java.

El JSR 432 huele a una nota decompilador, donde el decompilador encontrado un código "salto", pero no tiene ni idea de cómo expresarlo en lenguaje Java.

Otros consejos

Lo más probable es buscando en los resultados de la descompilación de un código el cual el decompilador no era capaz de hacer frente. JSR es la tecla de acceso para el código de bytes salto subrutina; ver esta página un listado. Así jsr 432 puede significar llamar a un método privado en la dirección de código de bytes 432. Sin embargo, el decompilador no puede darse cuenta de eso, así que tal vez el método es sintético, o algo más está sucediendo.

Editar

ejemplo buscado en Google que has encontrado es sin duda la salida decompilador, y parece que la parte con los JSRs es ya sea por causa de ofuscación, byte de código de modificación / generación, o por un stuffup decompilador.

jsr 433 no es una declaración de Java válido. Es una instrucción de máquina virtual que significa "Cambiar a sub-rutina" (Véase VM Spec para más información). El decompilador inserta porque no entendía la instrucción de código de bytes (tal vez se ofuscado) y por lo tanto no podía descompilarlo en fuente de Java válido.

JSR significa Java Specification Request.

Probablemente hay un error tipográfico en ese código y lo que debería haber sido

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

Me parece que alguien hizo un registro no trabajo por alguna razón.

Sin embargo, mirando a ese código, se ve muy artificial, por lo que probablemente decompiled código, como ya se ha dicho Andreas_D.

Mini actualización : comprobar el comentario final:

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

A partir de esto, yo diría que alguien cometió un archivo JAR que fue firmado ofuscado, y el que ese código publicado decompiled él.

Actualizar 2 : "jd centrales" rendimientos Googling http: //java.decompiler .free.fr / como primer resultado.

No está en la lista de de Java palabras clave . Así que no creo que tenga ningún significado. Y dudo que sea posible compilarlo.

JSR (que significa salto de subrutina) es parte de la Máquina Virtual de Java Especificación. Es un conjunto de instrucciones para la JVM.

Descripción abreviada

  

El Dirección del código de operación de la   la instrucción inmediatamente después de esta   instrucción JSR se inserta en la   operando apilar como un valor de tipo    returnaddress .

Esto se puede encontrar en la edición JVM libro segundo .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top