Frage:
IDA Proximity Viewer findet keine offensichtlichen Pfade?
ixje
2013-04-04 21:18:09 UTC
view on stackexchange narkive permalink

Mit IDA 6.2 (und auch mit IDA 6.4) probiere ich den Proximity Viewer aus, um den Pfad zwischen zwei Funktionen zu finden, wie im Hexblog-Beitrag hier beschrieben.

Mit dem Xrefs From / To (alte Option) wird der eindeutige Pfad angezeigt: AllocateVolume -> VolumeSortCmp -> CompareVolumeComponents wie im folgenden Screenshot gezeigt

Abgesehen von Name hinzufügen und Kinder ausblenden -Optionen, die im Kontextmenü (wie im Blog beschrieben) des Proximity-Browsers nicht vorhanden sind (siehe Abbildung unten im Menü Pfad suchen ) Listen Sie CompareVolumeComponents in dem sich öffnenden Dialogfeld auf (damit Sie wissen, was erreichbar ist).

Wenn ich jedoch auf Suche drücke, erwarte ich ein schönes, sauberes Diagramm (wie im Blog erneut gezeigt und als Referenz unten hinzugefügt), das nur die 3 relevanten Knoten zeigt, aber stattdessen scheint nichts zu sein um zum Proximity-Browser-Layout zu wechseln, da ich noch 30 Knoten sehe.

Hexblog komprimiert Pfad suchen Beispielergebnis hexblog condensed example result

Mein Ergebnis enter image description here

Funktioniert der Proximity Viewer nicht oder sind meine Erwartungen nicht erfüllt? Oder mache ich hier etwas falsch?

Zwei antworten:
#1
+5
joxeankoret
2013-04-05 13:36:51 UTC
view on stackexchange narkive permalink

Ich denke, das Problem ist ein Missverständnis der Funktionsweise des Proximity Viewer. Beim Suchen eines Pfads werden nicht alle anderen Knoten im Diagramm gelöscht. Es wird lediglich ein Pfad gefunden und die erforderlichen Knoten zum Diagramm hinzugefügt. Wenn Sie nur die Knoten zwischen AllocateVolume und CompareVolumeComponents anzeigen möchten, gehen Sie wie folgt vor:

  1. Navigieren Sie zu AllocateVolume und drücken Sie '-'.
  2. Klicken Sie mit der rechten Maustaste auf den mittleren Knoten AllocateVolume und wählen Sie "Kinder reduzieren" und dann auch "Eltern reduzieren".
  3. Klicken Sie dann mit der rechten Maustaste außerhalb dieses Knotens in der Näherungsansicht und wählen Sie "Name hinzufügen".
  4. Suchen " CompareVolumeComponents "und fügen Sie es hinzu.
  5. Klicken Sie nach diesem Schritt mit der rechten Maustaste auf den Knoten AllocateVolume, wählen Sie" Pfad suchen "und wählen Sie den einzigen anderen verfügbaren Knoten aus.
  6. ol>

    Wenn alles Wenn OK angezeigt wird, wird nur ein Diagramm mit den Funktionen angezeigt, die zum Anzeigen eines Pfads von AllocateVolume zu CompareVolumeComponents erforderlich sind. Ist dies nicht der Fall, liegt möglicherweise ein Problem mit dem aktuellen Code des Proximity Viewer vor (in diesem Fall wenden Sie sich an den Support von Hex-Rays, um eine Lösung zu finden). Vielleicht möchten Sie auch einen Blick auf das Plugin "Callgraph" im SDK werfen: Der Algorithmus zum Suchen von Pfaden ist ziemlich identisch, und Sie erhalten möglicherweise eine Vorstellung davon, warum er nicht funktioniert.

    Als Randnotiz eine kleine Erklärung der Funktionsweise der PV: Der Algorithmus berücksichtigt nicht nur einen Pfad, der / jmps aufruft, wie (Q) WinGraph32 (IIRC), sondern auch einen Pfad, wenn Datenreferenzen vorhanden sind. Wenn eine Funktion A in irgendeiner Weise auf Funktion B verweist, zeigt der Proximity Viewer diese Referenz an (mit einem grauen Rand anstelle eines blauen Randes). Übrigens, ich bin der Typ, der es geschrieben hat.

danke, dass die Erklärung den Trick gemacht hat (wie z. B. Klicken außerhalb des Knotens für "Add Name"). Ich denke, ich muss ein bisschen mehr experimentieren, weil ich ehrlich dachte, ich hätte alle Versteckoptionen ohne Erfolg ausprobiert. Kennen Sie auf einem Seitenknoten einen Optionsdialog, mit dem wir konfigurieren können, um n-Pfade oder alle Pfade zu finden? Wie im Moment findet es nur 1, nicht alle. Siehe [einzelner Pfad] (http://i.imgur.com/2JQVckX.png) und [Mit manueller Hilfe alle Pfade] (http://i.imgur.com/mvJ2HEe.png) Andernfalls versuche ich hex- Strahlen unterstützen.
@justsome Noch nicht. Dies wurde in Hex-Rays diskutiert, ist aber zumindest in den aktuellen öffentlichen Versionen nicht implementiert.
In IDA 6.8 wurde "Name hinzufügen" nicht gefunden. Es wurde versucht, auf den Knoten neben dem Knoten, auf die Symbole und auf den Text zu klicken. Wann soll das auftauchen?
#2
+3
0xC0000022L
2013-04-04 22:15:03 UTC
view on stackexchange narkive permalink

Was Ihr Screenshot zeigt, ist nicht der Proximity-Browser. Es ist das alte Wingraph32-Zeug, das bereits mit den 5.x-Versionen von IDA geliefert wurde. Im beigefügten Bild sehen Sie, wie das Original aussieht:

Proximity browser (direkter Link zum Bild in voller Größe)

Sie finden es unter Ansicht -> Unteransichten öffnen -> Näherungsbrowser

Beachten Sie, dass es wahrscheinlich 6.2 geben wird, wenn Sie noch 6.2 verwenden eine Qt-Version ( idaq.exe ) und die alte Windows-GUI-Version ( idag.exe ). Ersteres soll für den Proximity-Browser funktionieren.

Ich weiß, dass dies der Wingraph32 ist, der Titel des Fensters im Screenshot sagt es auch. Dieser Screenshot bezog sich auch auf den Text über dem Screenshot ("Xref to / from"). Ich wollte darauf hinweisen, dass der alte Wingraph32 einen "freien Pfad" hat, während der neue Näherungsbrowser (von dem ich keinen Screenshot hinzugefügt habe) einen schlechteren und überladeneren Pfad hat.
@justsome: okay, das war aus Ihrer Frage nicht allzu offensichtlich. Vielleicht könnten Sie einen Screenshot hinzufügen und auf die Teile hinweisen, die Ihnen "überladen" erscheinen. Die Sache ist, dass Sie Knoten erweitern, Knoten vergrößern und verkleinern können. In diesem Fall klären Sie bitte Ihre Frage und ich werde versuchen, sie besser zu beantworten.
Ich habe alle Bilder hinzugefügt und einen Text umformuliert, um meine Frage hoffentlich endgültig zu machen :-) Ich habe es jetzt auch mit IDA 6.4 versucht, um auszuschließen, dass es sich um eine alte Version handelt.
@justsome: Ich sehe, dass einer der ehemaligen Hex-Rays-Mitarbeiter Ihre Frage bereits besser beantwortet hat. Mit den Screenshots wurde klarer, was Sie wollten.
Ich wollte solche Screenshots einfügen, aber der Zeitdruck zwang mich, nur einen hinzuzufügen. Trotzdem danke für die Mühe! -edit- Aus irgendeinem Grund kann ich meinen Kommentar nicht mit @0xC0000022L, beginnen. Er wird automatisch entfernt.


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...