lief-patchelf: เครื่องมือแก้ไข ELF ข้ามแพลตฟอร์มสำหรับการแก้ไขตัวแปลและการพึ่งพา
ปรับเปลี่ยนเส้นทาง ELF interpreter, เพิ่มหรือลบรายการ DT_NEEDED, และแก้ไขค่า RPATH หรือ SONAME จาก Windows หรือ Linux hosts สร้างโดย Romain Thomas เป็นส่วนหนึ่งของโครงการ LIEF เครื่องมือนี้ได้ทำการนำเสนอ CLI patchelf แบบคลาสสิกของ NixOS ใหม่ใน Rust โดยใช้เอนจินการเขียนใหม่ที่มุ่งเน้นส่วนของ LIEF มันรองรับการเติมคำใน shell และหน้าคู่มือ และเหมาะสำหรับนักวิจัยด้านความปลอดภัย ผู้จัดทำแพ็คเกจ และวิศวกร DevOps ที่ต้องการการแก้ไขไบนารีข้ามโฮสต์อย่างแม่นยำเพื่อความเข้ากันได้หรือการวิเคราะห์.
เครื่องมือเปลี่ยนแปลงอะไรในไฟล์ ELF
เครื่องมือแก้ไขฟิลด์ ELF ที่เฉพาะเจาะจง: เส้นทางของ dynamic linker (interpreter), รายการการพึ่งพา DT_NEEDED, สตริง RPATH และ RUNPATH, และ SONAME ของไลบรารี นอกจากนี้ยังสามารถลดขนาด RPATH โดยการลบไดเรกทอรีที่ไม่มีไลบรารีที่อ้างอิง การดำเนินการเหล่านั้นทำงานจากบรรทัดคำสั่งและรักษาความเข้ากันได้กับอินเทอร์เฟซ patchelf ดั้งเดิม ดังนั้นสคริปต์ที่เรียกใช้ CLI แบบคลาสสิกจึงสามารถใช้เครื่องมือได้โดยไม่เปลี่ยนแปลงการเรียกใช้งานของพวกเขา
ความน่าเชื่อถือของกระบวนการเขียนใหม่ในไฟล์ระบบที่ผสมกัน
เครื่องมือใช้เอนจินการเขียนใหม่ที่อิงจากเซกเมนต์จากไลบรารี LIEF แทนที่จะใช้วิธีการที่อิงจากส่วน ซึ่งช่วยลดความเสียหายของเลย์เอาต์เมื่อไฟล์ไบนารีมีเลย์เอาต์เซกเมนต์ที่ไม่เป็นมาตรฐานหรือถูกปรับให้เหมาะสม การเขียนด้วย Rust ให้ข้อดีด้านความปลอดภัยของหน่วยความจำในระหว่างการเขียนใหม่ของไบนารี การสร้างข้ามแพลตฟอร์มสำหรับ Windows, Linux และ macOS ช่วยให้คุณสามารถแพตช์ไฟล์ ELF บนโฮสต์ที่แตกต่างจากเวลารันที่ตั้งเป้า ซึ่งมีประโยชน์เมื่อคุณไม่สามารถเรียกใช้สภาพแวดล้อม Linux แบบเนทีฟได้
ความปลอดภัย ผลกระทบต่อระบบ และข้อกำหนดในการทำงาน
เครื่องมือเป็น CLI แบบสแตนด์อโลนที่ทำงานโดยตรงบนไฟล์ ELF; ไม่พยายามเปลี่ยนแปลงระบบออนไลน์ เนื่องจากมันรักษาความเท่าเทียมกันในบรรทัดคำสั่งกับยูทิลิตี้ดั้งเดิม ท่ออัตโนมัติสามารถเรียกใช้มันในลักษณะเดียวกับที่สคริปต์ทำอยู่แล้ว การแจกจ่ายมีไฟล์ไบนารีที่คอมไพล์ล่วงหน้าหรือการสร้างจากแหล่งผ่าน Rust toolchain ดังนั้นผู้ใช้จึงต้องมีประสบการณ์พื้นฐานในการใช้บรรทัดคำสั่งและ Rust toolchain เท่านั้นหากพวกเขาเลือกที่จะคอมไพล์จากแหล่งที่มา
คำแนะนำที่เป็นประโยชน์สำหรับผู้ใช้ทางเทคนิค
เครื่องมือนี้เป็นตัวเลือกที่แม่นยำสำหรับวิศวกรที่ต้องแก้ไขข้อมูลเมตาของ ELF จากโฮสต์ที่ไม่ใช่ Linux; มันเหมาะกับการทำงานที่อิงจาก patchelf CLI อยู่แล้ว ทดสอบการเปลี่ยนแปลงกับสำเนาของไบนารีและเรียกใช้ไฟล์ที่แก้ไขแล้วในสภาพแวดล้อมการทำงานหรืออีมูเลเตอร์ที่เหมาะสมก่อนการนำไปใช้งาน แนะนำ.