83

未知のバイナリデータ形式のデコードを支援するために利用できるツールは何ですか?

HexWorkshopと010Editorの両方が構造をサポートしていることを知っています。これらは、既知の固定形式ではある程度問題ありませんが、特に未知の形式では、より複雑なもので使用するのが難しくなります。スクリプト言語またはスクリプト可能なGUIツールのモジュールを見ていると思います。

たとえば、限られた既知の情報、おそらくマジックナンバーから、データのブロック内の構造を見つけられるようにしたいと思います。構造を見つけたら、既知の長さとオフセットの単語に従って他の構造を見つけます。次に、これを再帰的かつ反復的に、意味のある場所で繰り返します。

私の夢では、おそらくシステムにすでに伝えたことに基づいて、可能なオフセットと長さを自動的に特定することさえできます。

4

9 に答える 9

23

心に浮かぶいくつかのヒントを次に示します。

私の経験からすると、インタラクティブなスクリプト言語 (私は Python を使用しています) は非常に役立ちます。バイナリ ストリームといくつかの単純なアルゴリズムを処理する単純なフレームワークを作成できます。次に、バイナリを取得してさまざまなことをチェックするスクリプトを作成できます。例えば:

さまざまな部分について統計分析を行います。たとえば、ランダム データは、この部分がおそらく圧縮/暗号化されていることを示します。ゼロはパーツ間のパディングを意味する場合があります。散在するゼロは、整数値または Unicode 文字列などを意味する場合があります。さまざまなオフセットを見つけてみてください。バイナリの一部を 2 バイトまたは 4 バイトの整数または浮動小数点数に変換し、それらを出力して、意味があるかどうかを確認してください。データ内の繰り返し部分または非常に類似した部分を検索する関数をいくつか作成します。これにより、ヘッダーを簡単に見つけることができます。

できるだけ多くの文字列を検索し、別のエンコーディング (c 文字列、パスカル文字列、utf8/16 など) を試してください。そのための優れたツールがいくつかあります (Hex Workshop にはそのようなツールがあると思います)。文字列は多くのことを教えてくれます。

幸運を!

于 2009-02-18T21:41:58.663 に答える
15

Mac OS X には、私の iBored よりもさらに優れた優れたツールがあります: Synalyze It! ( http://www.synalysis.net/ )

iBoredと比較すると、ブロックされていないファイルに適していますが、スクリプト可能性 (Lua を使用) を含め、構造を完全に制御できます。また、構造の視覚化も向上します。

于 2011-12-08T16:45:15.943 に答える
10

トゥプニ; 私の知る限り、Microsoft Research から直接入手することはできませんが、このツールに関する論文があり、同様のプログラム (おそらくオープン ソース) を書きたいと考えている人にとっては興味深いものです。

Tupni: 入力フォーマットの自動リバース エンジニアリング( @ACMデジタル ライブラリ)

概要

最近の研究では、プロトコルまたはファイル形式の仕様の自動リバース エンジニアリングの重要性が確立されています。ただし、以前のツールでリバース エンジニアリングされた形式では、セキュリティ アプリケーションにとって重要な重要な情報が見落とされていました。このホワイト ペーパーでは、レコード シーケンス、レコード タイプ、入力制約などの豊富な情報セットを使用して入力フォーマットをリバース エンジニアリングできるツールである Tupni を紹介します。Tupni は、複数の入力に対してフォーマット仕様を一般化できます。Tupni のプロトタイプを実装し、10 の異なる形式で評価しました。5 つのファイル形式 (WMF、BMP、JPG、PNG、TIF) と 5 つのネットワーク プロトコル (DNS、RPC、TFTP、HTTP、FTP) です。Tupni は、テスト入力のすべてのレコード シーケンスを特定しました。また、複数の WMF ファイルを集約することで、Tupni は、WMF のより完全な形式仕様を導き出すことができます。さらに、Tupni が提供する豊富な情報を使用して、以前のリバース エンジニアリング ツールでは不可能だったゼロデイ脆弱性シグネチャの生成を行うことで、Tupni の有用性を実証します。

于 2009-10-23T16:55:21.320 に答える
8

最近リリースした私自身のツール「iBored」は、この一部を実行できます。ファイルシステム形式(UDF、HFS、ISO9660、FATなど)を視覚化およびデバッグするためのツールを作成し、検索、コピー、さらには構造とテンプレートのサポートを実装しました。構造のサポートは非​​常に簡単で、テンプレートは構造を動的に識別する方法です。

すべてがVisualBASIC方言でプログラム可能であり、値のテスト、特定のブロックの読み取りなどを行うことができます。

このツールは無料で、すべてのプラットフォーム(Win、Mac、Linux)で動作しますが、共有するために公開したばかりの個人用ツールであるため、あまり文書化されていません。

ただし、試してみたい場合やフィードバックを提供したい場合は、さらに便利な機能を追加することもできます。

オープンソースでもいいのですが、REALbasicで書かれているので、そんなプロジェクトに多くの人が参加するのではないかと思います。

リンク:iBoredホームページ

于 2009-01-29T18:53:17.317 に答える
6

私は今でも時々、AXE (Advanced Hex Editor) と呼ばれる古い 16 進エディターを使用します。Googleはまだあなたのためにそれを見つけることができるはずですが、今ではインターネットからほとんど姿を消したようです. 私が知っている最後のバージョンはバージョン 3.4 でしたが、私は実際には個人使用無料のバージョン 2.1 しか使用していません。

その最も興味深い機能であり、さまざまなゲームやグラフィック形式を解読するために私が最もよく使用した機能は、そのグラフィカル ビュー モードです。これは基本的に、各バイトが色分けされたピクセルに変換されたファイルを表示するだけです。単純なことのように思えますが、これにより、私のリバース エンジニアリングの試みが非常に簡単になることがありました。

ただし、目視で行うことは、自動分析を行うこととはまったく逆であり、オフセットを見つけて追跡するためにグラフィカルモードはあまり役に立たないと思います...

後のバージョンには、ニーズに合うように思われるいくつかの機能 (スクリプト、規則性ファインダー、文法ジェネレーター) がありますが、それらがどれほど優れているかはわかりません。

于 2009-02-24T21:37:36.893 に答える
6

任意のバイナリ形式をフィールドに解析し、フィールドを参照するための Python ライブラリであるHachoirがあります。一般的なフォーマット用のパーサーがたくさんありますが、ファイル用に独自のパーサーを作成することもできます (たとえば、バイナリ ファイルを読み書きするコードを操作する場合、通常、最初に Hachoir パーサーを作成してデバッグ支援を行います)。しかし、プロジェクトは今ではほとんど活動していないようです。

于 2013-05-23T12:52:29.773 に答える
1

私のプロジェクトicebuddha.comは、python を使用してブラウザーでフォーマットを記述することでこれをサポートしています。

于 2013-01-26T22:03:18.203 に答える
0

同様の質問に対する私の答えのカットアンドペースト:

1 つのツールはWinOLS です。これは、車両エンジン管理コンピューターのバイナリ イメージ (主にルックアップ テーブル内の数値データ) を解釈および編集するために設計されています。さまざまなエンディアン形式 (PDP ではないと思いますが) をサポートし、さまざまな幅とオフセットでデータを表示し、配列領域 (マップ) を定義し、あらゆる種類のスケーリングとオフセット オプションを使用して 2D または 3D で視覚化します。また、ヒューリスティック/統計自動マップ ファインダーも備えているので、役に立つかもしれません。

これは商用ツールですが、無料のデモでは、変更をバイナリに保存し、不要なエンジン管理機能を使用する以外はすべて実行できます。

于 2011-12-07T07:27:10.347 に答える