0

Python を使用して、バイナリ ファイルの分析に取り組んでいます。私はデバッガーを使用して動的分析を行っています (つまり、アプリケーションを実行し、ブレークポイントを使用してランタイム実行を取得します)。ただし、 PINなどのバイナリ インストルメンテーション フレームワークを使用できれば、結果を改善できます。PIN は C++ で開発され、クローズド ソース (dll のみ) として提供されます。PinTools と呼ばれるものを作成し、インターセプトする場所と対象を記述します。Python を引き続き使用できるように、PIN 機能を Python に移植したいと考えています。「ctypes」とboost-pythonを認識しています。

私の問題は、PIN を使用するために、pintool を作成し、Pin と pintool を使用してバイナリ実行可能ファイルを実行することです (JIT を使用してアプリケーションを実行するようなものです)。さて、ctypesなどを使用してPIN関数をインポートし、このpythonコードを使用してバイナリを動的に分析できるかどうかはわかりません。このタスクの進め方について、提案やガイドラインを教えてください。

そこで、基本的に、PIN フレームワークへの Python インターフェイス (ラッパー) を作成したいと思います。

4

2 に答える 2

3

ProcessTap プロジェクトをチェックしてください。探しているものを正確に実装しているようです: http://code.google.com/p/processtap/

于 2011-03-20T06:24:03.127 に答える
0

私は最近これについて考えていましたが、私はそれを調べていませんでしたが、次のような問題に取り組みます: 初期化時に組み込みの python インタープリターを開始し、python モジュールをインポートする pintool を作成します。SWIG を使用して、使用するすべての PIN API 呼び出しのバインディングを生成することを検討します。次に、ピンツールは、インポートされた python モジュールでハードコードされた関数を呼び出します。この関数は、API への呼び出しを発行して、より多くの関数を登録し、やりたいことを何でも実行します。

コールバックがどのように機能するかわかりません。SWIG について十分に知りません。また、計測しようとしているプログラム自体が Python を使用している場合、これは失敗する可能性があります。しかし、それが私がこの問題を解決しようとする方法です。

于 2010-12-03T15:08:13.870 に答える