Modifier un processus en mémoire

Contenu du snippet

Ce code permet d'accéder à un processus actif et de modifier son contenu grace aux APIs ReadProcessMemory et WriteProcessMemory.
Have Fun
lilxam

Source / Exemple :


#include <iostream>
#include <windows.h>

#pragma comment(lib, "ws2_32.lib")
using namespace std;

int main()
{
    cout<<"\nReadProcessMemory\n\n\n";
    
    STARTUPINFO StartupInfo; //Structure STARTUPINFO
    memset(&StartupInfo, 0, sizeof(StartupInfo)); //On complète StartupInfo de 0
    
    PROCESS_INFORMATION ProcessInfo; //Structure PROCESS_INFORMATION
    memset(&ProcessInfo, 0, sizeof(ProcessInfo));
    
    char memread[100];
    char *cmdline;
    
    int offset = 0x400000; //On prend un offset de départ
    
    cmdline = GetCommandLine();    
    cout<<"Command Line : \n"<<cmdline<<"\n\n\n"; //Pour comprendre vous même l'utilitée de GetCommandLine()
    
    CreateProcess("programme.exe", cmdline, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &StartupInfo, &ProcessInfo); //On démarre le processus, notre programme
    cout<<"\n\nMemory Read : \n";
    while(ReadProcessMemory(ProcessInfo.hProcess, (LPVOID) offset, memread, 1, NULL)) //On lit son conten
    {
    
        printf("%d", memread[0]);
        offset ++; //On incrémente l'offset
        if(memread[0] == 0x0) //On remplace les 0 par des 1, aucune utilitée, c'est juste pour l'exemple
        {
                      WriteProcessMemory(ProcessInfo.hProcess, (LPVOID) offset, "0x1", 1, NULL);

        }
    }
    
    CloseHandle(ProcessInfo.hProcess);
    CloseHandle(ProcessInfo.hThread);
    
    system("pause");
    return 0;
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.