3
Minesweeper에서 타이머 값을 읽는 프로그램을 만들려고합니다. (OS는 Windows 7 64bit입니다.)프로세스의 기본 주소 얻기
치트 엔진을 사용하여 변수의 기본 주소를 찾았지만 Minesweeper를 실행할 때마다 변경됩니다.
기본 주소를 자동으로 찾으려면 어떻게해야합니까?
실행 가능한 기본 주소와 관련이 있습니까? 내가
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
DWORD baseAddress = 0xFF1DAA38;//always changing
DWORD offset1 = 0x18;
DWORD offset2 = 0x20;
DWORD pAddress1;
DWORD pAddress2;
float value = 0;
DWORD pid;
HWND hwnd;
hwnd = FindWindow(NULL,"Minesweeper");
if(!hwnd)//didn't find the window
{
cout <<"Window not found!\n";
cin.get();
}
else
{
GetWindowThreadProcessId(hwnd,&pid);
HANDLE phandle = OpenProcess(PROCESS_VM_READ,0,pid);//get permission to read
if(!phandle)//failed to get permission
{
cout <<"Could not get handle!\n";
cin.get();
}
else
{
ReadProcessMemory(phandle,(void*)(baseAddress),&pAddress1,sizeof(pAddress1),0);
ReadProcessMemory(phandle,(void*)(pAddress1 + offset1),&pAddress2,sizeof(pAddress2),0);
while(1)
{
ReadProcessMemory(phandle,(void*)(pAddress2 + offset2),&value,sizeof(value),0);
cout << value << "\n";
Sleep(1000);
}
}
}
}
: 여기
내 코드의 'GetModuleBase (pHandle에, (문자열) "Minesweeper.exe"); ' 그러나 나는이 오류가 : '오류 LNK2019 : "를 부호없는 긴 __cdecl GetModuleBase 기능에서 참조 16 @되지 않은 외부 기호 _GetModuleBaseNameA을 ...' ,및 '오류 LNK2019 : "unsigned long __cdecl GetModuleBase ..."함수에서 참조 된 해결되지 않은 외부 기호 _EnumProcessModules @ 16. 아마도 실례를 줄 수 있습니까? – yoni0505@ yoni0505 #pragma comment (lib, "psapi")를 추가하십시오. –
줄을 추가하고 프로그램을 컴파일합니다. 하지만 'Run-Time Check Failure # 3 -'hModules '변수가 초기화되지 않고 사용되었습니다 .' 다음에'Minesweeper Timer.exe의 0x770215de에서 처리되지 않은 예외가 발생했습니다. Microsoft C++ 예외 : std :: 메모리 위치 0x0034f8f8에서의 bad_alloc과'Minesweeper Timer.exe에서의 처리되지 않은 예외 0x770215de : 0x00000000 : 작업이 성공적으로 완료되었습니다 .' – yoni0505