- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
好的,我已经学习了一些关于如何使用 Cheat Engine (生命值、力量、经验、金币等)找到游戏值(value)的基本/静态指针的教程。为了对此进行测试,我在 Microsoft 的 Spider Solitaire 上进行了尝试,并且成功了。我得到了移动量的基本指针(“zetten”,正如您将在我的荷兰版蜘蛛纸牌中看到的那样),并使它引用另一个引用实际值的指针(假设它是这样称呼的)。
这基本上就是它的样子。所以现在我得到了 SpiderSolitaire.exe+B5F78 的基指针,它使用 2 个偏移量来获取值的实际地址。这是我用来在 C++ 中编辑内存值的代码:
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <strsafe.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
long address = 0x??????;
int newvalue = 200000;
DWORD newvaluesize = sizeof(newvalue);
HWND hWnd = FindWindow(0, L"Spider Solitaire");
HANDLE pHandle;
DWORD pid;
if(hWnd != 0) {
cout << "Found windowx.\n";
GetWindowThreadProcessId(hWnd, &pid);
pHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
}
else {
cout << "Can't find window\n";
}
if(pHandle !=0) {
WriteProcessMemory(pHandle, (LPVOID)address, &newvalue, newvaluesize, 0);
cout << "Written to memory successfully\n";
getchar();
}
else {
cout << "Couldn't get handle.\n";
getchar();
}
CloseHandle(pHandle);
return 0;
}
所以我拥有我需要的所有信息,只是我不知道如何在 C++ 程序中实现基指针和偏移量以及诸如此类的东西。我尝试使用
long address = SpiderSolitaire.exe+B5F78+e8+10
但这没有用(SpiderSoliteire.exe 无论如何都是一个字符串,所以我没想到它会起作用)。我试过在互联网上搜索教程或其他内容,但那些只展示了如何直接更改 1 个内存地址中的值,而不是如何通过 2 个指针引用它来更改值。我该怎么做呢?我如何在我的 C++ 程序中实现这个基指针和 2 个偏移量,以便我可以编辑内存值?
最佳答案
我尝试了同样的事情,他们说我需要为此编写自己的操作系统。有人说我需要在 ring-0 区域。我说你可以使用 asm(汇编器)
mov [address],register
命令
Gcc、VC++ 10、Digital Mars 内部有一些 asm{} block 定义。
关于c++ - 如何使用游戏的基址指针在 C++ 中编辑值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563373/
默认情况下,我的测试 wcf 应用程序的基地址是 http://localhost:8732/Design_Time_Addresses/evalservice 但是当我删除 Design_Time_
我找到了一个内存地址并使用 Cheat Engine 的指针扫描来获取引用指针。要在脚本中使用它,我需要一个基址,即 [game.exe+009274]。如何将其转换为在 AutoIt 脚本中使用的地
来自内核 3.4 code ,我无法确定 UART 基地址映射到哪里?据我所知,映射基地址我们应该使用 request_mem_region 和 io_remap 函数。但我可以在代码中找不到这个。U
我正在寻找内核如何进行 PCI/PCIe 枚举和 BAR 分配。 我以为内核会在启动时分配BAR的PCI基地址,但是当我尝试pci earlydump(在内核初始PCI子系统之前)查看BAR值时,我发
我是一名优秀的程序员,十分优秀!