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?
Penso che la risposta a questo è specifico del sistema operativo –
Sì, al sistema operativo che utilizza il formato binario eseguibile ELF. Come Linux e alcuni * BSD (NetBSD credo). – mctylr