2012-05-07 5 views
0

"LoadLibrary(" file.dll ")"を使用するだけで、私が購入したDLLファイル(ソースコードなし)をアプリケーションにリンクしています。そして、一意のIDを取得する関数をインポートしますコンピュータのここで、ハッカーがこの関数の名前を検出し、同じ名前と同じ関数の名前を持つ新しいdllファイルを作成しているとしましょう。 彼の新しいDLLファイルが置き換えられます(彼のdllをディレクトリに置き換えて私のものに置き換えるだけです)。一意のIDの機能は利用できますが、何も返されません。だから私のアプリケーションは空白の一意のIDを取得し、ハッカーは私の手から抜け出しました。C++ \ DLL - DLLのなりすましを防ぐには?

どうすればいいのでしょうか?私のプロジェクトはC++でプログラミングされています。

ありがとうございます。

+0

マシンが妥協して誰かが任意のDLLを置き換えることができる場合、そのDLLを悪用するより価値のある方法が見つかるはずです。考えられる対策は、対策コードを置き換えることによって任意にバイパスされます。 –

答えて

0

このDLLのLIBを提供するDLLを取得する会社に問い合わせることができます。次に、このLIBに静的にリンクすることができます。これを行うと、ライブラリのコードはコードの一部となり、フッキングすることができます。

0

別の可能性(外部DLLの場合は本当に必要です):あなたは名前ではなくなく、序数によって関数をエクスポートするために、あなたのDLLプロバイダを説得しようとすることができます。これは、あいまいさによるセキュリティにつながります。これはフッキングや置換を防ぐものではありませんが、少なくともエクスポートされた機能を理解することは明らかではありません。 CreateMyFile(名前でエクスポートされた関数)ではなく、73(番号でエクスポートされた関数)に似ています。

関連する問題