7

バイナリ(正確にはWindows exe)を逆アセンブルし、そのコードを分析するpythonスクリプトを作成しようとしています。特定のバッファーを取得し、その中の命令に関する情報を含むある種の構造体を抽出する機能が必要です。

以前に C で libdisasm を使用したことがありますが、そのインターフェイスは非常に直感的で快適であることがわかりました。問題は、その Python インターフェイスが SWIG を介してのみ利用可能であり、Windows で適切にコンパイルできないことです。

可用性の面では、diStorm はすぐに使える優れたインターフェイスを提供しますが、各命令のニーモニックのみを提供し、命令の種類とそうでないものを定義する列挙を含むバイナリ構造体は提供しません。これは私の目的にとっては非常に不快であり、私のニーズに合うようにインターフェイスをラップするのに多くの時間を費やす必要があります。

BeaEngine も調べました。これは、実際に必要な出力 (各命令に関するバイナリ情報を含む構造体) を提供しますが、そのインターフェイスは非常に奇妙で直感に反しており、間違った引数を指定するとすぐにクラッシュします。CTypes の一種の究極の死からあなたの Python へのクラッシュ。

そのため、djgcc や mingw をいじって SWIGed libdisasm を作成したり、diStorm の OOP ラッパーを作成したりするよりも少し時間がかかる他のソリューションについて聞いてみたいと思います。SWIGed libdisasm をコンパイルする方法、またはコンパイルされたバイナリ (pyd または dll+py) をコンパイルする方法について誰かがガイダンスを持っている場合は、ぜひ聞いてください。:)

ありがとうございます。

4

4 に答える 4

2

Pym のオンライン逆アセンブラーのバックエンドでもあるPym の逆アセンブリ ライブラリを参照することをお勧めします。

于 2010-05-11T10:12:42.067 に答える
2

SWIG レイヤーを経由する代わりに、 ctypesを使用して libdisasm と直接やり取りしてみてください。開発にはさらに時間がかかるかもしれませんが、ctypes を使用して基礎となる機能にアクセスできるはずです。

于 2010-02-07T18:35:21.343 に答える
1

distorm ライブラリを使用できます: https://code.google.com/p/distorm/

ここに別のビルドがあります: http://breakingcode.wordpress.com/2009/08/31/using-distorm-with-python-2-6-and-python-3-x-revisited/

BeaEngine もあります: http://www.beaengine.org/

BeaEngine の Windows インストーラーは次のとおりです: http://breakingcode.wordpress.com/2012/04/08/quickpost-installer-for-beaenginepython/

于 2012-04-08T19:58:57.490 に答える