Ich mache ein bisschen Rastergrafik und Videoprogrammierung. Superpraktisch wäre eine IDE , ein Plugin , ein Debugger oder ein Tool , das in der Lage ist , einen Teil des Speichers als Bitmap - Bild anzuzeigen .
Mit den meisten Debuggern können Sie zusammengesetzte Typen, Arrays, Strings usw. selbst untersuchen. Wenn es jedoch um Bitmaps geht, können sie Ihnen nur den rohen Speicher zeigen, und da ich kein Hacker aus der Matrix bin, ist es sehr schwierig, hier Probleme zu diagnostizieren.
Es wäre großartig, wenn es ein Tool gäbe, das bei gegebenem Speicherort, Pixelformat (z. B. ARGB8888, YUV420) und Bildabmessungen ein Bild davon zeigt, was dieser Speicher darstellt. Was ich derzeit tun muss, ist Code zu schreiben, um den Speicher in eine Datei auszugeben und ihn in einem externen Viewer anzuzeigen, was sehr klobig ist.
Anforderungen:
Ich beantworte das, weil Sie seit über einem Jahr keine anderen Antworten mehr bekommen haben. Ich würde sagen, Ihre Anfrage ist ziemlich spezifisch.
Wenn Sie eine Windows-Crash-Dump-Datei (.dmp) haben, können Sie sie in WinDbg öffnen , dem kostenlosen Microsoft-Debugger für Benutzermodus- und Kernelmodus-Dumps.
Es gibt 4 undokumentierte Befehle, die Bilder im Speicher finden können. Diese Befehle sind Teil der ext- Erweiterung, die standardmäßig geladen wird:
!findgifs
!findjpegs
!findjpgs
!findpngs
Die Ausgabe gibt Ihnen die Start- und Endadresse eines Bildes im Speicher. Sie können das verwenden, um das Image mit dem .writemem
Befehl auf die Festplatte zu schreiben.
Beispielausgabe einer laufenden Notepad++-Anwendung:
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:\tmp\writemem.png 0062387c 00636f76
Writing 136fb bytes............
Das Ergebnis war diese PNG-Datei:
Sie können dies mit PyKD automatisieren , um alle PNGs vom Speicher auf die Festplatte zu schreiben. Sie müssen zuerst die dbgCommand()
Funktion ausführen !findpngs
, dann die Zeichenfolge verarbeiten (die Zeilen aufteilen und die Start- und Endadresse extrahieren) und dann dbgCommand()
erneut verwenden, um die .writemem
. Leider habe ich es im Moment nicht installiert, daher kann ich kein vollständiges Skript bereitstellen.
Warum ich das als Antwort betrachte:
Jedes von Windows (XP oder höher)
WinDbg ist für Windows XP bis 10 verfügbar. Möglicherweise benötigen Sie verschiedene Versionen von WinDbg , aber sie sollten immer noch verfügbar sein.
Muss mit Programmspeicher funktionieren oder in IDE integriert sein; darf kein Nur-Datei-Viewer sein
Diese Lösung funktioniert aus dem Speicher (Crash-Dump-Datei) mit der Problemumgehung über die Festplatte. Dies ist vielleicht nicht zu 100 % das, was Sie wollen, aber vielleicht ist es immer noch einfacher (wenn es geskriptet ist) als von jeder anderen IDE.
Wählen Sie aus einer Reihe von Pixelformaten
Eigentlich bin ich mir nicht sicher, wie es das erkennt. IMHO gibt es keine Möglichkeit, ein Pixelformat explizit zu definieren.
Jeder Preis ist ok
WinDbg und PyKD sind beide kostenlos erhältlich.
Als ich Ihre Frage zum ersten Mal las, dachte ich, Sie würden nach so etwas suchen. Ich werde dies als Referenz für andere Leser hinterlassen, wenn sie das wollen.
Das Tool Dump2Picture kann einen Windows Crash Dump (.dmp) in ein Bild umwandeln. Der Autor dieser Bücher hat es als Gestaltungselement am oberen Rand des Buchcovers verwendet.
Echte Bilder (zB JPGs) findet man dort allerdings kaum. Die Gründe sind: