새로운 함수 호출을 생성 할 때마다 모든 정보를 계속 입력 할 필요가 없으므로 VisualC++에서 ReadProcessMemory 및 WriteProcessMemory 함수를 직접 작성하려고합니다. 이 프로젝트는 Windows Form입니다. 여기에 문제함수를 통해 값 전달하기
void Read(DWORD Add, int Value);
private: System::Void btnP1Money_Click_1(System::Object^ sender, System::EventArgs^e)
{
int BigMoney = 100000;
int GetMoneyValue;
DWORD MonAddr = 0x180A6C8;
Read(MonAddr, GetMoneyValue);
}
void Read(DWORD Add, int Value)
{
HWND window = FindWindow(0, _T("Process Window Name"));
DWORD pID = NULL;
DWORD base = dwGetModuleBaseAddress(pID, _T("Game.exe"));
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);
GetWindowThreadProcessId(window, &pID);
ReadProcessMemory(handle, (LPCVOID)(base+Add), &Value, 4, NULL);
}
게임의 값이 500, 아직 읽기()에서 반환 된 값은 내가 잘못 무엇인지 0이 아님을합니다. 나는 각 버튼 클릭과 체크 박스 틱에서 매번 Read() 함수의 모든 것을 정의해야하는 것을 원하지 않는다. 당신이 값을 반환 할 수 있습니다, 또는
void Read(DWORD Add, int& Value);
:
감사
당신은 참조로 전달해야
답장을 보내 주셔서 감사합니다. 그것이 내가 머리말에 한 것과 정확히 같습니다. 함수 선언을 void로 변경 Read (DWORD Add, int & Value); 함수 정의의 헤더를 void Read (DWORD Add, int & Value) {// 동일한 코드}로 바꾸면 이상한 결과가 나타납니다. 어떤 아이디어? 감사합니다 – Syperus
@Syperus 당신은 ReadProcessMemory 기능 코드를 게시 할 수 있습니까? WINBASE.H'BOOL WINAPI ReadProcessMemory 가입일 – VladL
( 는 LPCVOID lpBaseAddress, __out_bcount_part (n 크기 * lpNumberOfBytesRead) LPVOID lpBuffer, n 크기를 size_t __in , __out_opt의 *를 size_t lpNumberOfBytesRead __in hProcess, 처리 __in); ' – Syperus