EDITは:ユーザ定義/ライブラリ関数とコンパイル済みファイルを区別するにはどうすればよいですか?
私が欲しいのは静的にリンクされライブラリ関数とコンパイルされたファイル(例えばPEファイル)内のユーザー自己書かれたの機能を区別することです。
これを達成する方法は? (私はデータベースの比較を考えていますが、データベースは分かりません)
ちなみに、私はこの質問をする前にすでに知っていましたが、動的にリンクされたライブラリ関数のためのものです。テーブル(PEの)。
ライブラリ関数では、ライブラリで定義されているものを意味します(これは悪い名前です)。
ユーザー定義関数とは、個々のプログラマーが作成した関数を意味します。
この目標を達成するためのプログラム的な方法はありますか?
今、私はデータベースとバイナリを比較することを考えていますが、これまでのところデータベースはありません。
回答としてデータベースまたは別の方法をお勧めします。ありがとうございました。
IDAディスアセンブラには、この種の情報を判断しようとする「FLIRTシグネチャ」ファイルがあり、適度に成功しています。前にプログラムされているので、可能です。私はそれを行うには大規模な努力だと確信している、あなたは自分自身を生成するか、他人の署名を使用する必要があります。また、100%の成功率ではありません。*特に最適化されたファイル*の場合。ファイルが最適化されていれば、どの機能がライブラリのものなのかを正確に把握することは、ほとんど不可能です(IDAのような素敵なツールを使用しても)。デバッグビルドには – shelleybutterfly
を使用すると、より実現可能性があります。しかし、IDAがまだそれを行うことができない限り、あなたが自分のソリューションをここにロールしようとすると、長い道のりを歩むことになります。非常に不完全で、高度に最適化されたファイルでは100%にも達しません。 http://www.hex-rays.com/idapro/(デモバージョンの機能はどれくらいあるのか分かりませんが、少なくともアイデアを与える必要があります。 ) – shelleybutterfly
@shelleybutterfly実際には、この質問の私の目的は、IDAがこれをどのように達成するかを尋ねることです。 –