1

たとえば、C64 から 2 つのディスク イメージがあります。

  • disk1 これはゲームで、スプラッシュ スクリーンと音楽で始まります。
  • diks2 これはデモであり、多くの曲と最初のディスクと同じ音楽が含まれています。

2 つの画像を Hex エディタで調べると、2 つのファイルのある時点で同じパターンのバイナリ シーケンスが表示される可能性はありますか? 同じように保管されますか?はいの場合、パターンに一致する正しいアプローチは何でしょうか?

(目標は、150k 以上のプログラム ファイルでその曲を検索し、どのディスクで使用されているかを確認することです)

4

1 に答える 1

1

残念ながら、答えは場合によるということです。ここでは、いくつかの依存関係について概説します。

  1. デモにはゲームのリッピングされた音楽が含まれていることが多く、新しいゲームにはデモの有名な音楽が含まれている場合があります。どちらの場合も、音楽は同じであり、音楽のプレーヤーも同じです。ほとんどの場合、プレーヤーは音楽自体の不可欠な部分であるためです。したがって、この基本的なケースでは、バイナリ データの同じシーケンスが使用され、ディスク上で何らかの形式で使用されます。
  2. デモでは、読み込みを高速化したり、小さなプログラムを作成したりするために、コンテンツを圧縮することがよくありました。その場合、バイナリ データのシーケンスは明らかに異なります。デモの開始時に、解凍による「ノイズ」、境界線の色の線、または画面上の文字の更新による「ノイズ」があるかどうかを確認できます。
  3. 一部の大規模なゲームでは、ロードされたコンテンツが圧縮されていました (GI Joe など)。次に、ディスク上のさまざまなシーケンス。クラックに使用される一部のメモリ ダンプ ツール (ISEPIC など) も、メモリ イメージを圧縮します。
  4. Bards Tale 2 などの一部のゲームでは、コンテンツが暗号化されていました。ゲームのロード ルーチンを分解するまではわかりません。

2~4の場合は希望なし。(あなたが見ているゲームやデモの正確な種類はわかりません。)

  1. さらに、ディスク イメージには特定のレイアウトがあります。http: //unusedino.de/ec64/technical/formats/d64.htmlを参照してください。この場合、同じバイト シーケンスがディスクの異なるセクターに分散されます。また、これらのセクターは順番どおりではなく、(実際には)ランダムではありません。探しているデータがディスク セクターよりも小さい (つまり 256 バイト未満) でない限り、シーケンスが同じトラックとセクターで同じシーケンスになる可能性はほとんどありません。そのため、ファイルが同じで、同じ順序でディスクにコピーされていない限り、異なるシーケンスが得られます。

ポイント 5 を与えると、たとえ圧縮や暗号化がなくても、シーケンスが同じ順序で見つからない可能性が非常に高いと言えます。

256 バイトのシーケンスのチャンクを探すことができます。しかし、音楽の始まりは異なる可能性があるため、セクターでさえ異なるデータを持つ可能性があります。たとえば、1 つのセクターにはオフセット 0 から始まる音楽が含まれ、もう 1 つのセクターにはオフセット 15 から始まる音楽が含まれているためです。

少なくとも、画像に保存されているファイルを確認する必要があります。ディスク イメージの FAT を簡単に解析して、ファイルを見つけることができます。ファイルは、一連のトラックとセクター番号です。それらをメモリにロードできます。次に、これらのファイルを比較します。ここでは、他のバイト配列内のバイト配列の一部を見つけるアルゴリズムを使用する必要があります。これは、デモの一部が音楽であり、ゲームのコードの一部である可能性があるためです。最新の標準ではデータが非常に小さいため、ブルートフォースが機能することさえあります。

  1. 一部のまれなゲームは、独自のディスク レイアウトを使用し、トラックとセクターをロードしただけでした。これらの場合、あなたは失われます。
于 2016-07-03T20:52:45.260 に答える