Problema OpenProcess()

di il
5 risposte

Problema OpenProcess()

Buongiorno a tutti,
avrei una domanda su come risolvere un piccolo problema che mi si è presentato durante il tentativo di apertura di un processo.
Sostanzialmente il problema è in queste poche righe di codice:
HWND d2w = FindWindowA(0, "Diablo II");
	GetWindowThreadProcessId(d2w, &pId);
	HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pId);
	cout << GetLastError() << endl;
La funzione "GetLastError()" ritorna 5 = ERROR_ACCESS_DENIED.
Detto questo, ho provato a modificare il token di accesso ma nulla. Lanciato l'exe (contenente questo codice) come admin ma nulla. Modificato il registro in "RunAsInvoker" ma nulla.
Cercando su internet ho notato che molte altre persone hanno avuto lo stesso problema.
"Diablo II" è installato sul desktop e non in Programmi (x86), il sistema operativo è Windows 10.
Se qualcuno avesse qualche altra idea da consigliarmi gliene sarei grato!
Vi ringrazio in anticipo

5 Risposte

  • Re: Problema OpenProcess()

    Prima di tutto assicurati che tutti gli Handle ottenuti siano validi (diverso da NULL) e poi non utilizzare PROCESS_ALL_ACCESS ma permessi limitati a quello che ti serve.

    Per avere privilegi completi devi avere il SeDebugPrivilege
  • Re: Problema OpenProcess()

    Ti ringrazio per la risposta.
    Ho consultato la documentazione Microsoft riguardante la modifica privilegi dei token ma la funzione:
    
    BOOL SetPrivilege(
        HANDLE hToken,
        LPCTSTR Privilege,
        BOOL bEnablePrivilege
        );
    
    Non viene riconosciuta dall'IDE. Utilizzo Visual Studio 19.
  • Re: Problema OpenProcess()

    Ma che cosa devi fare con quel processo? Comunque

    https://support.microsoft.com/it-it/help/131065/how-to-obtain-a-handle-to-any-process-with-sedebugprivilege
  • Re: Problema OpenProcess()

    Praticamente Diablo II è un gioco a cui giocavo quando ero piccolo. Tempo fa ho incontrato un vecchio amico e abbiamo deciso di creare un server privato. OpenProcess() sostanzialmente è il primo passo per creare un programma di moderazione accedendo direttamente alle locazioni di memoria contenenti funzioni e variabili varie.
    Quindi una volta aperto il processo, conoscendo le locazioni che mi interessano, tramite la funzione "WriteProcessMemory()" andrei a modificare direttamente funzioni e variabili
  • Re: Problema OpenProcess()

    Quindi non hai bisogno di ogni permesso ma solo quello di accedere alla memoria virtuale.
Devi accedere o registrarti per scrivere nel forum
5 risposte