Domanda:
Il visualizzatore di prossimità IDA non trova percorsi ovvi?
ixje
2013-04-04 21:18:09 UTC
view on stackexchange narkive permalink

Utilizzando IDA 6.2 (e anche con IDA 6.4), sto provando il visualizzatore di prossimità per trovare il percorso tra 2 funzioni come descritto nel post di hexblog qui.

Usando Xrefs From / To (vecchia opzione) mostra il percorso chiaro: AllocateVolume -> VolumeSortCmp -> CompareVolumeComponents codice> come mostrato nello screenshot qui sotto

A parte aggiungi nome e nascondi figli opzioni non esistenti nel menu contestuale (come descritto nel blog) del browser di prossimità come si vede nello screenshot sotto il menu trova percorso lo fa elenca CompareVolumeComponents nella finestra di dialogo che si apre (quindi ha una certa conoscenza di ciò che è raggiungibile).

Tuttavia quando premo cerca mi aspettavo un bel grafico pulito (come di nuovo mostrato nel blog e aggiunto come riferimento sotto) che mostra solo i 3 nodi rilevanti, ma invece non sembra nulla per passare al layout del browser di prossimità poiché vedo ancora 30 nodi qualcosa.

Hexblog condensato Trova percorso esempio risultato hexblog condensed example result

Il mio risultato enter image description here

Il visualizzatore di prossimità non funziona correttamente o le mie aspettative sono deluse? O sto facendo qualcosa di sbagliato qui?

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

Penso che il problema sia un malinteso sul funzionamento del visualizzatore di prossimità. Non cancellerà tutti gli altri nodi nel grafico quando trova un percorso: trova semplicemente un percorso e aggiunge i nodi richiesti al grafico. Se desideri visualizzare solo i nodi tra AllocateVolume e CompareVolumeComponents, procedi come segue:

  1. Vai a AllocateVolume e premi "-".
  2. Fai clic con il pulsante destro del mouse sul nodo centrale AllocateVolume e seleziona "Comprimi elementi secondari", quindi "Comprimi anche elementi principali".
  3. Quindi, fai clic con il pulsante destro del mouse all'esterno di questo nodo nella vista di prossimità e seleziona "Aggiungi nome".
  4. Trova " CompareVolumeComponents "e aggiungilo.
  5. Dopo questo passaggio, fai clic con il pulsante destro del mouse sul nodo AllocateVolume, seleziona" Trova percorso "e seleziona l'unico altro nodo disponibile.

Se tutto va OK, si avrà un grafico con solo le funzioni richieste per visualizzare un percorso da AllocateVolume a CompareVolumeComponents. In caso contrario, potrebbe esserci qualche problema con il codice corrente del visualizzatore di prossimità (in tal caso, contattare l'assistenza di Hex-Rays per una correzione). Inoltre, potresti dare un'occhiata al plug-in "callgraph" nell'SDK: l'algoritmo per trovare i percorsi è praticamente lo stesso e potresti farti un'idea del motivo per cui non funziona.

Come nota a margine, una piccola spiegazione di come funziona il PV: l'algoritmo non considera un percorso che chiama solo / jmps come fa (Q) WinGraph32 (IIRC) ma considera anche un percorso quando ci sono riferimenti ai dati. Se una funzione A fa riferimento, in qualche modo, alla funzione B, il visualizzatore di prossimità mostrerà quel riferimento (con un bordo grigio invece che blu). A proposito, sono io che lo ha scritto.

grazie che la spiegazione ha funzionato (come ad esempio fare clic fuori dal nodo per aggiungere nome). Immagino di dover sperimentare un po 'di più perché onestamente pensavo di aver provato tutte le opzioni per nascondere senza successo. Su un nodo laterale sei a conoscenza di una finestra di dialogo di opzioni tale che possiamo configurare per trovare n-percorsi o tutti i percorsi? Come in questo momento trova solo 1, non tutto. Vedi [percorso singolo] (http://i.imgur.com/2JQVckX.png) e [Con aiuto manuale tutti i percorsi] (http://i.imgur.com/mvJ2HEe.png) Altrimenti proverò hex- supporto ai raggi.
@justsome Non ancora. Questo è qualcosa che è stato discusso in Hex-Rays ma, almeno nelle attuali versioni pubbliche, non è implementato.
Non riesco a trovare "Aggiungi nome" in IDA 6.8, ho provato a fare clic sul nodo, accanto al nodo, sulle icone, sul testo. Quando dovrebbe presentarsi questo?
#2
+3
0xC0000022L
2013-04-04 22:15:03 UTC
view on stackexchange narkive permalink

Quello che mostra il tuo screenshot non è il browser di prossimità. È la vecchia roba Wingraph32 già fornita con le versioni 5.x di IDA. Guarda l'immagine allegata per vedere come appare la cosa reale:

Proximity browser (collegamento diretto all'immagine a dimensione intera)

Puoi trovarla sotto Visualizza -> Apri sottoviste -> Browser di prossimità

Tieni presente che se utilizzi ancora 6.2, probabilmente ci sarà una versione Qt ( idaq.exe ) e la vecchia versione della GUI di Windows ( idag.exe ). Ti consigliamo di utilizzare il primo per il browser di prossimità.

So che questo è Wingraph32, lo dice anche il titolo della finestra nello screenshot. Lo screenshot si riferiva anche al testo sopra lo screenshot ("Xref to / from"). Stavo cercando di far notare che il vecchio Wingraph32 ha un "percorso chiaro" mentre il nuovo browser di prossimità (di cui non ho aggiunto uno screenshot) ha un percorso peggiore e più disordinato.
@justsome: ok, questo non era del tutto ovvio dalla tua domanda. Forse potresti aggiungere uno screenshot e indicare le parti che ti sembrano "disordinate". Il fatto è che puoi espandere e nodi, ingrandire e rimpicciolire attorno ai nodi. In questo caso, chiarisci la tua domanda e cercherò di rispondere meglio.
Ho aggiunto tutte le immagini e riformulato del testo per sperare che finalmente la mia domanda non sia ambigua :-) Ora l'ho anche provato con IDA 6.4 per escludere che la causa sia una vecchia versione.
@justsome: Vedo che uno degli ex dipendenti di Hex-Rays ha già risposto meglio alla tua domanda. Con gli screenshot era più ovvio quello che volevi.
Avevo intenzione di inserire screenshot come questo, ma la pressione del tempo mi ha costretto ad aggiungerne solo uno. Grazie ancora per lo sforzo! -edit- per qualche motivo non riesco a iniziare il mio commento con @0xC0000022L, viene rimosso automaticamente ..


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...