2011-01-22 20 views
2

libに私はいくつかの逆アセンブルLIBS oを知っているが、私が探しているようなAPIを有するものである。x86またはx64の逆アセンブラは

void * findAddrOfFirstInstructionStartingFrom(void * startAddress , InstructionType instruction); 

void* addr = findAddrOfFirstInstructionStartingFrom(startAddress , JMP); 

と、特定のものではないため、検索のように、この1にsmilerその他のAPIあなたがすべてではなく特定のものを見つけたいだけなら、遅くなるので、アドレスからの指示をすべて解読し、あらゆる種類の情報を入手してください。

plsがわかっている場合は、私に教えてください。plsがない場合は、オープンソースであり、簡単に修正することができます。

答えて

2

あなたはタグ付けもプロセッサーアーキテクチャも伝えていないので、本当の答えを得ることはまずありません。

一般的に、ネイティブコード命令は、受け取るオペランドに応じて非常に異なる長さであるため、検索する前に逆アセンブルする必要があります。それ以外の場合は、検索する命令のパターンに一致する最初のバイトシーケンスを見つけるだけです。ほとんどの場合、実際の命令ではなく、以前の命令のオペランドの一部です。

編集:タイトルを更新したので、BorgPEDasmという選択肢はオープンソースだと思う。そのオープンソースのものをドロップすれば、間違いなくIDAプロになります。

+0

void * addr = findAddrOfFirstInstructionStartingFrom(startAddress、JMP); 命令と一致する最初のバイト列の検索を意​​味するわけではありません。そのアドレスから始まるすべての命令を逆アセンブルしますが、命令ごとに複雑な情報構造を生成しません。その命令のjmp addrのような情報を生成します。 –

+0

分解には他の困難も伴う。私が追加した2つのリンクを考えてみましょう。 –

1

私はこれを行うことができます任意のAPIを認識していないんだけど、それはいくつかのコマンドラインスクリプトを使用して達成することができます。

だから、
objdump -d --start-address address file | grep -m 1 instruction | cut -d : -f 1 

は、例えば、アドレス0x08048664から始まる最初のJMP命令を見つけるためにファイルa.outは、あなたがこれを行うことができます:あなたはおそらくしたいことはただのライブラリではなく、いくつかの逆アセンブラ枠組み

$ objdump -d --start-address 0x08048664 a.out | grep -m 1 jmp | cut -d : -f 1 
8048675 
+0

beaEngine http://www.beaengine.org/index.php?option=com_content&view=article&id=10&Itemid=11がありますが、それは愚かな情報suportで開始アドレスからすべての命令を逆アセンブルすることだけをサポートしています。 –

1

。私がvoid * findAddrOfFirstInstructionStartingFrom(void * startAddress、InstructionType instruction)と言ったときに、汎用スクリプトインターフェイス(および逆アセンブラAPI)を提供するIDA-Proを見てください。

+0

私は何か無料またはオープンソースを探しています.IDA逆アセンブラAPIについては何も見つかりません –

+0

@ neo_x3m:IDAに対応するOSSはありません。とにかく、IDAのスクリプティングと拡張については、http://www.hex-rays.com/idapro/idaclike.htmとhttp://www.hex-rays.com/idapro/idaplugin.htmを参照してください。おそらく@ジョブは言った。 BTW:そのようなAPIは、逆アセンブルされたバイナリの部分を扱うためにCのポインタでは動作しません。ポインタの算術が保存されていれば、Cポインタは非常に抽象的なオブジェクトであり、その値は整数にキャストされたものであれば、その値はoff_tなどの非ポインタ型を使用します。 – datenwolf

+0

私は同意する、それは良い選択です。 –