Outil pour visualiser la mémoire sous forme de bitmap?

congusbongus

Outil pour visualiser la mémoire sous forme de bitmap?


Je fais un peu de graphiques raster et de programmation vidéo. Ce qui serait super pratique serait un IDE , un plugin , un débogueur ou un outil capable de visualiser un morceau de mémoire sous forme d’image bitmap .

La plupart des débogueurs vous permettent d’introspecter les types composites, les tableaux, les chaînes, etc. En ce qui concerne les bitmaps, ils ne peuvent que vous montrer la mémoire brute, et comme je ne suis pas un pirate informatique de la matrice, il est très difficile de diagnostiquer les problèmes ici.

Ce serait formidable s’il y avait un outil qui, compte tenu de l’emplacement de la mémoire, du format de pixel (par exemple ARGB8888, YUV420) et des dimensions de l’image, montre une image de ce que cette mémoire représente. Ce que je dois faire actuellement, c’est écrire du code pour vider la mémoire dans un fichier et l’afficher dans une visionneuse externe, ce qui est très maladroit.

Exigences:

  • Windows (XP ou supérieur), OS X ou Linux
  • Doit fonctionner avec la mémoire du programme ou intégré à l’IDE; ne doit pas être un visualiseur de fichiers uniquement
  • Si l’IDE prend en charge les dernières normes C / C ++ (C99 et plus, C ++ 11 et plus), ne doit pas nécessiter de langage, de plateforme ou de types personnalisés
  • Choisissez parmi plusieurs formats de pixels
  • Tout prix est correct

Réponses


 Thomas Weller

Je réponds à cela, car vous n’avez pas obtenu d’autres réponses depuis plus d’un an maintenant. Je dirais que votre demande est assez précise.

Photos dans les décharges

Si vous disposez d’un fichier de vidage sur incident Windows (.dmp), vous pouvez l’ouvrir dans WinDbg , qui est le débogueur Microsoft gratuit pour les vidages en mode utilisateur et en mode noyau.

Il existe 4 commandes non documentées qui peuvent trouver des images en mémoire. Ces commandes font partie de l’extension ext qui est chargée par défaut:

 !findgifs !findjpegs !findjpgs !findpngs 

La sortie vous donnera l’adresse de début et de fin d’une image en mémoire. Vous pouvez l’utiliser pour écrire l’image sur le disque à l’aide de la commande .writemem .

Exemple de sortie d’une application Notepad ++ en cours d’exécution:

 0:000> | . 0 id: 472c attach name: C:Program Files (x86)Notepad++notepad++.exe 0:000> !findpngs Found: 0062387c 00636f76 Found: 06ed3cfa 07940c87 ... 0:000> .writemem c:tmpwritemem.png 0062387c 00636f76 Writing 136fb bytes............ 

Le résultat était ce fichier PNG:

Fichier PNG extrait de Notepad ++

Vous pouvez automatiser cela avec PyKD pour écrire tous les fichiers PNG de la mémoire sur le disque. Vous aurez d’abord besoin de la fonction dbgCommand() pour faire !findpngs , puis traiter la chaîne (fractionner les lignes et extraire l’adresse de début et de fin), puis utiliser à nouveau dbgCommand() pour effectuer le .writemem . Malheureusement, je ne l’ai pas installé pour le moment, je ne peux donc pas fournir un script complet.

Pourquoi je considère cela comme une réponse:

Windows (XP ou supérieur)

WinDbg est disponible pour Windows XP à 10. Peut-être avez-vous besoin de différentes versions de WinDbg , mais elles devraient toujours être disponibles.

Doit fonctionner avec la mémoire du programme ou intégré à l’IDE; ne doit pas être un visualiseur de fichiers uniquement

Cette solution fonctionne à partir de la mémoire (fichier de vidage sur incident) avec la solution de contournement sur le disque. Ce n’est peut-être pas à 100% ce que vous voulez, mais c’est peut-être plus facile à faire (si scripté) que depuis n’importe quel autre IDE.

Choisissez parmi plusieurs formats de pixels

En fait, je ne sais pas comment il détecte cela. À mon humble avis, il n’y a aucun moyen de définir explicitement un format de pixel.

Tout prix est correct

WinDbg et PyKD sont tous deux disponibles gratuitement.

Dump2Picture

En lisant votre question la première fois, j’ai pensé que vous cherchiez quelque chose comme ça. Je vais laisser cela comme référence pour les autres lecteurs, si c’est ce qu’ils veulent.

L’outil Dump2Picture peut convertir un vidage sur incident Windows (.dmp) en une image. L’auteur de ces livres l’ a utilisé comme élément de design en haut de la couverture du livre.

Cependant, vous y trouverez à peine des images réelles (telles que des JPG). Les raisons sont les suivantes:

  • les pixels ne seront pas alignés correctement, c’est-à-dire que la largeur et la hauteur de l’image générée ne correspondent pas à l’image en mémoire
  • la profondeur de couleur ne correspondra probablement pas

 

(sous, #de, #la, #pour, bitmap, forme, mémoire, Outil, visualiser

 

wiki

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *