VC把内联汇编注入写入游戏的时候 变量是怎么办的啊
VC把内联汇编注入写入游戏的时候 变量是怎么处理的啊。
把内联汇编注入写入别的进程(WriteProcessMemory)的时候 变量是怎么处理的啊。
比如 mov eax,0x11 这个0x11每次都会变。。每次都要重新获取 不能使用常量。。 一开始我是把他定义成变量 。。int a = 0x11
但是生成的代码就变成了 mov eax,[变量a的地址]
a的地址是我们自己程序的地址。。写入到游戏后 肯定用这个地址就访问不到了。。。
我也尝试在目标进程分配一块内存VirtualAllocEx 把我们的变量数据写进去 但是返回是依然是地址依然是变量。。依旧没有解决 **********************
当然可以在进程内存固定的空白内存处写入 。。。但总感觉这不是最终办法。。是个临时应变的。。。
有同学解答一下嘛
------解决方案--------------------
《Windows PE权威指南》
------解决方案--------------------
即然都是内嵌汇编, 那完全可以先把变量的值, 转换成常量, 再注入到其它程序中.
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权威指南》
------解决方案--------------------
即然都是内嵌汇编, 那完全可以先把变量的值, 转换成常量, 再注入到其它程序中.