คำถามติดแท็ก dynamic-loading

5
การเรียกระบบใดที่ใช้เพื่อโหลดไลบรารีใน Linux
ในstraceเอาต์พุตพา ธ ไปยังไลบรารีที่เรียกใช้งานการเรียกใช้อยู่ในการเรียกopen()ใช้ นี่เป็นการเรียกระบบที่ใช้โดยโปรแกรมที่เชื่อมโยงแบบไดนามิกหรือไม่? เกี่ยวกับdlopen()อะไร open()ไม่ใช่สายที่ฉันเดาได้ว่าจะมีบทบาทในการทำงานของโปรแกรม

2
วิธีส่งออก LD_LIBRARY_PATH ไปยังผู้ใช้และบริการระบบทั้งหมด
ฉันต้องการส่งออกLD_LIBRARY_PATHไปยังบริการระบบและผู้ใช้ทั้งหมด บริการของระบบจะทำงานก่อนเข้าสู่ระบบดังนั้นจึง.bashrcไม่สามารถใช้งานได้ ทำอย่างไรจึงจะได้สิ่งนี้?

2
ELF แชร์ไลบรารี - แรงจูงใจสำหรับ PLT
สามารถใช้รหัสการแก้ไขด้วยตนเองเพื่อเร่งความเร็วการเรียกฟังก์ชันในไลบรารีที่ลิงก์แบบไดนามิกหรือไม่ เท่าที่ฉันเข้าใจห้องสมุดที่ใช้ร่วมกันของ ELF ใช้ตารางกระโดดทางอ้อม (ตารางเชื่อมโยงโพรซีเดอร์หรือ PLT) เพื่อเปิดใช้งานฟังก์ชันไลบรารีผูกพัน ดูเหมือนว่ามีวัตถุประสงค์เพื่อหลีกเลี่ยงการแก้ไขตารางในส่วนรหัสในขณะที่ยังเปิดใช้งานการแก้ปัญหาตำแหน่งฟังก์ชันที่ขี้เกียจในการโทรครั้งแรก มันจะเร็วกว่าที่จะสร้างรหัสแบบไดนามิกสำหรับตารางนั้น ณ เวลาที่โหลดหรืออาจเป็นไปได้ที่การเรียกใช้ฟังก์ชันแรก มันคือการเปิดใช้งานการแบ่งปันส่วนรหัสระหว่างกระบวนการมากที่สุด (ตารางแบบไดนามิกจะเป็นส่วนตัวกับกระบวนการ)? เป็นเพราะเหตุผลด้านความปลอดภัย (โค้ดที่เขียนได้ไม่ควรเรียกใช้งานได้แต่ JIT ทำตลอดเวลาและสิทธิ์ในการเขียนสามารถเพิ่มและลบออกได้โดยตัวโหลดก่อนที่จะเริ่มโปรแกรมจริง ๆ ) หรือเป็นการรวมกันของสิ่งเหล่านี้และประสิทธิภาพที่เพิ่มขึ้นเล็กน้อยต่อการเรียกใช้ฟังก์ชันจะไม่คุ้มค่ากับความพยายาม?

1
ส่วนไหนของเอลฟ์ที่ปฏิบัติการได้ถูกโหลดเข้าสู่หน่วยความจำและที่ไหน
สิ่งที่ฉันรู้แล้ว: ปฏิบัติการของ ELF นั้นมีหลายส่วนโดยเฉพาะอย่างยิ่งส่วน. text และ. data ที่ถูกโหลดเข้าสู่หน่วยความจำเนื่องจากเป็นส่วนหลักของโปรแกรม แต่สำหรับโปรแกรมที่ทำงานมันต้องการข้อมูลเพิ่มเติมโดยเฉพาะเมื่อเชื่อมโยงแบบไดนามิก สิ่งที่ฉันสนใจคือส่วนต่างๆเช่น. plt, .got, .dynamic, .dynsym, .dynstr etcetera ส่วนต่างๆของเอลฟ์ที่รับผิดชอบการเชื่อมโยงฟังก์ชั่นไปยังที่อยู่ จากสิ่งที่ฉันสามารถคิดได้จนถึงตอนนี้ก็คือสิ่งต่าง ๆ เช่น. symtab และ. strtab ไม่ได้รับการโหลด (หรือไม่อยู่) ในหน่วยความจำ แต่ .dynsym และ. dynstr ถูกใช้โดย linker หรือไม่ พวกเขาอยู่ในความทรงจำหรือไม่? ฉันสามารถเข้าถึงได้จากรหัสโปรแกรมหรือไม่ และมีส่วนใดของปฏิบัติการที่อยู่ในหน่วยความจำเคอร์เนล? ความสนใจของฉันในเรื่องนี้ส่วนใหญ่เป็นนิติวิทยาศาสตร์ แต่ข้อมูลใด ๆ ในหัวข้อนี้จะช่วยได้ ทรัพยากรที่ฉันได้อ่านเกี่ยวกับตารางเหล่านี้และการเชื่อมโยงแบบไดนามิกอยู่ในระดับสูงมากขึ้นพวกเขาอธิบายเฉพาะการทำงานไม่ใช่สิ่งที่เป็นประโยชน์เกี่ยวกับเนื้อหาในหน่วยความจำ แจ้งให้เราทราบหากมีข้อสงสัยเกี่ยวกับคำถามของฉัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.