Visual Studio でインライン アセンブリを使用して、特定のアドレスにジャンプしたいと考えています。私はこれを試しました:
_asm {
jmp 0x12345678
}
しかし、コンパイラは、「オペコードはこの型のオペランドを使用しません」と言います。
ダイレクトジャンプってどうやるの?
Visual Studio でインライン アセンブリを使用して、特定のアドレスにジャンプしたいと考えています。私はこれを試しました:
_asm {
jmp 0x12345678
}
しかし、コンパイラは、「オペコードはこの型のオペランドを使用しません」と言います。
ダイレクトジャンプってどうやるの?
モジュールにリンカ オプション /DYNAMICBASE:NO /FIXED /BASE:0x[your base address] を使用している場合は、次を使用できます。
_asm
{
jmp label1 + 0xFFFFFF
label1:
}
逆アセンブリでコンパイルすると、次のようになります。
_asm
{
jmp label1 + 0xFFFFFF
040117DC E9 FF FF FF 00 jmp 050117E0
label1:
}
その後、いじって、宛先アドレスへの E9 ジャンプを取得できます。