2010-02-08 17 views
5

Voglio scrivere il tracciante di una piccola funzione. Io uso ptrace.Come trovare l'indirizzo assoluto del simbolo delle librerie condivise?

Quando vedo un'istruzione CALL, voglio mostrare il nome della funzione equivalente alla chiamata di indirizzo.

Il mio tracciante funziona con simboli con indirizzo assoluto (il simbolo si definisce nel binario principale). Ma non so come posso ottenere l'indirizzo assoluto nella memoria virtuale della funzione della libreria condivisa. Rileva la chiamata alle funzioni di libc per esempio.

Ho notato che l'indirizzo della funzione nella libreria condivisa è relativo al file.

La seguente equazione è buona?

Absolute address of symbol = address of the shared library in virtual memory + 
          relative address of the symbol. 

Come posso ottenere l'indirizzo assoluto di un simbolo da una libreria condivisa?

+0

Penso che la risposta a questo è specifico del sistema operativo –

+0

Sì, al sistema operativo che utilizza il formato binario eseguibile ELF. Come Linux e alcuni * BSD (NetBSD credo). – mctylr

risposta

0

Non appena non hai descritto il sistema su cui lavori, this article chiarisce che almeno l'attività descritta può essere risolta per alcuni casi, non per tutti.
Se fossi nella tua situazione, cercherei i corrispondenti frammenti binari nella memoria e nella libreria. Quindi, non appena la memoria e la libreria sono allineate, il problema viene risolto. Quindi sì, l'equazione è buona non appena la libreria non può essere divisa e caricata come parti indipendenti.

2

Penso che si voglia esaminare il funzionamento del collegamento dinamico, in particolare la tabella offset globale. http://www.gentoo.org/proj/en/hardened/pic-guide.xml è una specie di inizio, ma far funzionare questo in modo affidabile attraverso i sistemi potrebbe essere complicato.

1

Il libro 'Linkers and Loaders' contiene le risposte a tali domande, nonché le spiegazioni sullo sfondo. Potrebbe valere la pena leggere. Ciò che si applica a ELF non si applica a Windows, ma il libro copre entrambi, e anche altri sistemi.

Problemi correlati