在windows驱动代码中用汇编调用user32.dll中的MessageBoxA函数出错

_asm
{
push eax;
push ecx;

push 0;
push 0;
push 0;
push 0;
mov ecx, MessageBoxAAddr;
lea eax, mark;
push eax;
jmp ecx;

mark:
mov eax, eax;
mov ebx, ebx;
mov ecx, ecx;

pop ecx;
pop eax;

}
其中MessageBoxAAddr是我ring3应用程序传进来的MessageBoxA的地址
图片说明
通过uf看到,这确实是MessageBoxA的地址。
可是当执行到第二句push ebp时,就会报错:
图片说明

随后系统提示试图执行不可执行的内存:
图片说明

这是什么原因呢?有没有人知道啊?非常感谢!
另外说一下,其实我是要向受保护的进程中注入DLL,我想用KeAttackStackProcess附加到目标进程之后,调用LoadLibrary加载自己想要加载的DLL,不知道这样可不可行,有没有什么比较简单的方法。。。
本人是新手,不要鄙视我。。。
再次感谢!

通过uf看到,这确实是MessageBoxA的地址。
可是当执行到第二句push ebp时,就会报错:
图片说明

随后系统提示试图执行不可执行的内存:
图片说明