マイケル・シコルスキーの "Practical Malware Analysis"の例題を理解しようとしています。私が理解していない逆解体技術の例があります。共通のテクニックは、2つの条件付き命令、すなわちゼロ(JZ)のジャンプとゼロでない場合のジャンプ(JNZ)を作成することであり、一緒に考えると無条件に1つの命令(これは私にとっては明白です)です。ディスアセンブラで作成された2つの可能な結果のグラフィックがあります。x86同じターゲットで2つのジャンプ命令をアセンブルする
次の引用は、図1を参照:
この例では、すぐに2つの条件ジャンプ命令の次の命令は、呼び出し命令であるように思われます(呼び出し)、バイト0xE8で始まります。両方の条件ジャンプ命令が実際にあることを意味することになっている何0xE8バイト
を超えて1つのバイトを指し、なぜジャンプの場所があるので、これは、しかし、そうではありませんloc_4011C4(から+1が来る)+ 1 ?図2では、それはloc_4011C5ですか?誰かがより詳細な説明をしてくれますか?
ジャンプターゲットは、コール命令の中で1バイトです。どうして?それは、おそらく難読化目的のために、プログラマがそれを書いた方法です。図2は実行される実際の命令を示す。 C4 + 1 = C5 – Jester