#include <windows.h>
int main()
{
LoadLibraryA("user32.dll"); //载入指定的动态链接库,并将它映射到当前进程使用的地址空间。一旦载入,即可访问库内保存的资源
HMODULE hmd=GetModuleHandleW(L"user32.dll"); //hmd就是user32.dll在这个实例的内存基址
ULONG addr=(ULONG)GetProcAddress(hmd,"MessageBoxA"); //hmd就是user32.dll在这个实例的内存基址
char* aa="这是内联汇编,哈哈!";
char* bb="提示"; //aa bb是2个字符串的首地址
//MessageBoxA(0,aa,bb,MB_OK|MB_ICONINFORMATION); //如果取消屏蔽你会看到一模一样的弹框
__asm
{
push 0x40 //最后一个参数
mov eax,bb //标题
push eax
mov eax,aa //内容
push eax
push 0 //句柄
mov eax,addr //messagebox的地址,我们不能直接call addr要给他放一个寄存器里面再call寄存器这样一个过程就完成了
call eax //call这个地址
}
system("pause");
return 0;
}