我正在尝试在不同的进程中读取内存,但每次运行脚本时,它都会崩溃。 [Windows 7 32位]
这是我的代码:
#include <windows.h>
#include <iostream>
using namespace std;
unsigned int canJump;
int main()
{
//DWORD oldProtect;
//VirtualProtect((LPVOID)0x04565020, sizeof(unsigned int), PAGE_READONLY, &oldProtect);
while(1)
{
canJump = *(unsigned int*)0x04565020;
if(!paused)
{
if(GetAsyncKeyState(VK_SPACE) && canJump == 0)
cout << "here" << endl;
}
if(GetAsyncKeyState(VK_F9))
break;
}
return 0;
}
我查看了VirtualProtect(如您所见),但它没有做任何事情。 :(
答案 0 :(得分:0)
您的问题是您正在使用用于内部hack的代码,在外部hack中。
int main()
表示这是外部黑客,您正在瞄准外部项目
canJump = *(unsigned int*)0x04565020;
是您通常会在内部hack中看到的代码。该行取消引用地址以获取其值并将其存储在canJump中。您的程序在目标进程的外部,因此您不能从外部进程取消引用内存。您当前的代码正在取消引用本地内存。
要解决您的问题,必须将其转换为您注入的内部DLL或将所有内容重写为外部hack。如果要使其成为外部黑客,则必须使用ToolHelp32Snapshot(),OpenProcess(),ReadProcessMemory()和WriteProcessMemory()来实现目标。