ผมคาดว่าจะเห็นจำนวนของสัญลักษณ์ในlibc.so.6ไฟล์รวมทั้งprintf ฉันใช้เครื่องมือnmเพื่อค้นหาพวกเขา แต่มันบอกว่าไม่มีสัญลักษณ์ใน libc.so.6
ผมคาดว่าจะเห็นจำนวนของสัญลักษณ์ในlibc.so.6ไฟล์รวมทั้งprintf ฉันใช้เครื่องมือnmเพื่อค้นหาพวกเขา แต่มันบอกว่าไม่มีสัญลักษณ์ใน libc.so.6
คำตอบ:
nm -D
มันอาจจะมีสัญลักษณ์ประจำของมันปล้นและสิ่งที่เหลืออยู่คือสัญลักษณ์แบบไดนามิกซึ่งคุณจะได้รับด้วย
@PSkocik ตอบคำถามนี้ ฉันต้องการเพิ่มรายละเอียดเพิ่มเติม มีส่วนของสัญลักษณ์สองประเภทใน ELF: .symtab
และ.dynsym
(ดูรายละเอียดข้อกำหนดหลักพื้นฐานของฐาน Linux มาตรฐานหรือที่รู้จักกันในชื่อ LSB_5.0.0 ) .symtab
สำหรับขั้นตอนการเชื่อมโยงของ lib ที่แชร์กัน เมื่อเชื่อมโยงเสร็จแล้ว.symtab
ส่วนไม่จำเป็นอีกต่อไป .dynsym
ส่วนนี้ประกอบด้วยสัญลักษณ์ที่สำคัญที่ควรจะได้รับการสืบค้นโดยลิงเกอร์แบบไดนามิกในเวลาทำงาน nm
โดยค่าเริ่มต้นเท่านั้นทิ้งสัญลักษณ์ใน.symtab
ส่วน
LSB_5.0.0มาตรา 10.2.2.1“ ประเภทส่วนเอลฟ์” กล่าวว่า lib ที่ใช้ร่วมกันที่สอดคล้องกันควรมีอย่างใดอย่างหนึ่ง.symtab
หรือ.dynsym
ทั้งสองอย่าง ในฐานะที่เป็นส่วนหนึ่งของไลบรารี ABI libc จะถูกแยกออกจาก.symtab
ข้อกำหนดที่สอดคล้องกัน
ค้นหาว่าเป็นวัตถุที่ใช้ร่วมกันหรือไฟล์ ASCII ปกติ หากเป็นวัตถุที่ใช้ร่วมกันคุณควรเห็น "วัตถุที่ใช้ร่วมกันของ ELB 32- บิต LSB"
file /lib/i386-linux-gnu/libc.so.6
libc.so.6
เป็นวัตถุที่ใช้ร่วมกันอย่างล้นเหลือ