WriteProcessMemory() 返回 487?使用 CheatEngine 找到的价值
WriteProcessMemory() returns 487? Value found using CheatEngine
正如上面写的(^),我在C++和WriteProcessMemory()方面遇到了问题。我打开了Windows-Calc.exe,存储了一个数字并打开了CheatEngine。我找到了这个数字(更改了它 e.t.c.)并将其放入此程序中:(注意:我是德国人;"Rechner"等于"计算器")
#include <iostream>
#include <Windows.h>
using namespace std;
int main (){
int Value = 500;
HWND hWnd = FindWindow(0, L"Rechner");
if (!hWnd) {
cerr << "Can't find window" << endl;
return 0;
}
DWORD PID;
GetWindowThreadProcessId(hWnd, &PID);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
if (!hProcess) {
cerr << "Process handle error" << endl;
return 0;
}
int iSuccess = WriteProcessMemory(hProcess, (LPVOID)0x899FC6F60C , &Value, (DWORD)sizeof(Value), NULL);
int i = 0;
while (iSuccess == 0){
i = i+1;
cerr << "Failed " << i << " Error: " << GetLastError() << endl;
iSuccess = WriteProcessMemory(hProcess, (LPVOID)0x899FC6F60C , &Value, (DWORD)sizeof(Value), NULL); //Here all begins
}
clog << "Done" << endl;
CloseHandle(hProcess);
return 0;
}
找到窗口,找到进程(那里没有错误。但是,"//Here All begins"行返回 0,并将 GetLastError() 设置为 487。像以下所有内容一样。如果你知道,我做错了什么,请描述一下菜鸟友好,我昨天开始C++。
有关 GetLastError 代码含义的说明,请参阅此链接。
在本例中ERROR_INVALID_ADDRESS
,尝试访问无效地址。
这是因为您正在写入"随机"内存地址。你不能只取一个数字,并希望在这个地址的另一个进程中会有内存。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- C++:TypeDef使用元组
- 使用std::multimap迭代器创建std::list
- 从不同线程使用int64的不同字节安全吗
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么在全局范围内使用"extern int a"似乎不行?
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用Google Mock来模拟gettimeofday()
- 如何使用默认参数等选择模板专业化
- 为什么使用 "this" 指针调用派生成员函数?
- 使用新行和不使用新行读取文件
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 如何确定我已使用非编码文件到达 EOF?
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 使用CMake创建QML插件
- 使用strcpy将char数组的元素复制到另一个数组
- 在c++中使用nlohmann从类到json的转换
- 使用指针从C++中的数组中获取最大值
- WriteProcessMemory() 返回 487?使用 CheatEngine 找到的价值