begin process at 2008 07 19 16:42:54
1 212 905 membres
227 nouveaux aujourd'hui
14 165 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MODIFIER UN PROCESSUS EN MÉMOIRE


Information sur la source

Catégorie :API Classé sous : readprocessmemory, processus, mémoire, modifier, process Niveau : Initié Date de création : 12/04/2007 Date de mise à jour : 12/04/2007 19:19:24 Vu : 3 483

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

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

Source

  • #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;
  • }
#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;
}
12 avril 2007 19:19:24 :
Correction de l'orthographe.
  • signaler à un administrateur
    Commentaire de Ombitious_Developper le 13/04/2007 14:06:27

    Salut:

    c'est propre comme code, facile à le lire et le comprendre. (8/10)

    J'ai une petite question:

    Est ce qu'on choisit l'offset aléatoirement ou il y des contraintes?

  • signaler à un administrateur
    Commentaire de Ombitious_Developper le 13/04/2007 14:10:23

    Autres question:

    Pourquoi ajouter la bibliothèque ws32_32.lib, si je ne me trompe pas c'est la bibliothèque pour WinSocket. Pourquoi faire?

  • signaler à un administrateur
    Commentaire de lilxam le 13/04/2007 20:09:39

    Salut et merci pour ton commentaire et t'as note :).
    Pour t'as premiere question, ici j'ai pris un offset de départ arbitrairement puis je l'incrémente. Mais je ne sais pas encore comment faire pour trouver le point de départ du programme en question (Entry Point). Je mettrais à jour ce code si je trouve la solution.

    Pour t'as deuxième question, tu confond la lib ws2_32 avec wsock32 étant effectivement la lib permettant l'utilisation des sockets. Celle-ci permet l'utilisation des APIs windows.

  • signaler à un administrateur
    Commentaire de Ombitious_Developper le 13/04/2007 23:34:22

    Salut:

    Personnellement, (si je ne me trompe pas) je ne vois pas aucune fonction qui a besoin de cette lib.

  • signaler à un administrateur
    Commentaire de nickydaquick le 15/04/2007 19:34:27

    Salut
    wsock32  Winsock
    ws2_32   Winsock 2

  • signaler à un administrateur
    Commentaire de max12 le 18/04/2007 08:55:34 administrateur CS

    Sa peut être pratique pour cheater dans les jeux :P

  • signaler à un administrateur
    Commentaire de skonsoft le 30/04/2007 17:24:49

    salut y a t il quelqu'1 qui peut m'aider à realiser mon mini projet: Serveur FTP

  • signaler à un administrateur
    Commentaire de mat1597530406950 le 14/08/2007 15:12:14

    Alors pour cette source bravo, ca m'aide beaucoup ! sinon j'ai essayé avec un programme de modifié les 0 avec les 1 et avec un if, j'ais vus qu'il n'y arrive pas c'est ce que me renvoie la fonction et pour etre sur je re "read" ca ne change rien...
    Merci :)

  • signaler à un administrateur
    Commentaire de dj328i le 05/11/2007 22:57:39

    max12

    pour ca il y a deja un logiciel qui existe. "TSearch"

    Tu peut recherché et modifier tout valeur dans un processus en cours d'utilisation.

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS