Frage:
Liste der Funktionen und Adressen in WinDbg importieren
Ilya
2014-03-11 15:45:25 UTC
view on stackexchange narkive permalink

Wenn ich ein Kernelmodul ohne Symbole habe, öffne ich es normalerweise zuerst in IDA und gebe einigen der Unterprogramme (die mich interessieren) Namen.

Da ich meinen Kernel bevorzuge Beim Debuggen mit einfachem WinDbg (und nicht mit dem IDA-integrierten WinDbg) möchte ich, dass WinDbg die Namen erkennt, die IDA (und ich) diesen Adressen gegeben haben. Auf diese Weise könnte a) ich diese Funktionen nach Namen unterbrechen, Variablen nach Namen ändern und b) die Ausgabe und Ansichten von WinDbg besser lesen (in Stapelspuren usw.).

Leider hat IDA keine " PDB erstellen "-Funktion, und ich sehe nicht einmal eine Nicht-PDB-Methode zum Importieren von Adressen in WinDbg.

Ideen, jemand?

Es ist nicht ganz geeignet, um eine "Liste" von Symbolen hinzuzufügen, aber (nachdem ich den Verweis auf "IDebugSymbols3 :: AddSyntheticSymbol" in der unten genannten Erweiterung gesehen habe), habe ich ein wenig recherchiert und bin auf eine andere Erweiterung gestoßen ("Synexte"). Dies ermöglicht das Hinzufügen eines Symbols über das Befehlsfenster: [Blog] (https://sudonull.com/post/3341-Synthetic-symbols-and-modules-WinDbg-DbgEng) (Das Blog erwähnt auch, dass die Methode in `verfügbar gemacht wird pykd` auch)
Einer antworten:
blabb
2014-03-21 00:42:15 UTC
view on stackexchange narkive permalink

Diese Seite enthält ein IDC-Skript und eine Windbg-Erweiterung zum Speichern der Namen und eine WinDbg-Erweiterung zum Laden dieser Namen in WinDbg.

Das IDC-Skript scheint sehr, sehr langsam zu arbeiten, wenn die Binärdatei über einigen Kilobyte liegt. Kann jemand sie überprüfen und Kommentare zur Verbesserung der Geschwindigkeit abgeben oder eine alternative Methode zur Beschleunigung vorschlagen, die zum gleichen Ausgabeformat führt
In meinem Fall (Debuggen des Kerneltreibers) muss ich "tosubtract = FirstSeg ()" setzen
Ein Plugin, das die Namen ziemlich schnell abruft (mit dem Ziel, in ida free 5 zu arbeiten), wurde dem Thread mit get_nlist_size () hinzugefügt. Name, Funktionen, es ist mehrere Größenordnungen schneller als das Skript
Ich kann es nicht finden Übrigens habe ich den Code so verbessert, dass er Funktionsgrößen enthält. Call Stacks sind für mich sehr interessant und wurden nicht richtig angezeigt, wenn die Größe immer 4 war - hier ist die Änderung, ziemlich trivial: https://gist.github.com/ikonst/ebae548dac7934dc0bdf
http://www.woodmann.com/forum/showthread.php?15503-addsym-windbg-extension-(extension-to-load-names-from-ida-to-windbg)&p=96352&viewfull=1#post96352 the 5th Der Beitrag im Thread enthält das IDC-Ersatz-IDA-Plugin == Meine persönliche Meinung, Sie sollten zumindest die ursprüngliche Autorin in Ihrem Github gutschreiben ==========
:) Ich meinte es nur als einen Ort, an dem ich meine Änderungen veröffentlichen kann. Welchen Namen soll ich verwenden, 'blabb'?
Eine Rose mit einem anderen Namen würde so süß riechen .......... Sie erhalten also das Funktionsende und subtrahieren das Ende von Anfang an, um die Funktionsgröße zu erhalten, und übergeben die Größe an AddSyntheticSymbol, sodass der gesamte Bereich jetzt symbolisiert wird in windbg. Welchen Unterschied bietet dies bei der Anzeige des Aufrufstapels in windbg? oder wie beeinflusst das Übergeben einer Größe> 4 kb (mit Aufrufstapel meinen Sie kb oder nicht?)
Ich meinte das "Call Stack" -Fenster :) aber ja, auch "kb" und "! Thread" usw. WinDbg verwendet nicht das nächstgelegene Adressensymbol als Referenz, dh nicht myfunc + 0x123, sondern (zB) DriverEntry + 0x6123 (if DriverEntry ist das erste Symbol. Die Angabe der richtigen Größe löst das Problem.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...