在C++中,WriteProcessMemory不会更改VisualStudio之外的值
In C++, WriteProcessMemory will not change value outside of VisualStudio
它在Visual studio内部运行时会更改值,但如果我构建程序并运行可执行文件,它实际上不会更改值。这是代码:
using namespace std;
DWORD pid;
DWORD players = 0x00883D70;
int playerCount = 0;
int readValue = 0;
int firstTime = 0;
int main()
{
HWND hWnd = FindWindowA(0, ("Diablo II"));
GetWindowThreadProcessId(hWnd, &pid);
HANDLE pHandle = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
if (firstTime == 0)
{
cout << "This is a tool to set the player count in Diablo II: Lord of Destruction v1.14D" << endl;
cout << "This tool was made by xElite_V." << endl;
cout << "You can set a number between 0 and 255 for player difficulty:" << endl;
}
else {
cout << "You can set a number between 0 and 255 for player difficulty:" << endl;
}
firstTime = 1;
cin >> playerCount;
WriteProcessMemory(pHandle, (LPVOID)players, &playerCount, sizeof(playerCount), 0);
main();
}
所以我不明白为什么它在视觉工作室里不会做同样的事情。
您几乎肯定有权限问题,但由于您的代码没有正确检查错误,没有人能确切地告诉您。
实际上,你需要做很多事情才能让它发挥作用,这里有一些代码可以做到这一点:
https://stackoverflow.com/a/51346951/5743288
请注意,这是在调用ReadProcessMemory
,但其思想是相同的。
相关文章:
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- VisualStudio:使用 Suse Enterprise Server 12 SP5 时,不会下载远程库标头
- 什么会导致LNK2019 VisualStudio中的错误?
- 将通用Windows应用程序转换为VisualStudio 2019上的常规应用程序
- 在C++中,WriteProcessMemory不会更改VisualStudio之外的值
- VisualStudio 2015 - 只计算命中,不停止
- 如何在 VisualStudio 中对 main() 进行单元测试
- VisualStudio 2015 链接器查找 VS 2010 库
- VisualStudio 2017是否已经支持C++17代码合约?
- 如何在VisualStudio 2017中使用Qt库?
- 在VisualStudio中使用'Linux development with C++'时,如何将源保存在本地?
- OpenCV VisualStudio,C 代码错误尝试访问像素
- 如何使用cmake使相对文件路径在visualstudio中工作
- 如何从 VisualStudio 获取更多详细信息以跟踪警告的来源
- Cmake VisualStudio找不到库
- VisualStudio代码C 终端用于输出
- 使用MATLAB通过MEX运行OPENCV代码在VisualStudio上可以使用
- VisualStudio 2012 Where is gl.h?
- 包含:stdafx.h 和 <vector> VisualStudio 2012 C++ 之间的冲突(错误 C2953:已定义类模板)
- 删除visualstudio标题中的void指针