2017-06-08 28 views
2

WriteProcessMemoryを使用して、現在の弾薬アドレスの弾薬を変更するにはどうすればよいですか?私はそれを読む方法を知っています、私はそれを書く方法を知らないだけです。 SetAmmoです。私はすべてのライトをやっていると思った?定数のユーザー入力を受け入れ、writeprocessmemoryを使用する方法は?

コード:

#include <iostream> 
#include <math.h> 
#include <conio.h> 
#include <string.h> 
#include <stdlib.h> 
#include <Windows.h> 
using namespace std; 

DWORD pid; 
DWORD Ammo = 0x07823C5EC; 
int MyAmmo; 
int SetAmmo = 1; 
int main(){ 

    HWND hwnd = FindWindowA(0, ("Garry's Mod")); 

    GetWindowThreadProcessId(hwnd, &pid); 
    HANDLE pHandle = OpenProcess(PROCESS_VM_READ, FALSE, pid); 

    ReadProcessMemory(pHandle, (LPVOID)Ammo, &MyAmmo, sizeof(MyAmmo), 0); 
    cout<<"Current Ammo = "<<MyAmmo<<endl; 

    WriteProcessMemory(pHandle, (LPVOID)Ammo, &SetAmmo, sizeof(SetAmmo), 0); 
    system("Pause"); 
    return 0; 
} 
+0

あなたはハックをしようとしているように、なぜこれが見えません? – Mischa

答えて

0

あなたが読み取りアクセスを持つプロセスを開きます。

HANDLE pHandle = OpenProcess(PROCESS_VM_READ, FALSE, pid); 

試してみてください。

HANDLE pHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); 
+0

それをクリアするためにsooooをありがとう! –

+0

'PROCESS_ALL_ACCESS'は使用しないでください。実際に必要な最小限の権利のみを要求してください。 'ReadProcessMemory'を使うために必要なのは' PROCESS_VM_READ'です。 'WriteProcessMemory'を使うために必要なのは、' PROCESS_VM_WRITE'と 'PROCESS_VM_OPERATION'です。これはドキュメントに記載されています。したがって、代わりにこれを使用してください: 'HANDLE pHandle = OpenProcess(PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_VM_OPERATION、FALSE、pid);' –

+0

レミは絶対に正しいです! – mattideluxe

関連する問題