Accueil > Forum > > > > ReadprocessMemory & WriteFile
ReadprocessMemory & WriteFile
mercredi 29 juin 2005 à 14:27:29 |
ReadprocessMemory & WriteFile

Deimos_
|
Salut à tous,
J'ai un petit problème avec les fonctions ReadProcessMemory() et WriteFile() !
En fait, je souhaiterais obtenir dans un fichier texte quelques opcodes
d'un exécutable, seulement j'obtiens des caractères ASCII, ce que je ne
veux pas !
Voilà un bout du code (le code en lui marche très bien, il faudrait
juste rajouter une fonction pour convertir l'ASCII en hexadécimal) :
BYTE buffer[1];
unsigned long *NbrBytesOut = (unsigned long *)malloc(sizeof(unsigned long *));
[...] // Récupère le handle du processusen l'ouvrant, création du fichier texte
ReadProcessMemory(hProc,(LPVOID)0x00835234,buffer,1,NULL);
if(!WriteFile(hFile,buffer,1,NbrBytesOut,NULL))
return MessageBox(NULL,"Erreur","WriteFile()",MB_OK);
Si quelqu'un pouvait me dire comment faire, ce serait vraiment sympa !
Merci et @+,
Deimos
|
|
mercredi 29 juin 2005 à 14:51:37 |
Re : ReadprocessMemory & WriteFile

vecchio56
|
unsigned long *NbrBytesOut = (unsigned long *)malloc(sizeof(unsigned long *));
Un peu bête d'allouer 4octets, tu crois pas? Tu connais l'opérateur & ?
Je ne comprends pas bien ton problème, les caractères ASCII peuvent s'exprimer en hexa...
|
|
mercredi 29 juin 2005 à 19:08:31 |
Re : ReadprocessMemory & WriteFile

Deimos_
|
Ya pas grand chose à comprendre, je demande justement comment exprimer les caractères ascii en hexadécimal dans mon fichie ...
|
|
mercredi 29 juin 2005 à 19:33:28 |
Re : ReadprocessMemory & WriteFile

vecchio56
|
DWORD NbrBytesOut;
BYTE b[2], buffer;
ReadProcessMemory(hProc,(LPVOID)0x00835234,&buffer,1,NULL);
b[0] = (buffer & 0xF0) >> 4;
if(b[0] <= 9) b[0] += '0';
else b[0] += 'A' - '0';
b[1] = buffer & 0xF;
if(b[1] <= 9) b[1] += '0';
else b[1] += 'A' - '0';
if(!WriteFile(hFile,b,2,&NbrBytesOut,NULL))
return MessageBox(NULL,"Erreur","WriteFile()",MB_OK);
|
|
mercredi 29 juin 2005 à 19:35:35 |
Re : ReadprocessMemory & WriteFile

vecchio56
|
Au fait, quand tu fais ca tu t'en sors bien:
unsigned long *NbrBytesOut = (unsigned long *)malloc(sizeof(unsigned long *));
car (sizeof unsigned long) est idem que (sizeof unsigned long*),mais logiquement, il faudrait écrire
unsigned long *NbrBytesOut = (unsigned long *)malloc(sizeof(unsigned long));
|
|
mercredi 29 juin 2005 à 19:50:09 |
Re : ReadprocessMemory & WriteFile

Deimos_
|
Il me met cette erreur là quand je tente de compiler ton code !
error C2664: 'ReadProcessMemory' : cannot convert parameter 3 from 'unsigned char' to 'void *'
Merci,
Deimos
|
|
mercredi 29 juin 2005 à 20:28:24 |
Re : ReadprocessMemory & WriteFile

vecchio56
|
Essaie ca:
ReadProcessMemory(hProc,(LPVOID)0x00835234,(LPVOID)&buffer,1,NULL);
|
|
mercredi 29 juin 2005 à 21:46:50 |
Re : ReadprocessMemory & WriteFile

Deimos_
|
Ok, merci beaucoup, ça marche !
Maintenant je voudrais donc récupérer par exemple 10bytes d'opcodes
hexadécimaux dans mon fichier, j'ai fait ça, mais ça me retourne des
trucs assez bizarres :
BYTE buffer_ascii,buffer_hexa[2];
unsigned long *NbrBytesOut = (unsigned long *)malloc(sizeof(unsigned long *));
DWORD addr = 0x00835234;
for(int x=0;x<10;x++) {
ReadProcessMemory(hProc,(LPVOID)addr,(LPVOID)&buffer_ascii,1,NULL);
buffer_hexa[0] = (buffer_ascii & 0xF0) >> 4;
if(buffer_hexa[0] <= 9) buffer_hexa[0] += '0';
else buffer_hexa[0] += 'A' - '0';
buffer_hexa[1] = buffer_ascii & 0xF;
if(buffer_hexa[1] <= 9) buffer_hexa[1] += '0';
else buffer_hexa[1] += 'A' - '0';
if(!WriteFile(hFile,buffer_hexa,1,NbrBytesOut,NULL))
return MessageBox(NULL,"Erreur Write","Voilà",MB_OK);
memset(buffer_hexa,0x00,1);
addr++;
}
J'ai vérifié si l'incrémentation de l'adresse marchait, et tout se
déroule bien à ce niveau là, j'ai fait afffiché les adresses dans une
MessageBox !
Merci
Deimos
|
|
mercredi 29 juin 2005 à 23:01:02 |
Re : ReadprocessMemory & WriteFile

Deimos_
|
Tu n'as pas une idée de ce qui pourrait faire buffer ce code ?
|
|
Cette discussion est classée dans : buffer, long, unsigned, writefile, readprocessmemory
Répondre à ce message
Sujets en rapport avec ce message
ptit probl with:WriteFile() et ReadFile() [ par oudkaramla ]
salut tout le monde,J'ai un petit problem avec WriteFile() et ReadFile().lors de la compilation j'ai les deux suivantes erreures:*********************
WriteFile() et le port série [ par oudkaramla ]
salut tout le mondej'ai un petit problème avec writefile()en fait je fais un programme avec paramètres bref je transmis le troisième paramètre à une f
pb avec les pointeurs [ par oudkaramla ]
salut, j'ai un problème dont je ne sais l'origine: en fait j'ai définis la fonction : int EnvoyerAvecReponse(char *g_buffer, unsigned long nBytesToWri
Buffer avec WriteFile ??????????? [ par nanalye ]
Bonjour tout le monde !J'ai regardé sur le forum ce qui était mis sur ce sujet mais je n'ai pas tout compris.Je dois envoyer des entiers par le biais
Chaine de caractere [ par xarier ]
voila je veut recuperé le numero de serie de c:\ et j'ai pas pu car a la place que la variable nex recuperele la valeur de serial il recupere un autre
problème Win32 Api [ par Toadstool ]
J'ai Visual C++ 6 Introductory Edition et j'ai programmé une classe censée représenter une fenetre mais quand dans le constructeur de la classe j'ecri
conversion constante en hexa ->unsigned long ou int ??? [ par andrealphus ]
4ndr&@lphu$rebonjour à tous et toutes,mon nouveau probleme est ridicule mais gênant...comment peut on convertir un nombre hexadécimal (du style l'adre
Probleme avec le registre [ par punx120 ]
Voila j'aimerais recuperer la valeur d'une chaine dans la base des registres, mais je n'y arrive pasvoici le code que j'utilise : #include #include vo
conversion en unsigned long [ par flatou ]
voila j'ai un type de donnée défini comme suit :typedef unsigned long long my_ulonglong;#endifc'est un type de donnée MySQL. Or j'ai vu que pour utili
Convertion d'un unsigned long Double en string [ par yves_r ]
Bonjour, J'ai besoin de convertir le résultat d'un calcul en string (char *). Si j'utilise sprintf( s, "%Ld", mon_double), j'obtient une chaine
Livres en rapport
|
Derniers Blogs
[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|