C ++读取内存崩溃

时间:2015-07-06 23:21:38

标签: c++ memory

我正在尝试在不同的进程中读取内存,但每次运行脚本时,它都会崩溃。 [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(如您所见),但它没有做任何事情。 :(

1 个答案:

答案 0 :(得分:0)

您的问题是您正在使用用于内部hack的代码,在外部hack中。

int main()表示这是外部黑客,您正在瞄准外部项目

canJump = *(unsigned int*)0x04565020;是您通常会在内部hack中看到的代码。该行取消引用地址以获取其值并将其存储在canJump中。您的程序在目标进程的外部,因此您不能从外部进程取消引用内存。您当前的代码正在取消引用本地内存。

要解决您的问题,必须将其转换为您注入的内部DLL或将所有内容重写为外部hack。如果要使其成为外部黑客,则必须使用ToolHelp32Snapshot(),OpenProcess(),ReadProcessMemory()和WriteProcessMemory()来实现目标。