你好我是新编码,我试图用C ++编写进程内存,以计算器为例。我似乎无法找到为什么这会在内存地址给我一个错误。
#include <iostream>
#include <windows.h>
//Findwindow();
//GetWindowThreadProcessId();
//OpenProcess();
//WriteProcessMemory();
//CloseHandle();
using namespace std;
int main() {
int newValue = 189;
HWND hWnd = FindWindow(0, "Calculator");
if (hWnd == 0) {
cerr << "Cannot find window." << endl;
}
else {
DWORD pId;
GetWindowThreadProcessId(hWnd, &pId);
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pId);
if (!hProc) {
cerr << "Cannot Open Process" << endl;
}
else {
int isSuccessful = WriteProcessMemory(hProc, (LPVOID)25D09ED227C, &newValue, (DWORD)sizeof(newValue), NULL);
}
}
答案 0 :(得分:0)
您的问题是您要传递一个包含字母的整数作为指针:
WriteProcessMemory(hProc, (LPVOID)25D09ED227C, &newValue, (DWORD)sizeof(newValue), NULL);
25D09ED227C是整数文字,但是您包含了十六进制数字中的字符。
只需在前面加一个0x即可告诉编译器它是十六进制的。
使用0x25D09ED227C将解决您的问题
您还可以从第四个参数中删除(DWORD)