أداة لاستخراج المعلومات من قواعد بيانات IDA. يعرف idbtool كيفية التعامل مع قواعد البيانات من جميع إصدارات IDA منذ V2.0 ، وملفات i64 و idb . يمكنك أيضًا استخدام idbtool لاستعادة المعلومات من قواعد البيانات غير المخلوطة.
يعمل idbtool دون تغيير مع IDA V7.0.
مع IDBTOOL ، يمكنك البحث عن آلاف ملفات .IDB في ثوانٍ.
بتعبير أدق: على جهاز الكمبيوتر المحمول يستغرق:
يستغرق تحميل ملف IDB حوالي 5 GBYTE في IDA ، حوالي 45 دقيقة. في حين أن IDB3.H لا يستغرق أي وقت على الإطلاق ، لا يزيد عن بضعة ميلي ثانية.
يوجد نسختان من هذه الأداة:
واحد مكتوب في بيثون
واحد مكتوب في C ++
يحتوي كلا المستودعين على مكتبة يمكن استخدامها في ملفات القراءة .idb أو .i64 .
الاستخدام:
idbtool [options] [database file(s)]
-n أو --names جميع القيم المسماة في قاعدة البيانات.-s أو --scripts جميع البرامج النصية المخزنة في قاعدة البيانات.-u أو --structs جميع الهياكل المخزنة في قاعدة البيانات.-e أو --enums تسرد جميع التعدادات المخزنة في قاعدة البيانات.--imports بإدراج جميع الرموز المستوردة من قاعدة البيانات.--funcdirs مجلدات الوظائف المخزنة في قاعدة البيانات.-i أو --info ستقوم بطباعة بعض المعلومات العامة حول قاعدة البيانات.-d أو --pagedump شجرة Btree Btree Pagedump.--inc ، --dec جميع السجلات في ترتيب تصاعدي / تنازلي.-q أو --query عن سجلات محددة في قاعدة البيانات.-m أو --limit من عدد النتائج التي تم إرجاعها بواسطة -q .-id0 ، -id1 تفريغ قسم واحد فقط.--i64 ، --i32 أخبر IDBTOOL أن الملف المحدد من قاعدة بيانات 64 أو 32 بت.--recover من قاعدة بيانات غير معبأة.--classify Classify استخدام العقدة في قاعدة البيانات--dump hexdump البيانات الثنائية الأصلية يجب تحديد الاستعلامات أخيرًا على سطر الأوامر.
مثال:
idbtool [database file(s)] --query "Root Node;V"
سوف تسرد المصدر الثنائي لجميع قواعد البيانات المحددة في سطر الأوامر.
الاستعلام عبارة عن سلسلة مع التنسيق التالي:
مثال على الاستفسارات:
Root Node;V -> سجل المطبوعات الذي يحتوي على الاسم الثنائي المصدر?Root Node -> يطبع سجل الاسم الذي يشير إلى الجذر>Root Node -> يطبع السجلات العشرة الأولى التي تبدأ بمعرف عقدة الجذر.<Root Node -> يطبع السجلات 10 startNg مع السجلات قبل RootNode..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]