VC把内联汇编注入写入游戏的时候 变量是怎么办的啊

VC把内联汇编注入写入游戏的时候 变量是怎么处理的啊。

DWORD a = 0x11;
int b = 0x11;
__declspec(naked) void Code()
{
        __asm
        {
                mov eax,a  //这样写不行啊
                push b  //这样写不行啊
        }
}

把内联汇编注入写入别的进程(WriteProcessMemory)的时候  变量是怎么处理的啊。
比如 mov eax,0x11    这个0x11每次都会变。。每次都要重新获取  不能使用常量。。 一开始我是把他定义成变量 。。int a = 0x11   

但是生成的代码就变成了 mov eax,[变量a的地址]
a的地址是我们自己程序的地址。。写入到游戏后  肯定用这个地址就访问不到了。。。   

我也尝试在目标进程分配一块内存VirtualAllocEx  把我们的变量数据写进去 但是返回是依然是地址依然是变量。。依旧没有解决 **********************
当然可以在进程内存固定的空白内存处写入  。。。但总感觉这不是最终办法。。是个临时应变的。。。

有同学解答一下嘛

------解决方案--------------------
《Windows PE权威指南》
------解决方案--------------------
即然都是内嵌汇编, 那完全可以先把变量的值, 转换成常量, 再注入到其它程序中.