begin process at 2010 03 21 17:49:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > CLASSE POUR LIRE/MODIFIER LA MEMOIRE DE N'IMPORTE QUEL PROCESSUS

CLASSE POUR LIRE/MODIFIER LA MEMOIRE DE N'IMPORTE QUEL PROCESSUS


 Information sur la source

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Système Classé sous :mémoire, writeprocessmemory, readprocessmemory, trainer, processus Niveau :Initié Date de création :14/12/2006 Date de mise à jour :02/01/2007 00:49:25 Vu / téléchargé :7 405 / 1 223

Auteur : violent_ken

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
C'est une classe qui permet de :
-lire dans la mémoire de n'importe quel processus des octets à partir d'un offset précisé
-écrire dans la mémoire du processus ce que l'on veut
-rechercher une string dans la mémoire du processus
-accessoirement lister les plages mémoires du processus


Il est donc ainsi tout à fait possible de rechercher une string, d'en déterminer l'offset dans la mémoire, puis de remplacer cette string par ce que vous voulez !


Dans cette source, un exemple qui montre l'utilisation de la classe : il s'agit de rechercher une string qui est affichée dans une textbox, de la remplacer pour une autre string que l'on a choisie, et de voir que le contenu de la textbox sera modifié au prochain rafraichissement...

A noter que vous pouvez essayer de modifier n'importe quoi dans vos processus en mémoire, mais certaines zones sont lockées.

Attention à ce que vous faites ! Vous avez en effet accès aux processus système de votre machine (si vous êtes admin il me semble)... donc gare aux crashs si vous tripotez n'importe quoi !
Je ne suis bien sur pas responsable des problèmes que vous pourriez rencontrer en éditant la mémoire de vos processus ^^

A noter également que dans le cas de recherche de string, plus la string que vous voulez rechercher en mémoire est longue, plus la recherche est rapide. Mais de toutes manières, la recherche est ultra rapide (ne cherche que dans les zones utilisées par le processus).



A quoi sert tout çà ?? Dans mon cas c'est une partie de mon éditeur hexa, qui est capable d'éditer les processus en mémoire.
Mais autrement, çà peut servir.....  pour faire un trainer par exemple... ^_-

Source

  • 'tout dans le zip
  • 'très commenté
'tout dans le zip

'très commenté

 Conclusion

Note : il faut COMPILER LE PROJET
J'oblige à le faire, mais ce n'est absolument pas nécessaire dans l'utilisation de la classe en elle même je vous rassure (voir remarque en commentaire pour comprendre).


Ceci est encore une classe qui fait partie de mon projet, mais çà me semble utile quand même de la poster séparement.

SVP, notez, et commentez !
Merci, @+

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

18 décembre 2006 19:35:41 :
Changer la function pour obtenir le pid courant...
18 décembre 2006 19:35:47 :
Changé la function pour obtenir le pid courant...
02 janvier 2007 00:49:25 :
Avait oublié de fermer des handles...

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) SIMPLE SHUTDOWN SCHEDULER : ARRÊTS PLANIFIÉS (LOCAL OU REMOT...
Source avec Zip Source .NET (Dotnet) COMMENT DÉMARRER UN PROCESSUS SUR PC DISTANT DE MANIÈRE CACH...
Source avec Zip Source avec une capture Source .NET (Dotnet) YET ANOTHER (REMOTE) PROCESS MONITOR
Source avec Zip Source avec une capture Source .NET (Dotnet) COMMENT DÉTECTER LES PROCESSUS CACHÉS (VIRUS, ROOTKITS...) +...
Source avec Zip Source avec une capture Source .NET (Dotnet) COMMENT CONTRÔLER TOTALEMENT LES PROCESSUS D'UN PC DISTANT (...

 Sources de la même categorie

Source avec Zip REMOTE SOUND AND VLC par sonataIII
Source avec Zip Source avec une capture INFO MÉMOIRE par 3aloula
Source avec Zip Source avec une capture CHANGER L'ICONE ET LE NOM D'UN LECTEUR DE CARTE par Sechaud
Source avec Zip Source avec une capture SYSTRAY + BALLOON - VARIANTE AVEC TEXTE DANS L'ICÔNE par jack
Source avec Zip Source avec une capture DATE-HEURE DE LANCEMENT D'UN PROGRAMME par jack

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) COMMENT DÉMARRER UN PROCESSUS SUR PC DISTANT DE MANIÈRE CACH... par violent_ken
Source avec Zip Source avec une capture Source .NET (Dotnet) YET ANOTHER (REMOTE) PROCESS MONITOR par violent_ken
Source avec Zip Source avec une capture Source .NET (Dotnet) STORMDATACENTER - DÉMO DE WEBBROWSER MULTIFONCTION VB9 NAVIG... par LightningStrike
Source avec Zip Source avec une capture Source .NET (Dotnet) COMMENT DÉTECTER LES PROCESSUS CACHÉS (VIRUS, ROOTKITS...) +... par violent_ken
Source avec Zip Source .NET (Dotnet) RÉCUPÉRER LES VARIABLES D'ENVIRONNEMENT DE N'IMPORTE QUEL PR... par violent_ken

Commentaires et avis

Commentaire de Drikce06 le 15/12/2006 09:22:23

Salut, j'ai pas testé car j'ai pas VB6, mais en tout cas ça fais plaisir de voir un code autant commenté, si tout les membres déposant une source en fesaient autant ce serai super!

Commentaire de Le cancre le 16/12/2006 01:26:02

c'est un sujet qui m'interesse..trop cool ^^
merci pour cette exemple,cette démo trop interessante...++

Commentaire de violent_ken le 16/12/2006 01:34:17

Drikce06 ==> J'essaie de commenter un maximum (parfois trop diront certains), mais au moins je suis certain de me retrouver dans mon code (pratique quand j'ai 15 mille lignes) et çà permet d'éclaircir la chose pour ceux qui veulent comprendre le fonctionnement.
Content que tu apprécies ^^


Le cancre ==> Nickel si çà peut t'être utile ;)

Merci pour vos commentaires, @+

Commentaire de daetips le 18/12/2006 19:08:30

Je me trompe ou GetMyPID() pourrait etre remplacée par l'api GetCurrentProcessId ?


Daetips

Commentaire de violent_ken le 18/12/2006 19:32:41

Tu as tout à fait raison, j'avais confondu cette API avec GetCurrentProcess qui renvoie toujours -1.

Je change de suite, merci !
@+

Commentaire de daetips le 18/12/2006 23:29:47

;)
PS: Bon code, et bien commenté (je garde ça sous la main :D )


Daetips

Commentaire de violent_ken le 18/12/2006 23:53:48

Merci bien ;)

@+

Commentaire de Constant93 le 23/12/2006 03:15:04

hop, dans les favoris !

Bravo.

Commentaire de khaleid le 03/03/2007 21:50:45

bonsoir

je vais essayer le code et je reviens .
j'en ai besoin pour automatiser la modification d'un offset dans stronghold crusader (une sorte de trainer perso )

merci

Commentaire de Julien237 le 05/05/2007 23:10:17

Pour le joueurs de Warcraft III :
Utilisez un pseudo de longueur suffisante, loggez-vous sur Battle.Net, recherchez votre pseudo dans la mémoire de Warcraft III, et remplacez le en utilisant les codes de couleurs du Warcraft World Editor (|cffrrggbbText|r) et hop, vous aurez des pseudos en couleurs !
Il est impossible d'avoir un tel pseudo à la base car le logiciel ne permet pas d'utiliser le "|" dans la boite de saisie du pseudo ^^...
(Pseudo sur Northrend si vous passez par là : ElectricGuitar :p)

Bon amusement !

Commentaire de Trim le 25/05/2007 16:59:39

Salut,

Un petit probleme pour ta source: elle ne marche pas si la nouvelle chaine que tu veux remplacer est plus longue que celle existante.
On ne voie que le début (égale à la longueur de la chaine original)

Voici la solution au problème:

Private Sub cmdSearch_Click()
'procède à la recherche
Dim cRes() As Long
Dim lngOffset As Long
Dim PID As Long
Dim remplace_text As String
    
    'obtient le processus de notre application
    PID = GetMyPID
    
    'lance la recherche dans la mémoire
    cClasse.SearchForStringMemory PID, txtEXIT.Text, False, cRes()
    
    If UBound(cRes()) = 0 Then
        'raté !
        MsgBox "Pas trouvé....", vbInformation, "Hum -____-"
        Exit Sub
    End If
    
    'récupère l'offset du résultat
    lngOffset = cRes(1)
    
    'Texte à changer
    remplace_text$ = "C'est modifié... ^^ et maintenant je voie tout."
    
    'écriture dans la mémoire à cet offset
    cClasse.WriteBytes PID, lngOffset, remplace_text$
    
    MsgBox "Un p'tit refresh de la textbox....", vbInformation, "C'est fait ^_^"
    
    'Actualise toute la chaine
    txtEXIT.Text = cClasse.ReadBytes(PID, lngOffset, Len(remplace_text$))
    
End Sub


Remplacer cette procédur par celle existant.

Merci pour cette super source.

Commentaire de violent_ken le 25/05/2007 18:31:46

Salut, en effet je n'ai pas précisé ce détail.

En fait, j'ai fait çà exprès : une certaine taille a été affectée en mémoire pour le processus pour stocker cette chaine. Par conséquent, il se peut que les bytes d'après cette chaine contiennent d'autres données que l'on ne veut pas corrompre.

Exemple : la chaine originale prend les bytes 5000, 5001, 5002, 5003, 5004 et 5005. Si on remplace par un chaine un peu plus longue, la nouvelle prendra également les bytes 5006, 5007...etc. et donc effacera des bytes qui n'étaient pas alloués à la chaine au départ.

Cela dit tu as raison, si l'on veut tout de même écrire une string plus longue, il faut procéder comme tu le dis.

@+

Commentaire de yocrita le 17/08/2007 08:49:55

Ce code permet-il de sauver un processus à un instant T ?
Voilà moi ce que je voudrais c'est sauver des parties lan d'alerte rouge 2 qui ne peuvent-être sauvées à ma connaissance.
En fait, j'imaginais synchroniser l'heure des machines grace à Internet et sauver mon processus RA2 à un instant T sur chaque machines et de les restaurer à un autre instant T. Je me dis que cela pourrait fonctionner puisque le jeu dispose d'un système d'attente de resynchronisation (30 sec environ). Qu'en pensez-vous ? rêve ou réalitée ?

Commentaire de Geth44 le 22/08/2007 16:41:49

Salut,

J'ai été vachement intéressé par ton code, mais il y a eu un hic : mon anti-virus a tout de suite détecté qu'une application essayait d'en modifier une autre (en l'occurence elle-même). Est-ce qu'il y a moyen de jouer avec les privilèges pour éviter cela ???

@+

Commentaire de daetips le 25/08/2007 23:03:32

A priori non, étant donné que ton antivirus doit fonctionner avec des hooks sur apis (via driver à mon avi), sur les fonctions NT..
Et donc même avec des privilèges, l'antivirus détectera quand même les appels aux api.
Daetips

Commentaire de Julien237 le 26/08/2007 19:07:37

Pire que ça, les antivirus modifient le noyau nt pour contrôler les accès mémoires, c'est d'ailleurs un grand sujet de discussion autour de Vista et la nouvelle technologie PathGard empêchant ces modifications du noyau.

Commentaire de vautour32 le 26/01/2008 16:59:52 9/10

Bonjour,
Tout d'abord, bravo. Cette source est vraiment super. Du travail de pro (tu en es un, je suppose).
Est-ce que quelqu'un saurait s'il y a moyen de lire/écrire dans n'importe quel espace mémoire (même non alloué à un processus)?

Commentaire de violent_ken le 26/01/2008 17:40:50

Bonjour,
cela est possible (exemple avec l'éditeur de RAM physique de Winhex), mais j'avoue que je ne sais pas comment...
En VB6 çà parait compliqué en tout cas.

Bon courage (si tu trouves, je suis intéressé)
@+

Commentaire de candyraton le 09/12/2008 13:00:45

Mortel

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

URGENT: Processus Excel et Application VBA [ par turnam ] Bonjour,Je développe une application sous Acces en VBA qui à pour but de créer un document Excel à partir de données se trouvant dans une base Access. READPROCESSMEMORY et WRITEPROCESSMEMORY !!! [ par TheBabyCool ] Quelqu'un pourait par un court exemple m'expliquer comment utiliser les apis READPROCESSMEMORY et WRITEPROCESSMEMORY.MERCI infinimentDorian Détecter une erreur [ par florantanplan ] Bonjour à tous,   Voilà je fais un p'tit dev en VB6. Celui-ci a pour but de lancer l'exécution d'un exécutable. Je n'ai pas accès aux sources de cet e Mémoire Framework.net [ par emap ] Hi, Je re-poste (je sais c'est pas bien...) Je fais de la synchro SQLServer<>AS400 via une classe sur un backgroung thread en récupérant 30000 Lier 2 Processus [ par Nowid50 ] Bonjour,Après avoir demandé comment faire une DLL COM, j'ai trouvé une autre solution qui me semblerait plus simple. Pour exepliquer le but de mon pro Utilisation de ReadProcessMemory [ par fourne ] Bonjour je souhaiterais pouvoir récupérer des valeurs de variables appartenant à un autre processus, exemple : récupérer les informations d'une fenêtr 2ième procesus Excel.exe, après mise à jour du lien, qui prende de plus en plus de mémoire [ par Witold ] Bonjour,J'ai un problème avec un fichier Excel qui est lié à un autre, Lorsque Excel me demande si je veux mettre à jour mon lien, un deuxième process [Recherche]Detection de processus ? [ par belette321 ] Je cherche un code pour la detection de processus existantet si le processus voullu existe le tuer, je veut preciser sa sera un anti-cheat ... merci d Comment faire une boucle ?!? [ par belette321 ] Comment puige faire une boucle, pour que mon programe face constamment la meme action J'ai essayerPublic sub Test()WhileSet xObj = GetObject("winmgmts Lires des addresses mémoire [ par BrokenArrow29 ] Bonjour je voudrais faire un programme qui lit des adresses mémoires. Mon projet est de lire certaines information en mémoire pendant que le jeu NHL f


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales