2013-03-01 24 views
6

dllをC++コードに戻すことは不可能なので、できるだけ詳細を収集したいと思います。 これは私のdllではないので、もちろんソースコードはありません。どのプログラムを使うべきですか?DLLをC++コードに戻す方法は?

+1

人気のバイナリリバースエンジニアリングツールはIDA Proです。最も基本的なニーズを満たす無料のバージョンがあります。 – datenwolf

+2

DLLの機能を理解していますか?どれくらいの大きさですか?もともとどの言語が書かれていたか知っていますか?実際に何を達成しようとしていますか? –

+1

タグに「キーフレーズ」を追加しました。彼らを見上げて。 –

答えて

12

もしあなたが熟練すれば、DLLを逆アセンブルして、そのすべての機能を理解することができます。これにはかなりの時間がかかりますが、そうした場合は手作業で元に戻すことができます。

それ以外の場合は、Dependency Walkerなどのツールを使用して、依存するDLLと関数、およびその関数がエクスポートする関数を取得できます。そこからあなたに興味のある関数を見つけ、IDAのような逆アセンブラを使って自分が何をしているのかを知ることができます。

+3

誰も手を差し伸べる時間が長すぎる愚かな人を除いて、誰も*すべてを逆転させることはありません。あなたはいつもIDAのようなものに行き、興味のあるコールパスに従います。また、IDA自体で輸出を見ることができます。仲介者の必要はありません。 +1 still – 0xC0000022L

+2

誰もIDAを持っていない、またはそれを学びたいだから、私は有用な情報を得るための非常に簡単な方法としてDependency Walkerを提案します。 (もちろん、あなたがIDAの方がいいのであれば、もちろんそこにすべてをすることもできます:) – nneonneo

1

PEファイルビューアが必要です。これはDLLからのエクスポートを指示し、.textセクションのデータを取得してマシンコードを表示することができます。

2

エクスポートされた機能のリストは、dumpbinツールを使用して確認できます。 C++関数がエクスポートされた場合、名前のmanglingによってパラメータを推測することができます。

Visual Studioでリソースを表示するファイルとして「開く」だけで、すべてのリソースをDLLから抽出できます。 DLLがCOMベースのDLLの場合、その内部にリソースとして型ライブラリが埋め込まれている可能性があります。また、タイプライブラリがあれば、それをインポートしてパブリックインターフェイスのヘッダファイルを再構築することができます。

これは、それが得られるほど良いことです。

+1

私はそれが得られるほど良いとは反対です。 nneonneoの答えを見てください。 – JBentley

関連する問題