在C++中尝试读写内存

在C++中尝试读写内存,c++,visual-studio-2013,C++,Visual Studio 2013,我是一名程序员新手,我想编写一些代码来更改windows计算器中存储函数中的值。 我使用作弊引擎获取值存储的地址。我在网上找到了这段代码并复制了它,但它无法写入地址 #include <iostream> #include <windows.h> using namespace std; int main() { int newValue = 500; //value to be written HWND hWnd = FindWindow(0, "Calculat

我是一名程序员新手,我想编写一些代码来更改windows计算器中存储函数中的值。 我使用作弊引擎获取值存储的地址。我在网上找到了这段代码并复制了它,但它无法写入地址

#include <iostream>
#include <windows.h>

using namespace std;
int main()
{
int newValue = 500;  //value to be written

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 isSucessful = WriteProcessMemory(hProc, (LPVOID)0xD2FD6EAD0C, &newValue, (DWORD)sizeof(newValue), NULL);

        if (isSucessful > 0) {
            clog << "Process memory written" << endl;
        }
        else {
            cerr << "Cannot write process memory" << endl;
        }

        CloseHandle(hProc);
    }
}
return 0;
}
当我执行它时,我得到的回复无法写入进程内存
这是代码中的任何特殊缺陷吗?我写这封信的方式和我在这段视频中读到的完全一样:。

你可以使用GetLastError获得更多信息,了解可能出现的错误:你是一个编程新手,你试图从另一个进程中破解calc.exe。操作系统的存在不是为了阻止你这么做吗?想象一下安全风险!好悲伤!!!想知道为什么它不起作用?@StefanFalk。。。当然还有一个不错的调试器!我强烈建议您打印出Calc进程内存的起始地址。这将帮助您验证地址0xD2FD6EAD06是否在边界内。顺便说一下,不能保证每次调用可执行文件的内存和执行地址都相同;它们可能不同。更好的方法是使用偏移量。查找要修改的内存位置的相对偏移量。将此偏移量添加到Calc程序的进程内存中。这会比你现在的方法更接近你。