Инструмент для извлечения информации из баз данных IDA. idbtool знает, как обрабатывать базы данных из всех версий IDA со времен v2.0, файлов i64 и idb . Вы также можете использовать idbtool для восстановления информации из непосредственных баз данных.
idbtool работает без изменений с IDA V7.0.
С iDBTool вы можете искать тысячи файлов .idb за считанные секунды.
Точнее: на моем ноутбуке он берет:
Загрузка примерно 5 Gbyte IDB -файла в IDA занимает около 45 минут. В то время как IDB3.H не занимает вообще не время, не более нескольких миллисекунд.
Существуют две версии этого инструмента:
Один написан на Python
Один написан в C ++
Оба репозиториев содержат библиотеку, которая может использоваться для чтения файлов .idb или .i64 .
Использование:
idbtool [options] [database file(s)]
-n или --names будут перечислять все именованные значения в базе данных.-s или --scripts перечисляют все сценарии, хранящиеся в базе данных.-u или --structs будут перечислять все структуры, хранящиеся в базе данных.-e или --enums перечисляют все перечисления, хранящиеся в базе данных.--imports будут перечислять все импортные символы из базы данных.--funcdirs будут перечислять папки функций, хранящиеся в базе данных.-i или --info напечатает некоторую общую информацию о базе данных.-d или --pagedump от дампа содержимое дерева страниц.--inc , --dec Список всех записей в порядке восхождения / убывания.-q или --query Search конкретные записи в базе данных.-m или --limit количество результатов, возвращаемых -q .-id0 , -id1 сбрасывает только один конкретный раздел.--i64 , --i32 Скажите idbtool, что указанный файл из 64 или 32-битной базы данных.--recover Группы файлов из распакованной базы данных.--classify суммирует использование узлов в базе данных--dump шестиугольники исходные бинарные данные Запросы должны быть указаны последними в командной линии.
пример:
idbtool [database file(s)] --query "Root Node;V"
Перечислит источник двоичного файла для всех баз данных, указанных в командной линии.
Запрос - это строка со следующим форматом:
Пример запросов:
Root Node;V -> prints recored, содержащий двоичное имя источника?Root Node -> печатает запись имени, указывающую на корень>Root Node -> печатает первые 10 записей, начиная с идентификатора корневого узла.<Root Node -> печатает 10 записей запуска с помощью записей перед корневым..0xff000001;N -> печатает запись имени rootNode.#1;N -> печатает вход имени rootnode. Перечислите самый высокий узел и следующую запись в базе данных двумя разными способами, первым: начало с первой записи ниже ffc00000 и перечисление следующего. Второе: начиная с первой записи после ffc00000 и в перечислении предыдущего:
--query "<#0xc00000" --limit 2 --inc -v--query ">#0xc00000" --limit 2 --dec -v Обратите внимание, что это должна быть узлы в записи $ 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 , но не (пока) от других.
File idblib.py содержит библиотеку.
Willem Hengeveld [email protected]