動的バイナリインストルメントンフレームワークピンへのPythonインターフェイス

StackOverflow https://stackoverflow.com/questions/4345243

質問

Pythonを使用して、バイナリファイルの分析に取り組んでいます。ダイナミック分析を行うためにデバッガーを使用しています(つまり、アプリケーションを実行し、ブレークポイントを使用してランタイムの実行を取得します)。ただし、バイナリインストゥルメンテーションフレームワークを使用できれば、結果を改善できます ピン. 。ピンはC ++で開発され、閉じたソース(DLLのみ)として提供されます。私たちは、Pintoolsが説明するものと呼ばれるものを書きます どこで何 私たちは傍受したいです。 Pythonを使用し続けるように、PythonにPINをポートしたいと思います。 「ctypes」とブーストパイソンを知っています。

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

したがって、Nut-N-Shellでは、フレームワークをピン留めするPythonインターフェイス(ラッパー)を作成したいと思います。

役に立ちましたか?

解決

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

他のヒント

私は最近これについて考えていましたが、私はそれを調べていませんが、私はこのような問題にアプローチします。初期化の時に、埋め込まれたPythonインタープリターを起動し、Pythonモジュールをインポートするピントールを書いてください。 Swigを使用して、使用するすべてのPIN API呼び出しのバインディングを生成することを検討します。その後、ピントールは、インポートされたPythonモジュールのハードコードされた関数を呼び出し、APIに呼び出しを発行して、より多くの関数を登録し、何でもします。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top