Accueil > Forum > > > > recherche d'une chaîne de caractères dans la mémoire
recherche d'une chaîne de caractères dans la mémoire
mardi 8 janvier 2008 à 13:38:30 |
recherche d'une chaîne de caractères dans la mémoire

snobysmart
|
Bonjour chers amis assembleurs, Je cherche assiduement une méthode pour faire une recherche de caractères ou de code dans la mémoire vive globale (Windows XP, 2000) comme le fait par exemple OllyDbg (fonction "search" dans le "memory map"), et obtenir l'adresse de cette chaîne. En désassemblant OllyDbg par IDA, je remarque que le débugger utillise la fonction CopyMemory mais je n'arrive pas à voir si c'est la bonne fonction utilisée pour faire le "search" en dumpant toute la mémoire. Si quelqu'un a une idée... Cordialement smarty
|
|
mardi 8 janvier 2008 à 20:41:25 |
Re : recherche d'une chaîne de caractères dans la mémoire

patatalo
|
salut, buff = GlobalAlloc(...) .1 ReadProcessMemory(addr;buff,cbbuf,...) [ Lien ]si readok une fonction de recherche que tu peux faire toi meme addr += cbbuf ->.1 si addrr < MAXADDR GlobalFree(buff,...) @++
|
|
mercredi 9 janvier 2008 à 09:50:20 |
Re : recherche d'une chaîne de caractères dans la mémoire

snobysmart
|
Many thanks Patatalo pour tes lumières,
Si j'ai bien compris:
1) je m'alloue une zone mémoire par GlobalAlloc (GMEM_FIXED,taille de la zone), en retour j'ai un pointeur sur cette zone pour mon dump
2) puis j'appelle ReadProcessMemory( __in hProcess, __in lpBaseAddress, __out lpBuffer, __in nSize, Null) avec hProcess= le handle du processus que je veux dumper et que j'ai obtenu par OpenProcess(..) en mode PROCESS_VM_READ, et lpBuffer = le pointeur que j'ai obtenu en 1) avec la taille nSize
3) je teste si EAX!=0 et si oui, j'appelle ma fonction de recherche de chaîne dans mon dump à partir de lpBuffer
4) sinon j'incrémente lpBaseAdress++ tant que lpBaseAdress<MAXADDR et je retourne en 2)
J'ai cependant deux questions: a) comment obtenir MAXADDR, l'adresse butoire du processus et lpBaseAdress, l'adresse où je peux commencer la lecture? b) est-ce que le handle que j'ai obtenu par OpenProcess(..) me permet de dumper toutes les zones mémoires des objets créés par le module (dans ce cas on suppose que j'ai demandé le handle d'un module.exe avec OpenProcess)? et si non comment procéder pour connaître l'adresse des zones mémoires des objets créés par le module pour faire ma recherche de chaîne dedans?
Merki !
smarty
|
|
samedi 12 janvier 2008 à 11:57:32 |
Re : recherche d'une chaîne de caractères dans la mémoire
|
dimanche 13 janvier 2008 à 16:55:21 |
Re : recherche d'une chaîne de caractères dans la mémoire

snobysmart
|
En effet, VirtualQueryEx ( hProcess, lpAddress, lpBuffer, dwLength) me permet d'obtenir les champs: BaseAddress; AllocationBase; AllocationProtect; RegionSize; State; Protect; lType; dans la structure pointée par lpBuffer, en lui passant le Handle hProcess du processus demandé et obtenu précédemment. Afin d'optimiser la recherche, on peut faire un mapping de la mémoire du processus en partant de BaseAddress = 0 et en incrémentant BaseAddress de RegionSize. Si AllocationBase != 0 ET que State = MEM_COMMIT (1000h), alors on est dans un segment du processus et on peut rechercher, voir modifier le code si on a le bon handle. Je suis en train d'écrire le module ... Ah oui, ne pas oublier de s'aligner sur 4 pour la structure MEMORY_BASIC_INFORMATION sous peine de défaut de la fonction (implémentation adresses paires). J'étais parti sur le principe d'attacher le processus et de faire un GetProcessHeaps dessus, ou de lire ses tas à l'aide de son PEB (7FFDF000h), mais le VirtualQueryEx est beaucoup plus simple... Merci encore à Patatalo  smarty
|
|
Cette discussion est classée dans : fonction, recherche, mémoire, caractères, chaîne
Répondre à ce message
Sujets en rapport avec ce message
Chaîne de caractères [ par ghuysmans99 ]
Bonjour à tous.Je voudrais savoir comment extraire UN SEUL caractère d'une chaine.Comment fait-on ?Pourriez-vous m'aider ?Merci !!
charger n octets en mémoire [ par faresas ]
Bonjour;je veux savoir comment lire n octets depuis un flash disque puis les charger en mémoire en utilisant les intérruptions bios en mode réel (16 b
Allouement de la mémoire et protection [ par bilaloch ]
Bonjour à tous,J'aimerais connaître s'il y a un moyen de savoir si telle adresse de la mémoire vive est protegée, si telle adresse est vide et égaleme
Vesa en mode Protégé [ par epineurien ]
Voila , ca fait un moment que je souhaite quitter le mode réel , pour passer en mode protégé (faire tenir mon environnement 3d RayTracing dans moins d
clavier [ par aboulkhir ]
salutla fonction IN al,60 permet de recuperer le scan code de la touche presse est ce qu il n y a pas une autre qui permet de recuperer le code ascii
saisie et affichage de caractères [ par SHEPHERD1988 ]
salut je viens tout juste de commencer la programmation assembleur depuis une semaine et je veux que mon programme m'affiche un caractère que j'entre
Arguments d une fonction dans une DLL [ par MOUSSAOUIAAZIZ ]
Salut;J'aimerais savoir si il est possible de trouver la liste d'arguments variables d'une fonction dans une bibliothèque de liens dynamiques (DL
besoin d'aide svp [ par sniple ]
bonjour a tous, je travaille mnt sur un projet,j'ai fait l'etude théorique et j'ai des difuculté a propos du programmation. mon projet porte sur la co
Livres en rapport
|
Derniers Blogs
COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : ASSEMBLEURRE : ASSEMBLEUR par solleil
Cliquez pour lire la suite par solleil RE : ASSEMBLEURRE : ASSEMBLEUR par ghuysmans99
Cliquez pour lire la suite par ghuysmans99 RE : ASSEMBLEURRE : ASSEMBLEUR par ghuysmans99
Cliquez pour lire la suite par ghuysmans99
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|