我正在使用Linux X86_64。查找PLT存根地址
我需要確定ELF文件中特定PLT條目的地址,給定條目所代表的動態函數的名稱。 我可以找出地址的文件偏移量,但我需要能夠確定地址。
如果我使用objdump -D -z elffile
反彙編ELF文件,我發現objdump爲PLT中的每個條目使用了符號名稱。 (哪裏objdump的這些地址和符號名稱之間的關係?)
例如:
0000000000000041a2b0 [email protected]:
如果我使用objdump -T elffile | grep fileno
我得到的是這樣的:
0000000000000 DF *UND* 00000000000000000 GLIBC_2.2.5 fileno
我需要什麼能夠從「C」做到的是在ELF文件中找到特定動態函數的PLT條目並獲取地址。
背景是我正在修補現有的ELF文件,並且需要將函數調用重定向到不同的動態函數。我已經使用從objdump反彙編收集的地址手動修補了一個ELF文件,並證明這將適用於我的特定應用程序,我只需要能夠從程序中完成。我希望不需要通過objdump反彙編程序代碼來找出它是如何獲取PLT條目符號和地址的。
對於i386的說明,未正確報告PLT條目大小。您可以將報告的plt條目大小乘以4,也可以使用16來表示條目大小。 – codemonkey