0

嘗試查找特定偏移量對應的目標文件的代碼時,我有點困惑。偏移量爲0xB71B13E8使用objdump查找目標文件的偏移量

使用proc/<PID>/maps,我發現目標進程的libX11 lib的文本代碼已映射到0xB70CC000-0xB71B7000區域。

我現在想用objdump在X11 lib /usr/lib/libX11.so.6.2.0的目標文件上找到這個偏移量。

我應該看看0xB71B7000 - 0xB71B13E8 = 0x5C18還是0xB71B13E8 - 0xB70CC000 = 0xE53E8

我的另一個問題是: 0xB70CC000-0xB71B7000其中libX11 lib的文本代碼所在的區域是0xEB000字節。然而,當我objdump /usr/lib/libX11.so.6.2.0我可以看到偏移從0xA3517 to 0x135C0(即只有0x8FF57)開始。這有什麼理由嗎?

在此先感謝。

回答

0

/proc/X/maps中的rx節的第一個地址(也可以使用'pmap X')是庫的第一個虛擬地址,而objdump --disassemble顯示的偏移量是虛擬的地址假設開始爲0.您感興趣的地址是0xE53E8(假設您給出的數字來自於查看rx映射),因此請在objdump --disassemble輸出中查找該地址以查找正確的代碼位置。

請注意,您可以使用gdb直接查看正在運行的程序的內存。啓動gdb,然後運行'attach X',其中X是正在運行的程序的PID,然後'反彙編0xB71B13E8'。

相關問題