-1

実際、私はGOTOステートメントで難読化されたコードを研究しようとしています..

private void fun()
{
if(somecondition)
    goto LABEL3;

...
...

LABEL3:
    return;
    Exception e;
    e;
    if(true) goto LABEL3; else LABEL7;


...
...

LABEL7:
    //some statements
}

IF文でLABEL3を呼び出すと、
機能が停止しますか?LABEL7が呼ばれる?
プログラムの流れは?

これは、読みにくくするために一部のステートメントが goto に置き換えられている逆コンパイルされた Java クラス ファイルです(たとえば、goto と IF の組み合わせを持つ WHILE)。

編集

逆コンパイルされたクラス ファイルは Java 構文と完全に一致しないと想定したため、この質問を投稿しましたが、代わりに疑似コードを生成するために使用される逆コンパイラは、ネイティブ構文をほとんど保持していません。はい、goto はありませんが、ダミーのキーワードのみです。はい、LABEL3 が返される可能性があり、他のものには到達できません。

4

2 に答える 2

3

このコードは、.class を完全に逆コンパイルできない場合の jad の出力のように見えます。

その場合は、エラーを確認してください (クラス ファイルの末尾にある Java コメント内)。あなたが投稿したコードブロックに関するものがあるでしょう。

于 2012-12-21T09:52:03.300 に答える
1

条件if(somecondition)が満たされた場合、関数は終了します。したがって、LABEL7呼び出されません。 return「関数から戻る」ことを意味し、goto-block から戻るべきではありません。少なくとも Java (または他の言語、コメントからは Java とは思えない) が通常のgotoとの定義を変更していない場合return

実際、この後のすべてのものは何のためにあるのだろうと思っていますreturn;return(label)の後に他のエントリ ポイントがないため、呼び出されることはありません。

于 2012-12-21T09:50:37.447 に答える