我想寫一個小函數的示蹤器。我使用ptrace。如何找到共享庫符號的絕對地址?
當我看到一個CALL指令時,我想顯示相當於地址調用的函數名稱。
我的跟蹤器使用帶絕對地址的符號(符號在主二進制中定義)。 但我不知道如何獲得共享庫函數的虛擬內存中的絕對地址。例如,檢測對libc函數的調用。
我注意到共享庫中函數的地址是相對於文件的。
以下公式是否好?
Absolute address of symbol = address of the shared library in virtual memory +
relative address of the symbol.
如何從共享庫中獲取符號的絕對地址?
我認爲這個答案是操作系統特定的 – 2010-02-09 00:07:34
是的,對於使用ELF可執行二進制格式的操作系統。比如Linux和一些* BSD(我相信NetBSD)。 – mctylr 2010-02-26 21:56:12