首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

WriteProcessMemory写入动态BUFFER数据有关问题

2012-01-18 
WriteProcessMemory写入动态BUFFER数据问题if (!::WriteProcessMemory(hp,callbase,fun,0x3000,NULL))//fu

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复制到一个缓冲区中一次写入。
你的问题描述的太含糊,只能说这么多了。
[解决办法]

探讨
我的意思是说,要写入内存一段动态值,如(a+b),a和b是在外面赋值,a和b给什么值,写入内存的就是什么值,当然不要用
int x = fun(2, 3);
::WriteProcessMemory(hp,callbase,&x,sizeof(int),NULL);
之类的,我写进去的不止a+b这么简单,里面有汇编代码。
呵呵。。。
求解答啊~~~~

热点排行