2017-06-08 1 views
2

Comment utiliser WriteProcessMemory pour changer les munitions de mon adresse de munition actuelle? Je sais comment le lire, je ne sais pas comment l'écrire. Est SetAmmo. Je pensais que je fais tout ce qui est Wright?Comment accepter une entrée utilisateur pour une constante et utiliser writeprocessmemory?

code:

#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

pourquoi cela ressemble vous essayez de faire un hack ? – Mischa

Répondre

0

vous ouvrez le processus avec accès en lecture:

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

essayer:

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

merci beaucoup pour le nettoyage! –

+0

N'utilisez pas 'PROCESS_ALL_ACCESS'. Ne demandez que les droits minimum dont vous avez réellement besoin. Pour utiliser 'ReadProcessMemory', tout ce dont vous avez besoin est le droit' PROCESS_VM_READ'. Pour utiliser 'WriteProcessMemory', tout ce dont vous avez besoin est les droits' PROCESS_VM_WRITE' et 'PROCESS_VM_OPERATION'. Ceci est expliqué dans la documentation. Donc utilisez ceci à la place: 'HANDLE pHandle = OpenProcess (PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_VM_OPERATION, FALSE, pid);' –

+0

Remy a absolument raison! – mattideluxe