_asm
{
...
push
0x68
0x0
push ebx
call memset
add esp,
0xc
}
上面的代码,在 vs2018 中,debug 模式下没有问题。release 模式下出错:error C2420: “memcpy”: 第一操作数 中的非法符号
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
把memset方法的地址在汇编代码模块外获取,存到局部变量,然后再调用就没问题了:
DWORD dwMemSet = (DWORD)memset; _asm { ... push 0x68 push 0x0 push ebx mov eax,dword ptr dwMemSet call eax add esp, 0xc ... }