Quiero escribir el trazador de una pequeña función. Yo uso ptrace.¿Cómo encontrar la dirección absoluta del símbolo de las bibliotecas compartidas?
Cuando veo una instrucción CALL, quiero mostrar el nombre de la función equivalente a la llamada de dirección.
Mi trazador funciona con símbolos con dirección absoluta (el símbolo se define en el binario principal). Pero no sé cómo puedo obtener la dirección absoluta en la memoria virtual de la función de la biblioteca compartida. Detecta la llamada a las funciones de libc, por ejemplo.
Noto que la dirección de la función en la biblioteca compartida es relativa al archivo.
¿La siguiente ecuación es buena?
Absolute address of symbol = address of the shared library in virtual memory +
relative address of the symbol.
¿Cómo puedo obtener la dirección absoluta de un símbolo de una biblioteca compartida?
Creo que la respuesta a esto es OS específica –
Sí, al sistema operativo que utiliza el formato binario ejecutable ELF. Como Linux y algunos * BSD (NetBSD, creo). – mctylr