อ่าน 2 นาที
ไดนาโมริโอ
DynamoRIO เป็น เฟรมเวิร์กสำหรับการ ตรวจสอบ ไบนารีแบบไดนามิก ที่ได้รับอนุญาตภายใต้ BSD สำหรับการพัฒนา เครื่องมือ วิเคราะห์โปรแกรมแบบไดนามิก DynamoRIO มุ่งเป้าไปที่ แอปพลิเคชัน...
ไดนาโมริโอ
| ไดนาโมริโอ | |
|---|---|
| นักพัฒนา | ผู้เขียน DynamoRIO |
| ปล่อย | มิถุนายน 2545 |
| เวอร์ชันเสถียร | 11.2.0 [ 1 ] / 20 ธันวาคม 2024 |
| รุ่นทดลองใช้งาน | 7.0.0-RC1 / 3 กุมภาพันธ์ 2560 |
| ระบบปฏิบัติการ | แอนดรอยด์ , ลินุกซ์ , วินโดวส์ |
| แพลตฟอร์ม | AArch32 , AArch64 , IA-32 , x86-64 |
| พิมพ์ | กรอบการทำงานสำหรับการวัดผล , โปรไฟล์เลอร์ |
| ใบอนุญาต | บีเอสดี |
| เว็บไซต์ | dynamorio.org |
| ที่เก็บข้อมูล |
|
DynamoRIOเป็น เฟรมเวิร์กสำหรับการ ตรวจสอบไบนารีแบบไดนามิกที่ได้รับอนุญาตภายใต้ BSDสำหรับการพัฒนา เครื่องมือ วิเคราะห์โปรแกรมแบบไดนามิก DynamoRIO มุ่งเป้าไปที่ แอปพลิเคชัน ในพื้นที่ผู้ใช้ภายใต้ระบบปฏิบัติการAndroid , LinuxและWindows ที่ทำงาน บน สถาปัตยกรรมชุดคำสั่งAArch32 , IA-32และx86-64
DynamoRIO ถูกสร้างขึ้นมาในตอนแรกเป็นระบบเพิ่มประสิทธิภาพไบนารี แบบไดนามิก แต่ต่อมาได้ถูกนำไปใช้เป็นเครื่องมือด้านความปลอดภัย การดีบัก และการวิเคราะห์ DynamoRIO มีต้นกำเนิดมาจากการทำงานร่วมกันระหว่างระบบเพิ่มประสิทธิภาพ Dynamo ของHewlett-Packard และกลุ่มวิจัย Runtime Introspection and Optimization (RIO) [ 2 ]ที่MITดังนั้นจึงมีชื่อรวมกันว่า "DynamoRIO" มันถูกเผยแพร่สู่สาธารณะครั้งแรกในฐานะชุดเครื่องมือไบนารีที่เป็นกรรมสิทธิ์ในเดือนมิถุนายน พ.ศ. 2545 และต่อมาได้เปิดเป็นโอเพนซอร์สภายใต้ใบอนุญาต BSD ในเดือนมกราคม พ.ศ. 2552
ภาพรวม
DynamoRIO เป็นเครื่องเสมือนกระบวนการทำงาน (process virtual machine)ที่เปลี่ยนเส้นทางการทำงานของโปรแกรมจากโค้ดไบนารีต้นฉบับไปยังสำเนาของโค้ดนั้น จากนั้นจึงเพิ่มเครื่องมือวัดที่ทำหน้าที่ตามที่เครื่องมือต้องการลงในสำเนานี้ โดยไม่มีการเปลี่ยนแปลงใดๆ กับโปรแกรมต้นฉบับ ซึ่งไม่จำเป็นต้องเตรียมการเป็นพิเศษแต่อย่างใด DynamoRIO ทำงานได้อย่างสมบูรณ์ในระหว่างการทำงานและจัดการกับโค้ดเก่า ไลบรารีที่โหลดแบบไดนามิก โค้ดที่สร้างขึ้นแบบไดนามิก และโค้ดที่แก้ไขตัวเองได้
DynamoRIO ตรวจสอบ การไหลของการควบคุมทั้งหมดเพื่อบันทึกการดำเนินการทั้งหมดของโปรแกรมเป้าหมาย การตรวจสอบนี้จะเพิ่มภาระแม้ว่าจะไม่มีเครื่องมืออยู่ก็ตาม ภาระเฉลี่ยของ DynamoRIO คือ 11 เปอร์เซ็นต์[ 3 ]
คุณสมบัติ
APIของ DynamoRIO ช่วยลดความซับซ้อนของรายละเอียดกระบวนการเวอร์ชวลไลเซชัน และมุ่งเน้นไปที่การตรวจสอบหรือแก้ไขกระแสโค้ดแบบไดนามิกของโปรแกรม เครื่องมือสามารถแทรกแทรมโพลีนลงในโปรแกรมเพื่อเรียกใช้การกระทำของเครื่องมือ ณ จุดที่กำหนดในโปรแกรม นอกจากนี้ เครื่องมือยังสามารถแทรกการตรวจสอบใน ระดับ ภาษาแอสเซมบลีซึ่งให้การควบคุมอย่างละเอียดต่อการกระทำและประสิทธิภาพของเครื่องมือ DynamoRIO รองรับการเพิ่มประสิทธิภาพแบบปรับเปลี่ยนได้และการตรวจสอบแบบปรับเปลี่ยนได้ โดยอนุญาตให้เครื่องมือลบหรือแก้ไขการตรวจสอบได้ทุกจุดตลอดการทำงานของโปรแกรมเป้าหมาย
DynamoRIO เรียกใช้ฟังก์ชันเรียกกลับ ที่ลงทะเบียนไว้กับเครื่องมือ ณ จุดเหตุการณ์ทั่วไปหลายจุดของโปรแกรม เช่น การสร้างเธรด การโหลดไลบรารี การเรียกใช้ระบบ สัญญาณ หรือข้อยกเว้น นอกจากนี้ API ของมันยังอนุญาตให้ตรวจสอบไลบรารีและพื้นที่แอดเดรส ของโปรแกรม นอกเหนือจากโค้ดอีกด้วย
API และฟังก์ชันเรียกกลับเหตุการณ์ของ DynamoRIO ได้รับการออกแบบให้ใช้งานได้ข้ามแพลตฟอร์ม ทำให้โค้ดเครื่องมือเดียวกันสามารถทำงานได้ทั้งบน Windows และ Linux รวมถึงทั้งสถาปัตยกรรม IA-32 และ x86-64 DynamoRIO รับประกันความโปร่งใส ของเครื่องมือ โดยการแยกทรัพยากรของเครื่องมือ เช่นสแต็กหน่วยความจำ และการเข้าถึงไฟล์ ออกจากโปรแกรมที่เครื่องมือทำงานอยู่
DynamoRIO มีไลบรารีที่ขยาย API เพื่อให้ สามารถเข้าถึง ตารางสัญลักษณ์การห่อหุ้มและแทนที่ฟังก์ชัน และยูทิลิตี้การติดตามที่อยู่หน่วยความจำ
เครื่องมือ
เครื่องมือชุดแรกที่สร้างขึ้นสำหรับ DynamoRIO มุ่งเน้นไปที่การเพิ่มประสิทธิภาพแบบไดนามิก[ 4 ]มีการสร้างเครื่องมือวิจัยจำนวนหนึ่งเพื่อวัตถุประสงค์ที่หลากหลาย รวมถึงการตรวจสอบการปนเปื้อน[ 5 ]และการสร้างโปรไฟล์[ 6 ]
การดูแลโครงการ
การนำ DynamoRIO มาใช้ในด้านความปลอดภัยส่งผลให้เกิดเทคนิคที่เรียกว่า การ ควบคุมโปรแกรม[ 7 ]เครื่องมือควบคุมโปรแกรมจะตรวจสอบที่มาของคำสั่งโปรแกรมแต่ละคำสั่งและการไหลของการควบคุมระหว่างคำสั่งเพื่อป้องกันไม่ให้การโจมตีด้านความปลอดภัยเข้าควบคุมโปรแกรม ในปี 2546 การควบคุมโปรแกรมได้รับการนำไปใช้ในเชิงพาณิชย์ในชื่อแบรนด์ ซอฟต์แวร์ ป้องกันการบุกรุกโฮสต์Memory Firewall ในบริษัทสตาร์ทอัพชื่อ Determina Determina ถูกซื้อกิจการโดยVMwareในเดือนสิงหาคม 2550 [ 8 ]
ดร.เมมโมรี่
Dr. Memory เป็น ดีบักหน่วยความจำแบบโอเพนซอร์สที่สร้างขึ้นบน DynamoRIO และเผยแพร่ภายใต้ใบอนุญาต LGPL [ 9 ] Dr. Memory ตรวจสอบการจัดสรรหน่วยความจำและการเข้าถึงหน่วยความจำโดยใช้หน่วยความจำเงาตรวจจับข้อผิดพลาดในการเขียนโปรแกรมที่เกี่ยวข้องกับหน่วยความจำ เช่น การเข้าถึงหน่วยความจำที่ไม่ได้เริ่มต้น การเข้าถึงหน่วยความจำที่ถูกปล่อย การล้นและการน้อยเกินไปของฮีป และการรั่วไหลของหน่วยความจำชุดคุณสมบัติของมันคล้ายกับ เครื่องมือ Memcheckที่ใช้Valgrindแม้ว่าจะทำงานบน Windows เช่นเดียวกับ Linux และเร็วกว่า Memcheck ถึงสองเท่า[ 10 ]
ดูเพิ่มเติม
หมายเหตุ
- ^ "เวอร์ชัน 11.2.0" . 20 ธันวาคม 2024 . สืบค้นเมื่อ24 ธันวาคม 2024 .
- ^โครงการ RIO: การตรวจสอบและเพิ่มประสิทธิภาพขณะรันไทม์
- ^อุปกรณ์วัดแบบไดนามิกโปร่งใส รูปที่ 4
- ^โครงสร้างพื้นฐานสำหรับการเพิ่มประสิทธิภาพแบบไดนามิกที่ปรับเปลี่ยนได้
- ^ TaintTrace: การติดตามการไหลของข้อมูลอย่างมีประสิทธิภาพด้วยการเขียนไบนารีใหม่แบบไดนามิก
- ^ PiPA: การวิเคราะห์และประมวลผลข้อมูลแบบไปป์ไลน์บนระบบมัลติคอร์
- ^การดำเนินการที่ปลอดภัยผ่านการควบคุมดูแลโปรแกรม
- ^ VMware เข้าซื้อกิจการ Determina ผู้ให้บริการ HIPS
- ^ Dr. Memory: โปรแกรมตรวจสอบข้อผิดพลาดของหน่วยความจำสำหรับ Windows และ Linux
- ^การตรวจสอบความจำเชิงปฏิบัติกับดร.ความจำ
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
- รายชื่อผู้รับอีเมลสำหรับผู้ใช้งาน DynamoRIO
- หน้าหลักของ ดร. เมมโมรี่
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ไดนาโมริโอ
DynamoRIO เป็น เฟรมเวิร์กสำหรับการ ตรวจสอบ ไบนารีแบบไดนามิก ที่ได้รับอนุญาตภายใต้ BSD สำหรับการพัฒนา เครื่องมือ วิเคราะห์โปรแกรมแบบไดนามิก DynamoRIO มุ่งเป้าไปที่ แอปพลิเคชัน...
ภาพรวม
DynamoRIO เป็น เครื่องเสมือนกระบวนการทำงาน (process virtual machine) ที่เปลี่ยนเส้นทางการทำงานของโปรแกรมจากโค้ดไบนารีต้นฉบับไปยังสำเนาของโค้ดนั้น จากนั้นจึงเพิ่มเครื่องมือวัดที่ทำหน้าที่ตามที่เครื่องมือต้องการลงในสำเนานี้ โดยไม่มีการเปลี่ยนแปลงใดๆ...
คุณสมบัติ
API ของ DynamoRIO ช่วยลดความซับซ้อนของรายละเอียดกระบวนการเวอร์ชวลไลเซชัน และมุ่งเน้นไปที่การตรวจสอบหรือแก้ไขกระแสโค้ดแบบไดนามิกของโปรแกรม เครื่องมือสามารถแทรก แทรมโพลีน ลงในโปรแกรมเพื่อเรียกใช้การกระทำของเครื่องมือ ณ จุดที่กำหนดในโปรแกรม นอกจากนี้...
เครื่องมือ
เครื่องมือชุดแรกที่สร้างขึ้นสำหรับ DynamoRIO มุ่งเน้นไปที่การเพิ่มประสิทธิภาพแบบไดนามิก [ 4 ] มีการสร้างเครื่องมือวิจัยจำนวนหนึ่งเพื่อวัตถุประสงค์ที่หลากหลาย รวมถึง การตรวจสอบการปนเปื้อน [ 5 ] และการ สร้างโปรไฟล์ [ 6 ]