Domanda:
Trattare il codice indipendente come una funzione in IDA Pro
amccormack
2013-03-27 05:13:19 UTC
view on stackexchange narkive permalink

Quando si eseguono programmi di reverse engineering, trovo spesso funzioni come quella qui sotto. Questa funzione in particolare ha una serie di blocchi if / else annidati (riquadri rosa) che normalmente sarebbero abbastanza facili da seguire. Quando il codice viene eseguito nella casella blu, tuttavia, il codice diventa disordinato e può prendere uno dei due percorsi di codice indipendenti (viola o giallo). Se lo sviluppatore avesse utilizzato una funzione (o non avesse utilizzato una funzione inline) per i blocchi di codice viola o giallo, questo codice sarebbe stato molto più facile da decodificare. Come funzione, posso rinominare e commentare il blocco di codice e l'intero programma diventa più facile da leggere.

La mia tecnica abituale quando mi imbatto in questo tipo di funzione è applicare colori ai blocchi di codice come vedi nel grafico sotto. Esiste un modo per IDA di trattare una raccolta arbitraria di blocchi di codice come una funzione che non viene chiamata e / o esistono approcci migliori per gestire il codice inline e i blocchi di codice indipendenti?

Large function

Una risposta:
Igor Skochinsky
2013-03-27 06:25:07 UTC
view on stackexchange narkive permalink

Sembra che ciò di cui hai bisogno siano i gruppi di nodi. Sin dalla prima implementazione (5.0), la visualizzazione del grafico di IDA ha permesso di raggruppare diversi nodi in un "super-nodo" con un titolo personalizzato. Seleziona semplicemente i nodi che desideri raggruppare con Ctrl-clic e scegli "Raggruppa nodi" dal menu contestuale.

Per maggiori informazioni, vedi "Grafici gruppi di nodi" nella guida di IDA o online.

In una nota a parte, sarebbe utile mettere il tuo contributo sull'argomento / fuori tema qui http://meta.reverseengineering.stackexchange.com/q/7/189
Qual è probabilmente fuori tema, la mia domanda o la tua risposta?
@amccormack La domanda, dal momento che non coinvolge il reverse engineering in sé ma "come utilizzare uno strumento RE". Ma immagino che potremmo fare domande del genere sull'argomento. Aggiungi i tuoi pensieri [qui] (http://meta.reverseengineering.stackexchange.com/questions/52/).
@IgorSkochinsky: quanto mi piace (e come sai;)) per sottolineare che questo non dovrebbe essere troppo sbilanciato verso uno strumento particolare, penso che quelle domande dovrebbero essere in tema. Ho aggiunto il mio "commento" lì e spero che molti altri lo facciano. A proposito: sei già all'altezza di quella che spero sarà presto la tua posizione;) ... vedi anche: http://meta.reverseengineering.stackexchange.com/questions/7
@IgorSkochinsky: Non sono sicuro di per sé, ma sulla maggior parte dei siti SE è disapprovato pubblicare semplicemente un collegamento senza citare almeno una parte vitale.
@IgorSkochinsky Penso che la mia domanda non si applichi alla meta-discussione che avevi elencato. Ma capisco l'esitazione, quindi ho creato una nuova meta domanda [sta chiedendo informazioni sugli strumenti di reverse engineering sull'argomento] (http://meta.reverseengineering.stackexchange.com/questions/66/is-asking-about-reverse-engineering-tools -on-topic)
Ok, tutti i punti positivi, lasciatemi modificare un po '...


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