死神 发表于 2016-8-6 20:50

C++ 读写内存数据的问题


RT 学习到 WriteProcessMemory 和 ReadProcessMemory

写入的数据 是一个字节或者整数 还会 要是一大串数据 就蒙B了

比如 在内存中 有这么一串 16进制数据 23 48 8D 84 32
怎么取出来保存
然后再怎么写到另一个内存中去呢?


我从百度 找到了一下代码 但还是无法解决我的问题
byte* nc_dncbyte(DWORD pid, DWORD shoudizhi, DWORD Size)
{
byte *p = new byte;//取空白字节集以做存储缓冲区
ReadProcessMemory(INVALID_HANDLE_VALUE, (LPCVOID)shoudizhi, p, Size, 0);
return p;
}
byte *buff;
buff = nc_dncbyte(INVALID_HANDLE_VALUE, 内存地址, 存储的字节数);

我这样写
WriteProcessMemory(INVALID_HANDLE_VALUE, (LPVOID)内存地址, &buff,sizeof(字节数), NULL);
写进去的内存数据 就不对了


虚无空幻 发表于 2016-8-6 20:50

WriteProcessMemory
ReadProcessMemory
第一个值是进程句柄(注意得有一定权限,内存读写)
如果是读写自身的内存,可以用-1代替,他给的代码实际返回也是-1.还有一个函数getxxx实际返回也是-1
你第三个参数错了,直接buff,为什么要用引用.......

死神 发表于 2016-8-6 20:50

{:5_118:}不要问我 为啥发到逆向论坛....问了没跟帖的...

chycry5123 发表于 2016-8-6 21:06

chaohailab 发表于 2016-8-6 21:13

本帖最后由 chaohailab 于 2016-8-6 21:20 编辑

INVALID_HANDLE_VALUE 无效的句柄
[*]    hProcess = OpenProcess(PROCESS_VM_READ | PROCESS_VM_WRITE, false, processId);
[*]    //假设地址0X0047C9D4存在信息
[*]    ReadProcessMemory(hProcess, 0X0047C9D4, dataAddress, 4, 0);
可以看看函数说明https://msdn.microsoft.com/en-us/library/ms680553(VS.85).aspx

破天无名 发表于 2016-8-6 21:26

暴爆 发表于 2016-8-7 01:54

三体文明向地球发来的智子阻碍了人类文明的科学发展,所以调试软件的时候经常会出错,这就是智子干扰的结果,

泳嘉丨Raii 发表于 2016-8-7 10:38

PHP函数设置
PHP函数chown设置
PHP函数chmod设置
PHP函数fsockopen设置
PHP函数magic_quotes_gpc设置
PHP函数request_order设置
upload_max_filesize设置:

死神 发表于 2016-8-7 12:59

虚无空幻 发表于 2016-8-6 22:25
WriteProcessMemory
ReadProcessMemory
第一个值是进程句柄(注意得有一定权限,内存读写)


好吧 我第三个参数搞错了 谢谢
页: [1]
查看完整版本: C++ 读写内存数据的问题