4

私がプレイするゲームでは、すべてのデータが .DAT ファイルに保存されます。ファイルを調査する際に、人々によっていくつかの作業が行われました既存のツールもいくつかありますが、現在の状態についてはわかりません。自分でデータを調べてみるのは楽しいと思いますが、ファイルを調べようとしたことはありません。

これに真っ先に飛び込む前に、データ抽出の目的でファイル形式を調べることについて知っておくべきことはありますか?

編集: ファイル形式の調査は興味深いように思われるため、非常に一般的なヒントをお願いします。ファイルXを取り上げて、それについて学ぶという問題にどのようにアプローチするかを学びたい.

4

5 に答える 5

8
  1. 行き過ぎる前に、16 進エディタが必要になることは間違いありません。メモ帳が使用しているフォント (またはテキスト エディター) で、大きな空のブロックではなく、生データを数値として表示できます。
  2. お持ちのアーカイブ エクストラクタ (zip、7z、rar、gz、tar など) で開いてみて、単に名前が変更されたファイル形式 (.PK3 など) であるかどうかを確認してください。
  3. ファイル内のどこかにある既知のファイル形式のヘッダーを探します。これは、データの特定の部分が保存されている場所を見つけるのに役立ちます (つまり、「IPNG」を検索して、その中にある (圧縮されていない) png ファイルを見つけます)。
  4. 特定のデータが格納されている場所を見つけた場合は、その場所と長さをメモし、ファイルの先頭近くにこれらの値のいずれかに等しい数値が見つかるかどうかを確認します。これは通常、実際のデータへのポインターとして機能します。データ。
  5. 場合によっては、特定の値が何を意味するかを推測または直観する必要があります。間違っている場合は、動き続けてください。あなたがそれについてできることはあまりありません。
  6. http://www.wotsit.orgは、.dat ファイル内のヘッダーを見つけるのに役立つ、既知のファイル タイプ形式に特に役立つことがわかりました。
于 2008-11-17T14:51:49.693 に答える
3

コンテンツをある程度制御できる場合に、未知のファイル形式を攻撃する最良の方法の1つは、差別化されたアプローチを取ることです。ファイルを保存し、小さな制御された変更を加えて、もう一度保存します。ファイルのバイナリ比較を実行して、違いを見つけます。できれば、挿入と削除を検出できるツールを使用します。暗号化されたファイルを扱っている場合、小さな変更が大きな違いを引き起こします。圧縮しただけの場合、違いはローカライズされません。また、ファイル形式が簡単な場合は、状態を変更するだけでファイルが変更されます。

于 2008-11-17T15:29:52.970 に答える
3

もう1つは、一般的な圧縮手法のいくつか、特にzipとgzipを調べて、それらの「署名」を学習することです。これらの形式のほとんどは「自己識別」であるため、解凍を開始すると、作業内容が理解できる形式であるかどうかを迅速に確認できます。

暗号化を除けば、アーカイブファイル形式は基本的にある種のインデックスメカニズム(ディレクトリまたはソート)であり、インデックス内のポインタを介してアーカイブ内からこれらの要素を見つける方法です。

標準の圧縮アルゴリズムが広く普及しているため、ほとんどの場合、これらのブロックがどこから始まるかを見つけて、インデックスまたは目次を探し出すことが重要です。

(ファイルシステムのように)インデックスがすべて1つの場所にあるものもあれば、アーカイブ内の各要素の前にID情報が表示されるものもあります。しかし、最終的には、あるブロックから別のブロックへのオフセットに関する情報、データ型に関する情報(たとえば、GIFファイルを格納している場合、GIFにも署名がある場合)などがあります。

これらは、ファイル内で探し出そうとしているパターンです。

どういうわけか、同じ形式を使用して2つのバージョンのデータを手に入れることができれば素晴らしいと思います。たとえば、ゲームでは、CDから初期バージョンを取得し、パッチを適用した新しいバージョンを取得できる場合があります。これらはあなたが探している情報を本当に強調することができます。

于 2008-11-17T15:34:06.393 に答える
3

あなたの担当者レベルを見ると、16 進数、エンディアン、さまざまなデータ型の表現などについての基本的な入門書は、少し余計だと思います。もちろん、データを 16 進数で表示できる優れたツールと、データの構造に関する複雑な仮定をテストするための簡単なスクリプトを作成する機能が不可欠です。これらはすべてあなたにとって明白なはずですが、おそらく他の誰かを助けるかもしれないので、私はそれらについて言及したいと思いました.

于 2008-11-17T15:07:35.217 に答える
3

最初にファイルをバックアップします。与えられるダメージの量を制限したら、Ed が提案したように周りをつつくだけです。

于 2008-11-17T15:00:27.227 に答える