lilxam7
Messages postés12Date d'inscriptiondimanche 2 décembre 2007StatutMembreDernière intervention 3 février 2008 23 janv. 2008 à 23:10
BruNews -> D'accord mais ça reste plus pratique de rechercher un processus par son nom plutot que de devoir entrer le chemin entier du programme et le comparer au résultat obtenu par la fonction GetModuleFileName[Ex]().
Draluorg -> Tout ceci reviens à peu près au même, sauf que je garde en tête que je risque de vouloir modifier quelques parametres, récupérer plus de un octet à la fois par exemple. Ca reste donc dans un soucis pratique mais rien ne t'empeche de modifier le code comme bon te semble.
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 20 janv. 2008 à 19:38
Eh char Buffer[1];? pourquoi pas char Buff;?
Puis memset pour 1 octet? pourquoi pas buff=0;?
Plus important, tu ne fermes toujours pas le handle des process que tu ouvre!
Aussi offset += 0x01; ne peut il pas devenir offset++; ? ca change rien niveau perf mais plus facile a ecrire et par habitudes je dirais plus facile a comprendre...
++
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 20 janv. 2008 à 19:26
Bien entendu qu'un processus a un chemin complet.
GetModuleFileName[Ex]().
lilxam7
Messages postés12Date d'inscriptiondimanche 2 décembre 2007StatutMembreDernière intervention 3 février 2008 20 janv. 2008 à 19:01
Salut, j'ai comblé la fuite de mémoire.
Pour la remarque de BruNews, je ne vois pas trop ce que tu veux dire. "Ex: D:\dossier\bndumpme.exe", le nom d'un processus en mémoire n'est pas son chemin. Donc tu dois entrer quelque chose comme "exolorer.exe" par exemple.
Ensuite tu remarque que j'utilise strstr() au lieu de strcmp(), c'est dans un soucit pratique que je fais comme ça mais il est vrai que strcmp() reste mieux pour éviter toute confusion.
Draluorg, tu fais bien de remarquer mon erreur, en effet j'ai oublié de modifier le char[15] en char[1], c'est parce que je faisais des tests au debut en récupérant plusieurs octets à la fois. J'ai changé ça.
Bref escusez moi pour tous ces petits détails.
@+ et n'hesitez pas si vous avez des soucis :)
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 15 janv. 2008 à 17:24
tu cree un buffer de 15 octets et tu n'en utilise qu'un?
Puis tu remets chaques fois tout le buffer a zero!
Dans tous les cas, il serait preferable de recuperer la taille a lire et de la lire en une fois ou au moins par bloc...
++
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 13 janv. 2008 à 23:26
La même que source précédente, fuites mémoire à combler.
char process[] = "dumpme.exe"; //Le processus que vous voulez dumper
strstr(uProcess.szExeFile, process)) //On a trouvé le processus...
NIET, on a seulement trouvé une possibilité mais aucun garantie. Faut se placer sur le dernier '\\' et faire un strcmp() pour savoir si c'est le bon exe.
Ex: D:\dossier\bndumpme.exe
ben c'est pas celui voulu.
23 janv. 2008 à 23:10
Draluorg -> Tout ceci reviens à peu près au même, sauf que je garde en tête que je risque de vouloir modifier quelques parametres, récupérer plus de un octet à la fois par exemple. Ca reste donc dans un soucis pratique mais rien ne t'empeche de modifier le code comme bon te semble.
20 janv. 2008 à 19:38
Puis memset pour 1 octet? pourquoi pas buff=0;?
Plus important, tu ne fermes toujours pas le handle des process que tu ouvre!
Aussi offset += 0x01; ne peut il pas devenir offset++; ? ca change rien niveau perf mais plus facile a ecrire et par habitudes je dirais plus facile a comprendre...
++
20 janv. 2008 à 19:26
GetModuleFileName[Ex]().
20 janv. 2008 à 19:01
Pour la remarque de BruNews, je ne vois pas trop ce que tu veux dire. "Ex: D:\dossier\bndumpme.exe", le nom d'un processus en mémoire n'est pas son chemin. Donc tu dois entrer quelque chose comme "exolorer.exe" par exemple.
Ensuite tu remarque que j'utilise strstr() au lieu de strcmp(), c'est dans un soucit pratique que je fais comme ça mais il est vrai que strcmp() reste mieux pour éviter toute confusion.
Draluorg, tu fais bien de remarquer mon erreur, en effet j'ai oublié de modifier le char[15] en char[1], c'est parce que je faisais des tests au debut en récupérant plusieurs octets à la fois. J'ai changé ça.
Bref escusez moi pour tous ces petits détails.
@+ et n'hesitez pas si vous avez des soucis :)
15 janv. 2008 à 17:24
Eh j'ai un peu de mal a comprendre un truc:
char buffer[15];
while(ReadProcessMemory(hTemp, (LPVOID)offset, &buffer, 1, NULL))
memset(buffer, 0, sizeof(buffer));
tu cree un buffer de 15 octets et tu n'en utilise qu'un?
Puis tu remets chaques fois tout le buffer a zero!
Dans tous les cas, il serait preferable de recuperer la taille a lire et de la lire en une fois ou au moins par bloc...
++
13 janv. 2008 à 23:26
char process[] = "dumpme.exe"; //Le processus que vous voulez dumper
strstr(uProcess.szExeFile, process)) //On a trouvé le processus...
NIET, on a seulement trouvé une possibilité mais aucun garantie. Faut se placer sur le dernier '\\' et faire un strcmp() pour savoir si c'est le bon exe.
Ex: D:\dossier\bndumpme.exe
ben c'est pas celui voulu.