1

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 .

誰かが直接ジャンプのエンコードを手伝ってくれますか? ありがとう!

4

1 に答える 1