Einzelnen Beitrag anzeigen

Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#349

AW: HxD - schneller Hexeditor, Disk-Editor und RAM-Editor

  Alt 3. Mär 2016, 21:37
Zitat:
Zitat:
Nicht lesbare Bereiche ausblenden
Wäre schön, wenn man das im Menü Ansicht nochmal hätte. (vielleicht als 2 Menüpunkte, Lesbares einblenden und Nichtlesbares Ausblenden, am Besten aus den selektierten bereich, wenn z.B. mehr als 100 Byte markiert sind)
Eine Funktion um anzugeben was gefaltet und entfaltet werden sollte wäre denkbar, so wie man in Quelltexteditoren auch alle Kommentare/Funktionen usw. auffalten/zufalten kann.

Zitat:
Und ausblenden vielleicht als "ganz weg" und nicht nur zusammengeklappt.
Möchte ich eher nicht. Die Lücken haben einen Sinn und sind vorhanden, da eine Kontinuität zu suggerieren ist mißverständlich. Das ist der Grund warum ich mir überhaupt die Arbeit mit dem Datenfalten gemacht habe: man hat Übersicht und gleichzeitig Korrekheit.

Zitat:
Suchen nur in angezeigten/aufgeklappten Bereichen.
Er sucht sowieso nur in lesbaren Bereichen, oder wenn man möchte/es angibt, in der Auswahl (und schließt dabei selbstverständlich nicht lesbare Bereiche automatisch aus).

Es gibt auch "Sparse-Files", bei denen Teile der Datei nicht "real" auf der Platte existieren. (ReadFile liest da immer nur Nullen aus)
Prinzipiell vergleichbar mit den "nichtlesbaren" RAM-Bereichen.
Sparsedateien sind nur eine Art Speicher zu sparen, aber es *soll* als Speicher mit 0-Werten gedeutet werden. RAM-Bereiche die nicht lesbar sind haben keine Daten zugewiesen, weder 0 noch sonst einen Wert.
Man könnte natürlich Sektionen/faltbare Bereiche einführen, wofür das nützlich sein soll frage ich mich allerdings.

Beim Ändern von Bytes in PAGE_EXECUTE* ein FlushInstructionCache ausführen?
Gute Idee.

Strg+Runter/Hoch > springe zum nächsten/vorherrigen Bereich
Strg+Shift+Runter/Hoch > markiere bis zum Ende/Anfang des Bereichs (bzw. wenn schon am Anfang/Ende, dann den ganzen nächsten Bereich)
Gute Idee. Sollte zusammen mit einer Navigationsleiste implementiert werden, wie beim Diskeditor.

Du bist also jetzt fertig und hast die nächsten Jahrzehnte nix mehr zu tun?
Wieso? Was du bis hierher vorgeschlagen hast reicht doch schon dafür :p.

Hätte ich mir schon immer was zur Prozessanzeige (RAM) gewünscht.
Inwiefern?

Was zuerst gut wäre: Ein DUMP, also 'nen Snapshot des RAM speichern und später wieder laden, samt der Metainformationen.
Sicher sinnvoll. Aber da das Aufwand bedeutet, warum brauchst du das? HxD ist ja kein Debugger.

HDD-Abbilder werden auch mit Metainfos gespeichert? (Größe der Sektoren, Name der Platte/Partition usw.)
Anwendungsszenario? Gibt Massen an Features die warten, auch eine Menge eigener Ideen die mal weg von elementaren Features gehen (was sehr lange dauert und nicht so sichtbar ist) und sich mehr auf Analyse und Datenstruktur konzentrieren. Daher muss ich Prioritäten setzen und es braucht schon gute Gründe für solche Features. Das kann schnell im Aufwand wachsen wenn man alle Arten von Medien betrachtet und vorallem kompatibel bleiben will und das nicht nur auflisten will.

Dann vielleicht noch ein bissl Farbe und Trennung in die Anzeige?
  • Trennlinie zwischen die Bereiche
  • nichtlesbare Bereiche gräulich hinterlegt
Stimmt, gerade Bereiche im gefalteten Zustand kann man nicht als lesbar/unlesbar einordnen. Eine Farbe oder eine andere Art der Hervorhebung oder Tooltip mit Eigenschaften wäre eine Idee. Oder vielleicht direkt Text in der gefalteten Darstellung, also mehr also nur der Adressbereich.
Trennlinie? Mal sehen, wird ja schon durch diese +/-Buttons getrennt.

Aber voll geil wären Metainfos zu den einzelnen RAM-Bereichen (da helfe ich auch gern)
Bzw. die Sektoren bei Festplatten/Dateien "Sektor 2 (Byte 00020000 bis 0002FFFF)"
Du meinst die entsprechenden Dateisysten-Cluster/Sektoren einer Datei? Ist geplant. Passt in die ganzen Struktur- und Analyseziele die ich habe.

  • angefangen mit VirtualQueryEx
    • MEM_COMMIT MEM_RESERVE MEM_FREE MEM_PRIVATE MEM_MAPPED (kann man schön farblich machen ... abgesehn von FREE besser nur als Streifen am Rand)
    • EXE und DLL sind oft als MEM_MAPPED+PAGE_EXECUTE_WRITECOPY in den RAM gemappt
So eine Art Übersichtskarte? Gibt es verschiedene Visualisierungsmöglichkeiten, Treemaps ganz allgemein, aber nicht nur Farben, sondern auch Strukturanzeige (bin kein Freund von tausend Farben, dann sieht man nichts mehr, aber das kann ja dann jeder einstellen, gibt ja Optionen .
Ist ganz allgemein eine Idee um Struktur in jeder Art von Datenstrom darzustellen. Speicherbereiche im RAM-Editor wären eine Anwendungsmöglichkeit. Passt also grob in meine Ziele, am Anfang wird es aber wohl eher eine Liste sein.


Kann man hier irgendwie rausfinden, ob Bytes einer geladenen EXE/DLL "manipuliert" sind?
Soweit ich weiß nur ob aber nicht wo genau, außer man verwendet Datenhaltepunkte (die man in begrenzter Anzahl verwenden kann), oder verwendet Guard-Pages oder ähnliches. Also höchstens Page-Granularität. Aber das zu machen könnte den Prozess verwirren, da viele Guard-Pages und Co. für Prüfungen von Stacküberläufen verwenden.
Wenn es einfach machbar ist, dann vielleicht, aber momentan hat das keine größere Priorität. Das geht schon in Richtung Debugger mit all dem verbundenen Aufwand.

ModulName (EXE, DLL, Named-MMF)
Ja, wäre bei so einem Prozess-Info-Feature mit dabei.

wenn man ganz hart drauf ist, kann man auch die PE-Header auslesen und bei EXE/DLL die Sektionen der Module/Dateien mit anzeigen
Meinst du CODE,.text,.reloc und solche Sections?

[*] TImageFileHeader TImageOptionalHeader TImageSectionHeader TImageExportDirectory TImageDataDirectory uvm. (Windows.pas)[*] Start-/Einsprungadresse, #CODE-Section, #DATA-Section, Resource-Section, Sprung-Tabellen der importierten DLL-Funktionen, ...[/LIST][*] und die ganz harten, würden dann noch die Debuginfos suchen und Code-Adressen der einzelnen Funktionen/Bezehle suchen[/LIST]
PE-Datei-Strukturanalyse war sogar einer der wesentlichen Gründe HxD anzufangen.

man wird bestimmt auch irgendwie die Stacks aller Trhreads suchen/markieren können
Bestimmt, aber das werde ich eher nicht machen. Absolute Debuggerfunktionalität.

[*] Speicher manipulieren (erweitert)
  • VirtualProtectEx, VirtualAllocEx, VirtualFreeEx
  • PAGE_EXECUTE PAGE_EXECUTE_READ PAGE_EXECUTE_READWRITE PAGE_EXECUTE_WRITECOPY PAGE_GUARD PAGE_NOCACHE
[/LIST]
Auch eine Idee, hat aber eine Menge Einflüsse auf das Programm. Mal schauen.

Wenn man diese Metainfos hat, dann könnte man das "Nicht lesbare Bereiche ausblenden" bestimmt nützlich noch erweitern.
  • zeige nur Module (EXE/DLL) an
  • zeige nur veränderte Module (EXE/DLL) an
  • zeige nur "RAM" an (ohne Modul-Abbilder und MMFs)
Ja, eine Funktion um nur die entsprechenden Bereich einzublenden wäre denkbar, so ähnlich wie oben mit dem Falten erwähnt.


War dein Post unter dem Motto: "Mal schnell alle Wünche posten bevor ich nicht mehr darf?" haha

Einige davon werde ich umsetzen, aber ich habe auch viele eigene Ziele und Wünsche, und die werde ich im Gegensatz zu früher priorisieren, sonst macht es keinen Spass und artet in unbezahlten Stress aus. Aber ich schätze dein Interesse und werde sehen was sich mit meinem überschneidet und dann Entsprechendes implementieren.

Es sind einige schöne Sachen geplant, auch bestimmt unerwartete für übliche Hexeditoren
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd
  Mit Zitat antworten Zitat