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?