Вопрос

Я смотрю на код Java, и я заметил следующее:

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

Javac сдерживает на нем, говоря, что это не утверждение, и после ключевого слова jsr.

Я немного погуглил, и я нашел какой-то код, содержащий то же самое, что приводит меня к веществу, что здесь намеренно (даже если они не смогли его компилировать). Так что делает jsr делать? Как получить код, содержащий его для компиляции?

Это было полезно?

Решение

Я близок, чтобы этот код исходит от декомпилятора Java.

То JSR 432 Пахнует, как декомпиляторное примечание, где декомпилятор нашел код «прыжка», но не имеет подсказки к тому, как выразить его на языке Java.

Другие советы

Скорее всего, вы смотрите на результаты декомпиляции некоторых кода, который декомпилятор не смог справиться с. JSR является мнемоникой для подпрограммы прыжков; видеть эта страница для листинга. Так jsr 432 может означать, что вызовут частный метод по адресу ByteCode 432. Отказ Однако декомпилятор не может понять это, поэтому, возможно, метод синтетический, или что-то еще происходит.

РЕДАКТИРОВАТЬ

Googled примером, который вы нашли, определенно является выходом декомпилятора, и, похоже, часть с JSRS является либо причиной путем запутывания, модификации / генерации кода байтового кода, либо с помощью декомпилятора.

jsr 433 не является действительным заявлением Java. Это инструкция VM, которая означает «прыгать на подпрограмму» (см. VM Spec за дополнительной информацией). Декомпилятор вставил его, потому что он не понимал инструкции к байтекоде (возможно, он был запутан), и поэтому не мог декомпилировать его в действительный источник Java.

JSR означает запрос на спецификацию Java.

Там, вероятно, опечатка в этом коде, и это должно было быть

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

Мне кажется, что кто-то сделал неработающий регион по какой-то причине.

Но, глядя на этот код, он выглядит ужасно искусственно, так что это, вероятно, декомпилированный код, как уже заявил Andreas_D.

Мини обновление: Проверьте нижний комментарий:

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

Из этого я бы сказал, что кто-то сделал подписанный файл JAR, который был запутан, и кто бы ни опубликовал этот код, декомпилировал его.

Обновление 2.: Googling "JD Core" http://java.decompiler.free.fr/ как первый результат.

Это не в Список ключевых слов Java. Отказ Так что я не верю, что это имеет какое -либо значение. И я сомневаюсь, что это можно скомпилировать.

JSR (Что означает подпрограмму прыжков) является частью спецификации виртуальной машины Java. Это набор инструкций для JVM.

Краткое описание

То адрес OpCode of Trance сразу после этой инструкции JSR выдвигается в стек операнда как значение типа обратный адрес.

Это можно найти на JVM Book 2nd Edition.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top