x86 では、呼び出し後にスタックにプッシュされるアドレスは、呼び出し命令の後の場所を指します。この命令は、x86 マシンでは可変長にすることができます。どの種類の呼び出しが使用されたかを検出する方法はありますか?
たとえば、間接呼び出し *(%eax) は FF 10 ですが、これは直接呼び出し 0x10FF10FF の一部である可能性もあります。いえ
12: ff 10 call *(%eax)
14: e8 fb 10 ff 10 call 10ff1114 <main+0x10ff1114>
たとえば、FF 10 が見つかった場合、E8 の 3 バイト前にあるかどうかを確認します。これで十分でしょうか? 私が考えていなかった他の隠されたトラップは何ですか?