2

特定の .dll/.so/.dylib を使用するために必要な C++ ヘッダー ファイルを再作成することは可能ですか?

もしそうなら、どうやってそれを行うつもりですか?

4

3 に答える 3

2

一般的に、いいえ。ヘッダー ファイルには、動的ライブラリでは利用できない多くの情報 (構造レイアウト、数値定数など) があります。

ライブラリが「装飾された」C++ 関数名をエクスポートする場合、一部の関数パラメーター情報を回復できる場合があります。ただし、それでも、有用なヘッダー ファイルを再構築するのに十分な情報を取得することはできません。

ライブラリが装飾されていない名前を ( でextern "C") エクスポートする場合、ほとんど運がありません。その時点で知っているのは関数名だけです。

于 2010-08-09T04:01:57.973 に答える
1

これはリバース エンジニアリングと呼ばれ、それ自体は簡単な作業ではありません。関数名とパラメーターを取得するのは、C++ の名前マングリングにより簡単ですが、ライブラリで使用される列挙、定数、#define などの他のデータを回復するのは少し手間がかかります。そのデータはライブラリのアセンブリに埋め込まれます。

于 2010-08-09T04:02:30.610 に答える
0

Matias の回答をさらに発展させるために、リバース エンジニアリングにはいくつかの異なるトピックの知識が必要です。手始めに、少なくとも基本的な組み立ては必須です。やっていることの複雑さに応じて、ますます学ぶ必要がありますが、少なくとも言語の基本を理解する必要があります。2 つ目はデバッグです。さまざまな支援ツールがありますが、おそらく Windows で最も有名なのは OllyDBG で、Linux では EDB や Evan のデバッガーが好きです。最後に必要なのは、IDA Pro などの優れた逆アセンブラーです (高価ですが、無料のバージョンがあると思います)。リバース エンジニアリングに本当に興味がある場合は、リバース エンジニアリングについて学べる本やオンライン リソースがたくさんあります。幸運を!

于 2012-01-18T06:17:03.090 に答える