เครื่องมือสำหรับการแยกข้อมูลจากฐานข้อมูล IDA idbtool รู้วิธีจัดการฐานข้อมูลจากทุกรุ่น IDA ตั้งแต่ v2.0 ทั้งไฟล์ i64 และ idb คุณยังสามารถใช้ idbtool เพื่อกู้คืนข้อมูลจากฐานข้อมูลที่ไม่ได้เปิด
idbtool ทำงานโดยไม่เปลี่ยนแปลงกับ IDA v7.0
ด้วย Idbtool คุณสามารถค้นหาไฟล์. IDB หลายพันไฟล์ในไม่กี่วินาที
แม่นยำยิ่งขึ้น: บนแล็ปท็อปของฉันใช้เวลา:
การโหลดไฟล์ GBYTE IDB ประมาณ 5 ไฟล์ใน IDA ใช้เวลาประมาณ 45 นาที ในขณะที่ IDB3.H ใช้เวลาโดยทั่วไป แต่โดยทั่วไปแล้วไม่เกินสองสามมิลลิวินาที
เครื่องมือนี้มีสองเวอร์ชัน:
หนึ่งเขียนใน Python
หนึ่งเขียนใน C ++
ที่เก็บทั้งสองมีไลบรารีซึ่งสามารถใช้สำหรับการอ่านไฟล์ .idb หรือ .i64
การใช้งาน:
idbtool [options] [database file(s)]
-n หรือ --names จะแสดงรายการค่าที่ชื่อทั้งหมดในฐานข้อมูล-s หรือ --scripts จะแสดงรายการสคริปต์ทั้งหมดที่เก็บไว้ในฐานข้อมูล-u หรือ --structs จะแสดงรายการโครงสร้างทั้งหมดที่เก็บไว้ในฐานข้อมูล-e หรือ --enums จะแสดงรายการ enums ทั้งหมดที่เก็บไว้ในฐานข้อมูล--imports จะแสดงรายการสัญลักษณ์ที่นำเข้าทั้งหมดจากฐานข้อมูล--funcdirs จะแสดงรายการโฟลเดอร์ฟังก์ชั่นที่เก็บไว้ในฐานข้อมูล-i หรือ --info จะพิมพ์ข้อมูลทั่วไปเกี่ยวกับฐานข้อมูล-d หรือ --pagedump Dump Btree Page Tree เนื้อหา--inc รายการบันทึกทั้งหมดบันทึกทั้งหมดในคำสั่งซื้อ / --dec มากไปน้อย-q หรือ --query บันทึกการค้นหาเฉพาะบันทึกในฐานข้อมูล-m หรือ --limit จำกัด จำนวนผลลัพธ์ที่ส่งคืนโดย -q-id0 , -id1 Dump เพียงส่วนเดียวเท่านั้น--i64 , --i32 บอก idbtool ว่าไฟล์ที่ระบุมาจากฐานข้อมูล 64 หรือ 32 บิต--recover ไฟล์กลุ่มที่เรียกคืนจากฐานข้อมูลที่ยังไม่ได้บรรจุ--classify จำแนกประเภทสรุปการใช้โหนดในฐานข้อมูล--dump hexdump ข้อมูลไบนารีดั้งเดิม ต้องมีการระบุการสอบถามล่าสุดบน CommandLine
ตัวอย่าง:
idbtool [database file(s)] --query "Root Node;V"
จะแสดงรายการไบนารีแหล่งที่มาสำหรับฐานข้อมูลทั้งหมดที่ระบุบนคำสั่ง
แบบสอบถามคือสตริงที่มีรูปแบบต่อไปนี้:
แบบสอบถามตัวอย่าง:
Root Node;V -> พิมพ์ระเบียนที่มีชื่อไบนารีต้นทาง?Root Node -> พิมพ์บันทึกชื่อชี้ไปที่รูท>Root Node -> พิมพ์ 10 ระเบียนแรกที่เริ่มต้นด้วยรหัสรูทโหนด<Root Node -> พิมพ์ 10 ระเบียน startng ด้วย recordsfore ก่อนรูท.0xff000001;N -> พิมพ์รายการชื่อ RootNode#1;N -> พิมพ์รายการชื่อ RootNode แสดงรายการโหนดสูงสุดและบันทึกต่อไปนี้ในฐานข้อมูลในสองวิธีที่แตกต่างกันครั้งแรก: เริ่มต้นที่ระเบียนแรกด้านล่าง ffc00000 และแสดงรายการถัดไป ครั้งที่สอง: เริ่มต้นที่บันทึกแรกหลังจาก ffc00000 และแสดงรายการก่อนหน้า:
--query "<#0xc00000" --limit 2 --inc -v--query ">#0xc00000" --limit 2 --dec -v โปรดทราบว่านี่ควรเป็น NodeID ในระเบียน $ MAX NODE
แสดงรายการสองระเบียนสุดท้าย:
--limit 2 --dec -v แสดงรายการสองระเบียนแรก $ MAX LINK และ $ MAX NODE Records:
--limit 2 --inc -vมีหลายวิธีสำหรับการพิมพ์ระเบียนทั้งหมดในฐานข้อมูล สิ่งนี้อาจมีประโยชน์หากคุณต้องการตรวจสอบภายในของ IDA มากขึ้น แต่ยังมีประโยชน์ในการกู้คืนข้อมูลจากฐานข้อมูลที่เสียหาย
--inc , --dec สามารถใช้เพื่อระบุบันทึก B-Tree ทั้งหมดในทิศทางไปข้างหน้าหรือไปข้างหลัง-v เพื่อรับเอาต์พุตคีย์/ค่าที่สวยงามกว่า--id0 เดินทรีหน้าแทนต้นไม้บันทึกพิมพ์เนื้อหาของแต่ละหน้า--pagedump อย่างตรงไปตรงมาผ่านไฟล์ซึ่งจะเปิดเผยข้อมูลในหน้าลบ เมื่อ IDA หรือคอมพิวเตอร์ของคุณขัดข้องขณะทำงานกับการถอดชิ้นส่วนและคุณยังไม่ได้บันทึกฐานข้อมูลคุณจะเหลือสองไฟล์ที่มีส่วนขยายเช่น .id0 , .id1 , .nam ฯลฯ
ไฟล์เหล่านี้เป็นฐานข้อมูลที่ไม่ได้บรรจุฉันเรียกพวกเขาว่าไฟล์ naked
การใช้ตัวเลือก --filetype และ --i64 หรือ --i32 คุณสามารถตรวจสอบไฟล์ naked เหล่านี้เป็นรายบุคคล หรือใช้ตัวเลือก --recover ตัวเลือกเพื่อดูเป็นฐานข้อมูลที่สมบูรณ์ด้วยกัน idbtool จะทราบโดยอัตโนมัติว่าไฟล์ใดจะอยู่ด้วยกัน
idbtool สามารถค้นหา Bitsize ของฐานข้อมูลจากไฟล์ .id0 แต่ยังไม่ได้ (ยัง) จากไฟล์อื่น ๆ
ไฟล์ idblib.py มีไลบรารี
Willem Hengeveld [email protected]