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