人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ヘッダファイルやソースコードのないdllのバイナリからヘッダ情報を引き出せるツールってありますか?
(もしくは不可能でしたらその解説をしていただけますでしょうか。)
OSはwindows xp proです。

●質問者: anonymouspage
●カテゴリ:コンピュータ
✍キーワード:DLL OS Windows XP ソースコード バイナリ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● virus
●20ポイント

http://www.vector.co.jp/vpack/filearea/win/prog/asm/index.html

Download: Windows > プログラミング > アセンブラ・逆アセンブラ

C/C++ を前提で書きますが、他の言語でも似たようなもの(or そもそもヘッダーファイルなどない)です(^^ゞ

オリジナルの、と言う意味では不可能です。

ヘッダーファイルには一般的に多くの定数定義がありますが、バイナリになってしまえば定数は単なる数値ですから、機械的に推測することは不可能です。

ただ、限定的な意味で関数定義などを再現することは、逆アセンブラ、逆コンパイラなどを使えば完全ではないですが可能です。

◎質問者からの返答

なるほど。そのdllについて、関数のマニュアルは持っていまして、そこで使われている変数の型が何かがわかればそれでいいのですが、その程度なら何か方法はあるかもしれない・・・? マニュアルで関数の引数として”hogeU32 variable”などと書いてあるのはU32だなとすぐわかるのですが、そうじゃないのもあるもので・・・(説明が意味不明でしたらどなたか突っ込んでいただければ幸いです・・・)


2 ● kanata_ail
●20ポイント

http://www.borland.co.jp/qanda/lang/l0003027.html

Borland Answers - Borland Answers

ボーランド製品は .DLL から .LIB ファイルを作成するため,「IMPLIB」というユーティリティー・プログラムを提供しています。このツールを「大/小文字を区別する」ために, -c オプションを付けて,.LIB ファイルを生成します。この過程で,.LIB ファイルをブラウズし,関数名を探すことができます。

◎質問者からの返答

もしコンパイラがVisual C++だったならこっち(http://support.microsoft.com/kb/q131313/)ということでしょうか。よく読んでみます。


3 ● virus
●100ポイント

http://www.hatena.ne.jp/1119424323

人力検索はてな - ヘッダファイルやソースコードのないdllのバイナリからヘッダ情報を引き出せるツールってありますか? (もしくは不可能でしたらその解説をしていただけますでしょうか。) OS..

二回目なのでこれで最後です。ポイントも不要です(^^ゞ

IMPLIBにしてもそうですが、わかるのはあくまでも関数名だけです。C++の場合、たとえばC++としてexportしている場合は引数の型なども関数名に記号化されて含まれてますので、その記号解釈のルールを適用すれば、ある程度引数まで含めた関数定義を再現することは可能です。ただし下記の問題はこの場合のも当てはまりますので完全には行きません。

そしてCとしてexportされている場合は関数名しかわかりませんので引数等も再現出来ません。

逆コンパイラなどは呼び出し形式からある程度引数の型を推測しますが、基本的には下記と同様の問題があるので完全には行きません。

関数の説明書があるとのことですが、それにどの程度書かれているのかにもよりますが、型が単に「hogeU32」等の名前しか示されておらず、しかもそれが一般的な名称でないならヘッダーファイルを推測することは難しいです。あくまでもプログラム的に整合性のある定義を再現するのが限界です。

と言うのは、元のヘッダーで


typedef long hogeU32;


と定義されていたものと、


typedef struct { short aa, bb; } hogeU32S;


と定義されていたものは、見かけ上は同じ32ビット値ですが定義も異なれば意味も違いますね。でも値としてやり取りするのは32ビットの数値でしかありませんから、どちらの定義を使おうと実際のコードの見かけは変わりません。

この同じ見かけのバイナリから、上記の二つ(あるいはそれ以外にも無限に可能性は考えられますね)のどちらであるかを決定するのは不可能です。

つまり説明書の記述以上のものを再現するのはかなり難しいと考えざるを得ないでしょう。

◎質問者からの返答

なるほど、ようやく理解してきました。無知でお恥ずかしい限りです。ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ