我还不习惯这整个 64 位的东西,因为我熟悉堆栈中的所有内容。例如,如果我想在 Windows 32 上的程序集中模拟 DllMain,我会这样做:
__declspec(naked) void DllCall_Stub(HMODULE hModule)
{
_asm
{
push 0;
push 1;
push [esp + 0Ch]
mov eax, 0x12345678;
call eax;
ret;
}
} __declspec(naked) void DllCallStubEnd(void){}
但是,在 Windows 64 上,它显然通过寄存器传递参数。
在 64 位进程上执行此操作的等价物是什么?