【发布时间】:2013-03-25 21:15:26
【问题描述】:
问题在标题中 我使用写进程内存来改变内存中的一些值 我在 64 位窗口中尝试过,它的工作原理很完美 但问题出在 32 位窗口中,它没有写入我想要的值 读取进程内存在 64 位窗口和 32 位窗口中工作,但问题在于写入 请帮帮我(:
编辑: 代码是:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Loading..."<< endl;
int address = 0x3458CBC0;
int address2 = 0x3458CBC4;
int value = 20;
DWORD pid;
HWND hwnd = FindWindowA(NULL,"some window");
GetWindowThreadProcessId(hwnd,&pid);
HANDLE phandle;
cout << "Found Proccess ID:" << pid << endl;
phandle = OpenProcess(0x1F0FFF,0,pid);
cout << "Loaded Successfully."<< endl ;
ReadProcessMemory(phandle,(LPVOID)address,&value,4,0);
cout << "Readed Value:" << value << endl;
ReadProcessMemory(phandle,(LPVOID)address2,&value,4,0);
cout << "Readed Value:" << value << endl;
address = 0x3458CBC0;
address2 = 0x3458CBC4;
value = 20;
WriteProcessMemory(phandle,(LPVOID)address,&value,4,0);
WriteProcessMemory(phandle,(LPVOID)address2,&value,4,0);
cin.get();
return 0;
}
解决方案:
应用程序在内核中hook了写入内存的api 该钩子在 64 位 Windows 中不起作用,因此我可以写入内存
谢谢大家!
【问题讨论】:
-
32 位进程正在尝试写入 64 位进程?
-
您是在问
WriteProcessMemory是否有问题?或者如果你的代码有问题? -
我在询问是否有一种方法可以使写入进程内存在 32 位窗口中工作
-
如何在 64 位中工作但在 32 位中无法工作的代码示例。同样,如果您是从/向 32 位、64 位等写入数据,请提供更多信息。
-
@H2CO3 WinAPI 运行良好。你在说什么?