Joe*_*bra 2 c inline-assembly visual-studio-2008 kernel32
有人请告诉我这个代码有什么问题我只是从kernel32.dll调用Sleep函数有什么问题?我正在使用Visual Studio 2008.任何帮助都将不胜感激.非常感谢你.
__asm
{
mov eax, 77e2ef66h
push 9999
call eax
}
Run Code Online (Sandbox Code Playgroud)
你从哪里得到那个神奇的数字77e2ef66h
?通常,如果您从内联汇编程序调用Win32 API函数,您可以执行以下操作:
__asm
{
push 9999
call Sleep
}
Run Code Online (Sandbox Code Playgroud)
Win32中的函数没有固定的地址(无论您的"DLL导出查看器"可能显示什么).函数在加载时按名称或序号链接(由Windows PE加载程序),并且不位于固定地址.实际上,函数的实际地址可以在Windows版本,同一版本的Windows中的子版本,机器之间,甚至可能从一个程序运行到下一个程序之间进行更改.
(免责声明:自从我这么做以来已经很长时间了,所以上面代码示例的细节无疑是错误的,但我知道你绝对不需要使用魔术数字.)