Domanda

Qualcuno conosce un disassemblatore per ARMV4i eseguibili e DLL?

Ho una DLL plug-in che sto scrivendo con un file molto raro data abort (<5% delle volte) che ho ristretto a una funzione specifica (tramite dumpbin e l'indirizzo emesso dal data abort).Tuttavia, è una funzione abbastanza ampia e vorrei restringerla un po'.So che sta succedendo in a memset() call, ma quella particolare funzione ne ha circa 35, quindi speravo che osservando il disassemblaggio potessi capire dove sia effettivamente il problema.

È stato utile?

Soluzione

IDA Pro eseguirà sicuramente lo smontaggio ARM.E loro (Datarescue) una volta mi hanno procurato una licenza verso le 23:00 ora locale, quindi mi piace consigliarli...

vedo da http://www.datarescue.com/idabase/ che c'è stato qualche riassetto dell'azienda, ma immagino che sia comunque un buon prodotto.

Ecco il link al nuovo editore: http://www.hex-rays.com/idapro/

Altri suggerimenti

Credo che IDA Pro farà quello che vuoi.È stato menzionato nel libro O'Reilly Security Warrior e l'ho visto consigliato nei forum degli sviluppatori di Windows Mobile.

Ammaliato è un disassemblatore e assemblatore per Windows Mobile / Pocket PC / Win CE (per CPU ARM).

Potresti anche dare un'occhiata a BDASM, un disassemblatore shareware: le versioni successive hanno plugin ARM.Il sito web sembra inattivo, ma se lo cerchi troverai la distribuzione shareware.

Il codice sorgente per il semplice disassemblatore ARM, DISARMARE, è disponibile anch'esso.

I binutils (strumenti del compilatore Linux) objdump possono essere utilizzati per produrre il disassemblaggio, "objdump -b binario -m arm7tdmi -D nome_file"

-Adamo

Un paio di anni fa ho trovato un disassemblatore ARM che ho utilizzato mentre svolgevo un lavoro integrato.Tuttavia, non ricordo il suo nome, anche se penso che facesse parte di un pacchetto più grande come un emulatore o qualcosa del genere.

Nel tuo caso, potresti chiedere al tuo compilatore di generare un elenco di assembly del codice compilato?Questo potrebbe aiutarti a darti un po' di spazio.

In caso contrario, potresti suddividere la tua funzione in una o più nuove funzioni, se tutto ciò che puoi ottenere è l'analisi dello stack.Quindi suddividi nuovamente la nuova funzione in una o più funzioni.Questo è il metodo collaudato del “divide et impera”.E se hai 35 chiamate a memset() in una funzione, potrebbe essere una buona idea anche dal punto di vista della progettazione!

Aggiornamento:Ho trovato il pacchetto che ho usato: ARMfetamina.Ha funzionato per il codice ARM9 che stavo sviluppando, ma sembra che non sia stato aggiornato da un po' di tempo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top