2017-09-11 4 views
-1

ソースコードのないDLLがあります。私は、特定のプログラム(再びバイナリファイル、ソースコードなし)がこのDLLを実行してタスクを実行することを知っています。私はすでにDependency Walker(depends.exe)でこのDLLを見て、関数の名前を見ました。ここでは、プログラムによって特定の関数に送信されるパラメータを確認したいと思います。出来ますか?ソースコードのないDLL関数のパラメータのデバッグ

答えて

0

あなたはネイティブDLLについて話していると思いますか?もしそうなら、答えはおそらくです。

DLLがC++ネームマングリングを使用してコンパイルされた場合、元のプロトタイプを元に戻すことができます。関数名がFooではなく?_Foo @ ADBDEのように見える場合、それらは装飾されます。依存関係ウォーカーでは、 "Undecorate C++ Functions"コマンドを使用します。

それ以外の場合は、関数のモジュールアドレスを取得し、逆アセンブラを使用して、使用されているパラメータとその動作を調べる必要があります。これは非常に不満で時間のかかる作業です。

+0

私はそれらをデコレートした後、関数名とそのパラメータを見ることができます。事は、私が "実行中の"関数に送られるものを見たいということです。このDLL関数の呼び出しとそれが受け取るものについての洞察を得たいと思います。 – Jacek

+1

@Jacekそれはずっと複雑です。私はあなたが一度アプリケーションによってロードされたDLLにデバッガを接続して、ブレークポイントを関数アドレスに設定しなければならないと思います。あなたはまだデバッグ情報なしでアセンブラを得るだけです。スタックトレースはありますが、アドレスのリストに過ぎません。 x86のパラメータを理解し、C++でどのように適用するのかは難しいでしょう。 関数とそのパラメータがある場合は、テスト値を発射してどのような結果が出るのかを見ておく価値があります。あなたは何が送られているのか考えなければなりませんか? – Strangebreed

関連する問題