有人请告诉我这段代码有什么问题 我只是从kernel32.dll调用Sleep函数 怎么了? 我正在使用Visual Studio 2008。 任何帮助将不胜感激。 非常感谢你。
__asm
{
mov eax, 77e2ef66h
push 9999
call eax
}
答案 0 :(得分:6)
你从哪里得到那个神奇的数字77e2ef66h
?通常,如果您从内联汇编程序调用Win32 API函数,则执行以下操作:
__asm
{
push 9999
call Sleep
}
Win32中的函数没有固定的地址(无论“DLL Export Viewer”可能显示什么)。函数在加载时由 name 或 ordinal 链接(由Windows PE加载程序),并且不在固定地址。实际上,函数的实际地址可以在Windows版本,同一版本的Windows中的子版本,机器之间,甚至可能从一个程序运行到下一个程序之间发生变化。
(免责声明:自从我这么做以来已经很长时间了,所以上面代码示例的细节无疑是错误的,但我知道你绝对不需要使用魔术数字。)