WindowsでMinGW gccを使用してdllを構築しました。.def を使用して、エクスポートされた関数を指定し、.lib インポート ライブラリを生成しました。次に、strip.exe を使用してシンボル テーブルを削除しました。objdump を試したところ、空のシンボル テーブルが出力されました。しかし、strings.exe を使用すると、一連の関数名とクラス名を出力できます。これは問題ですか?他の人は、dll の名前に従って関数を照会できますか?
質問する
2804 次
2 に答える
3
PE について読んでください。アドレスと名前のテーブルがあります。名前テーブルをクリーンアップすると、プロセスはエクスポートされた関数を名前で見つけることができなくなり、アドレスだけで見つけることができなくなります。これはリンカーによって行われますが、動的には行われません: http://msdn.microsoft.com/en-us/magazine/cc301808. aspx
dll からエクスポートされた関数を保護する方法は多数ありますが、それらのすべてにエクスプロイトが公開されています。関数を本当に保護したい場合は、エクスポートされたすべての関数でカスタム呼び出し規約または署名検証を作成します。
于 2013-10-05T02:29:02.110 に答える