尝试编写进程内存并找不到用户定义的文字运算符

时间:2017-05-20 01:47:36

标签: c++ memory

你好我是新编码,我试图用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);
    }


}

1 个答案:

答案 0 :(得分:0)

您的问题是您要传递一个包含字母的整数作为指针:

WriteProcessMemory(hProc, (LPVOID)25D09ED227C, &newValue, (DWORD)sizeof(newValue), NULL);

25D09ED227C是整数文字,但是您包含了十六进制数字中的字符。

只需在前面加一个0x即可告诉编译器它是十六进制的。

使用0x25D09ED227C将解决您的问题

您还可以从第四个参数中删除(DWORD)