จะแสดงรายการสัญลักษณ์ที่นำเข้าใน ELF ที่ปฏิบัติการได้อย่างไร


19

สำหรับการปฏิบัติการ PE ฉันสามารถแสดงรายการสัญลักษณ์ที่อิมพอร์ตโดยใช้

dumpbin /imports FILE.EXE

หรือการใช้ยูทิลิตี้ขึ้นอยู่กับซึ่งเป็นโปรแกรม GUI

`nm ELF-binary 'เพียงแค่คืนค่า" ไม่มีสัญลักษณ์ "


คำตอบ:


16

ลอง objdump -T 'ELF-file'


ฉันคิดว่า objdump -T ทำงานกับไลบรารีที่ใช้ร่วมกันเป็นหลัก ...
jim mcnamara

ดี ... ไม่ได้จริงๆถ้าฉันทำ: objdump -t / bin / ls มันจะกลับมา: "ตารางสัญลักษณ์: ไม่มีสัญลักษณ์" ด้วย -T (ซึ่งแสดงรายการตารางสัญลักษณ์แบบไดนามิก) จะแสดงผลข้อมูลจำนวนมากเช่น: "00000000 DF UND 00000000 GLIBC_2.0 strchr "
Mr Shunz

5

เอาต์พุตจาก objdump นั้นมากเกินไปสำหรับจุดประสงค์นี้และต้องการการแยกวิเคราะห์ที่ดีเพื่อค้นหาการนำเข้าจริง

ฉันชอบreadelfเพื่อจุดประสงค์นี้:

readelf -d dynamic-buffer-test

Dynamic section at offset 0x630a8 contains 23 entries:
 Tag                Type                 Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]

อย่างที่คุณเห็นห้องสมุดที่ต้องการถูกทำเครื่องหมายด้วย "NEEDED"


มันขึ้นอยู่กับโหมดที่คุณเรียกใช้ ลองobjdump -p /path/to/binary | grep NEEDEDดู
sherrellbc

ดูเหมือนว่าจะเป็นรายการไลบรารีเท่านั้นไม่ใช่สัญลักษณ์
plugwash

5

readelfฉันชอบ

readelf -s <file>


นั่นแสดงรายการไลบรารีที่จำเป็นเท่านั้น คำถามเกี่ยวกับสัญลักษณ์ที่จะนำเข้าจากห้องสมุดดังกล่าว
Alcaro

1

พร้อมกับคำตอบอื่น ๆ ที่โพสต์ที่นี่ฉันอยากจะเสนออีก เนื้อหาที่พิมพ์ออกมาเป็นฟังก์ชั่นของรูปแบบไฟล์โดยที่เอลฟ์ให้ยืมอย่างดีในการแก้ไขปัญหานี้

objdump -p /path/to/binary | grep NEEDED

grep แยกเนื้อหาของDynamic Sectionมันออกมา แต่รูปแบบของobjdump -pเอาต์พุตที่ทำให้นี่เป็นทางออกที่ง่าย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.