Domanda:
Debug binario ARM con IDA Pro e Qemu
Neon Flash
2013-08-18 09:55:31 UTC
view on stackexchange narkive permalink

Sto eseguendo il debug di un binario ARM utilizzando IDA Pro collegandomi a QEMU (debug gdb remoto).

Nella configurazione gdb, sto selezionando ARM_versatilepb come dispositivo.

Ora sono in grado di eseguire correttamente il debug del binario ARM. Tuttavia, non sono in grado di eseguire le chiamate di sistema come fork () , socket () e così via nel binario.

Penso che il motivo per questo è che sto usando una configurazione bare metal di QEMU. Quindi, come posso modificare questa configurazione per avere un sistema Linux completo in esecuzione su QEMU in modo da poter eseguire anche le chiamate di sistema?

C'è un altro nome di dispositivo, ARM_Linux in gdb_arch.cfg di IDA Pro che ha il parametro arm_root.img passato nella riga di comando.

Ho selezionato questo dispositivo ma anche in questo caso non sono riuscito a eseguire le chiamate di sistema.

La configurazione bare metal che sto utilizzando attualmente è descritta in dettaglio qui.

Per Qemu e ARM non sono a conoscenza di una cosa del genere, ma esiste un meccanismo del genere per fornire funzioni fittizie per Bochs-Debugging. Guarda dentro `plugins / bochs` per maggiori informazioni. Igor è probabilmente il più adatto a rispondere a questo. Forse nessuno ha mai chiesto questa funzione?
Una risposta:
devttys0
2013-08-19 16:31:34 UTC
view on stackexchange narkive permalink

Sembra che tu stia cercando di emulare un binario ARM ELF eseguendolo direttamente in qemu-system-arm, nel qual caso la ragione per cui le chiamate di sistema non funzionano è che non esiste un kernel Linux per gestire queste chiamate di sistema.

Quello che probabilmente stai cercando è qemu-arm, che esegue il binario ARM come un normale ELF, traducendo le chiamate di sistema ARM nel tuo kernel Intel sottostante. L'emulatore qemu-arm ha un server GDB integrato a cui IDA può connettersi.

In alternativa, puoi ottenere un sistema ARM Linux (come Debian, o forse c'è una versione raspi progettata per funzionare in Qemu ?) in esecuzione in qemu-system-arm, a quel punto puoi semplicemente copiare il tuo binario ELF nella VM Qemu ed eseguirlo lì. È quindi possibile collegare IDA al processo in esecuzione utilizzando il server GDB o lo stub di debug ARM Linux incluso con IDA.

ecco un'immagine qemu raspbian preconfezionata pronta per essere eseguita http://sourceforge.net/projects/rpiqemuwindows/


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