Visual Studio で直接ジャンプしたい。Visual Studio は jmp 0x12345678 のような直接ジャンプをサポートしていない MASM を使用しているため、このジャンプを op コードで作成したいと考えています。私のコードは次のようになります
//0xEA = jmpf, 0x11223344 = jump target, 0x002e = code segment
unsigned char jmpf[] = {0xEA,0x44,0x33,0x22,0x11,0x2E,0x00};
//make stack executable (because of DEP)
DWORD oldprotect;
DWORD error;
VirtualProtect(&jmpf,7,PAGE_EXECUTE_READWRITE,&oldprotect);
unsigned int addr = (unsigned int)jmpf;
_asm{
mov eax, addr
jmp eax
}
ジャンプは次のように分解されます。
EA 44 33 22 11 2E 00 jmp 002E:11223344
しかし、このジャンプを実行すると、アドレス 0xFFFFFFFF の読み取りでアクセス違反例外がスローされます。このジャンプが 0xFFFFFFFF にどのように関連しているかはわかりません。
http://ref.x86asm.net/coder32.html (名前は jmpf)から OP コードを取得し、http ://www.c-jump.com/CIS77/CPU/x86/ からコード セグメント レジスタの番号を取得しました。講義.html .
誰かが直接ジャンプのエンコードを手伝ってくれますか? ありがとう!