WriteProcessMemory写入动态BUFFER数据有关问题
WriteProcessMemory写入动态BUFFER数据问题
if (!::WriteProcessMemory(hp,callbase,fun,0x3000,NULL))// fun函数地址。
int a = 2;
int b = 3;
void fun(int a, int b)
{
a+b;
}
经过测试,写入内存中的不是 5 ,这是为什么呢?求怎么才能让写入 5 ?
------解决方案--------------------
这应该是指向函数指针的用法才对,传进去的是fun函数的地址啊
------解决方案--------------------
这样写是指令数据。不知道LZ意图是什么?
------解决方案--------------------
你使用了写入函数,也就是说,现在你的操作是把这个函数写到A程序中的指定位置了.
也就是说在A中可以使用这个函数a+b.(这里你写函数有问题,连个返回值都没,暂且不说函数的问题.)
------解决方案--------------------
把要写入的变量定义成结构体,WriteProcessMemory给结构体变量地址和sizeof。如果还要写指令,需要分别处理,因为指令和变量是分配在不同内存区的,可以分两次写也可以用memcpy复制到一个缓冲区中一次写入。
你的问题描述的太含糊,只能说这么多了。
------解决方案--------------------
if (!::WriteProcessMemory(hp,callbase,fun,0x3000,NULL))// fun函数地址。
int a = 2;
int b = 3;
void fun(int a, int b)
{
a+b;
}
经过测试,写入内存中的不是 5 ,这是为什么呢?求怎么才能让写入 5 ?
------解决方案--------------------
这应该是指向函数指针的用法才对,传进去的是fun函数的地址啊
------解决方案--------------------
这样写是指令数据。不知道LZ意图是什么?
------解决方案--------------------
你使用了写入函数,也就是说,现在你的操作是把这个函数写到A程序中的指定位置了.
也就是说在A中可以使用这个函数a+b.(这里你写函数有问题,连个返回值都没,暂且不说函数的问题.)
------解决方案--------------------
把要写入的变量定义成结构体,WriteProcessMemory给结构体变量地址和sizeof。如果还要写指令,需要分别处理,因为指令和变量是分配在不同内存区的,可以分两次写也可以用memcpy复制到一个缓冲区中一次写入。
你的问题描述的太含糊,只能说这么多了。
------解决方案--------------------