IDAデータベースから情報を抽出するためのツール。 idbtool 、V2.0、 i64およびidbファイルの両方から、すべてのIDAバージョンのデータベースを処理する方法を知っています。 idbtoolを使用して、除去されていないデータベースから情報を回復することもできます。
idbtool IDA v7.0で変更せずに機能します。
idbtoolを使用すると、数千の.idbファイルを数秒で検索できます。
より正確には:私のラップトップでは次のとおりです。
IDAに約5つのGBYTE IDBファイルをロードするには、約45分かかります。 idb3.hは基本的に時間はまったく時間がありませんが、数ミリ秒以下です。
このツールの2つのバージョンが存在します。
Pythonで書かれたもの
C ++で書かれたもの
両方のリポジトリには、 .idbまたは.i64ファイルの読み取りに使用できるライブラリが含まれています。
使用法:
idbtool [options] [database file(s)]
-nまたは--names 、データベース内のすべての名前の値をリストします。-sまたは--scripts 、データベースに保存されているすべてのスクリプトをリストします。-uまたは--structs 、データベースに保存されているすべての構造体をリストします。-eまたは--enums 、データベースに保存されているすべてのenumsをリストします。--imports 、データベースからインポートされたすべてのシンボルをリストします。--funcdirs 、データベースに保存されている関数フォルダーをリストします。-iまたは--info 、データベースに関するいくつかの一般情報を印刷します。-dまたは--pagedumpダンプBtreeページツリーコンテンツ。--inc 、 --decすべてのレコードを昇順 /降順でリストします。-qまたは - データベース内の特定のレコードを--query検索します。-mまたは--limit 、 -qで返される結果の数を制限します。-id0 、 -id1特定のセクションのみをダンプします。--i64 、 --i32指定されたファイルは64または32ビットデータベースからのものであることをidbtoolに伝えます。--recover未梱包されたデータベースからグループファイルを再び回収します。--classify 、データベースのノードの使用を要約します--dump hexdump元のバイナリデータクエリは、コマンドラインで最後に指定する必要があります。
例:
idbtool [database file(s)] --query "Root Node;V"
コマンドラインで指定されたすべてのデータベースのソースバイナリをリストします。
クエリは、次の形式の文字列です。
クエリの例:
Root Node;V >ソースバイナリ名を含むレコードを印刷?Root Node - >ルートを指す名前レコードを印刷します>Root Node - >ルートノードIDから始まる最初の10のレコードを印刷します。<Root Node - > rootnodeの前に、10のレコードが記録を使用して印刷します。.0xff000001;N - > rootnode名のエントリを印刷します。#1;N - >ルートノード名エントリを印刷します。データベースの最高のノードと次のレコードを2つの異なる方法でリストします。最初の方法: ffc00000以下の最初のレコードから始まり、次のレコードをリストします。 2番目: ffc00000の後の最初のレコードから始まり、以前のリストをリストします。
--query "<#0xc00000" --limit 2 --inc -v--query ">#0xc00000" --limit 2 --dec -vこれは$ MAX NODEレコードのnodeidである必要があることに注意してください。
最後の2つのレコードをリストします。
--limit 2 --dec -v最初の2つのレコード、 $ MAX LINKと$ MAX NODEレコードをリストします。
--limit 2 --inc -vデータベースにすべてのレコードを印刷するためのいくつかの方法が存在します。これは、IDAの内部をさらに調査したい場合に役立つ場合があります。ただし、破損したデータベースからデータの回復にも役立ちます。
--inc 、 --dec使用して、すべてのBツリーレコードをフォワード方向または後方方向のいずれかで列挙できます。-vを追加して、きれいなキー/値出力を取得します--id0 、レコードツリーの代わりにページツリーを歩き、各ページの内容を印刷します--pagedumpファイルを直線的にスキップすると、削除されたページに情報が表示されます。IDAまたはコンピューターが分解の作業中にクラッシュし、データベースをまだ保存していない場合.id0 、 .id1 、 .namなどの拡張機能を備えたいくつかのファイルが残ります。
これらのファイルは未梱包されたデータベースです。私はそれらをnakedファイルと呼びます。
--filetypeおよび--i64または--i32オプションを使用して、これらのnakedファイルを個別に検査できます。または、 --recoverオプションを使用して、それらを完全なデータベースとして一緒に表示します。 idbtool 、どのファイルが一緒に属するかを自動的に把握します。
idbtool 、 .id0ファイルからデータベースのビット化を把握できますが、他のファイルからは(まだ)把握できます。
ファイルidblib.pyにはライブラリが含まれています。
Willem Hengeveld [email protected]