バイナリファイルがあります。私はそれがどのようにフォーマットされているかわかりません、私はそれがデルファイコードから来ていることを知っているだけです。
バイナリファイルを分析する方法はありますか?
未知の形式のファイルのバイナリコンテンツを分析および逆シリアル化するための「パターン」は存在しますか?
バイナリファイルがあります。私はそれがどのようにフォーマットされているかわかりません、私はそれがデルファイコードから来ていることを知っているだけです。
バイナリファイルを分析する方法はありますか?
未知の形式のファイルのバイナリコンテンツを分析および逆シリアル化するための「パターン」は存在しますか?
これらを試してください:
私の趣味のプロジェクトでは、いくつかの古いゲームファイルをリバースエンジニアリングする必要がありました。私のアプローチは次のとおりです。
Hexinator(Window&Linux)とSynalyze Itを開発しました!(macOS)まさにこの目的のために。これらのアプリケーションを使用すると、他の16進エディタと同じようにバイナリファイルを表示できますが、さらに、バイナリファイル形式の詳細を使用して「文法」を作成できます。文法にはすべての構成要素が含まれており、ファイルを自動的に解析するために使用されます。
したがって、分析で得た知識を保持し、それを複数のファイルに同時に適用できます。16進エディタで簡単に概要を把握するために、ファイル形式の一部を色分けすることもできます。
解析結果はツリービューに表示され、ファイルを簡単に変更することもできます(エンディアンなどを適用します)。
バイナリファイルが何を表しているのかがわかっている場合は、バイナリファイルをリバースエンジニアリングするのは非常に時間のかかるプロセスです。それが何であるかわからない場合、それはさらに困難になります。
それは可能ですが、そうするためのかなりの理由が必要です。
最初のステップは、選択した16進エディターでそれを開き、ファイルが表すことになっている方向を示す英語のテキストが見つかるかどうかを確認することです。そこから、グーグルの「リバースエンジニアリングバイナリファイル」には、それについてのガイドを書いた私よりもはるかに知識のある人々がいます。
GNUbinutilsの「strings」プログラムは非常に便利です。印刷可能な文字列をファイルに印刷し、ファイルに含まれている内容やプログラムの機能の手がかりを与えることがよくあります。
データがシリアル化されたDelphiオブジェクトを表す場合は、Delphiのシリアル化プロセスについて読み始める必要があります。その場合は、Delphiを使用してロードし、IDEから分析を続行するのが最善の策だと思います。Delphiのシリアル化に関するいくつかの情報は、ここにあります。
編集:ファイルにシリアル化されたdelphiオブジェクトが含まれている場合は、それをロードする小さなdelphiプログラムを作成し、データをxmlなどの中立的なものに「変換」する必要があります。これを行うことができた場合は、delphiがxmlへのシリアル化をサポートしているかどうかを確認する必要があります。次に、任意の言語からこれらのオブジェクトにアクセスできます。
ファイルを作成するアプリケーションにアクセスできる場合は、アプリケーションに変更を適用してから、ファイルを保存して効果を確認できます(数字はおそらくリトルエンディアンで保存されることに注意してください)。
上記の手順で作成した仮説をテストするには、ファイルの1つを編集して、アプリケーションに読み取らせます。
アプリケーション自体にアクセスできない場合は、それを忘れて、問題を解決する別の方法を見つけることをお勧めします。それがより速くなる可能性が非常に高いです...
UNIXの「file」コマンドは本当に便利です-Windowsにそのようなものがあるかどうかはわかりません。次のように実行します。
file myfile.ext
そして、そこに含まれる魔法の数字とデータに基づいてテキストの説明を吐き出します。
おそらくそれはcygwinに含まれています。
file
意味のある答えが得られない場合は、Marco PontelloによるTRiDを試して、データが既知の形式で保存されているかどうかを確認することをお勧めします。
それを使用するプログラムを知っていますか?もしそうなら、あなたはそのプログラムがファイル関数に書き込むことをフックして、それがどのデータを書き込んでいるか、データのサイズと場所のアイデアを得ることができます。
詳細: http: //www.codeproject.com/KB/DLL/Win32APIHooking_Trouble.aspx
Delphiアプリケーションを入手して、IDA Proフリーウェアバージョンで開き、ファイルが書き込まれる場所を見つけて、その方法でファイルを書き込む方法をデコードします。
計画テキストでない限り。
ファイルの生の16進バイトのみを表示する従来の16進エディターとは異なり、010エディターはバイナリテンプレートを使用してファイルを階層構造に解析することもできます。バイナリテンプレートを実行した結果は、生の16進バイトだけを使用するよりもはるかに理解と編集が容易です。
16進エディタで開いて分析してみてください。