パスワードやライセンス キー、または機密データを受け入れる機能を提供するライブラリを検討した場合、共有ライブラリと静的ライブラリの間にセキュリティの点で違いはありますか?
共有ライブラリで実行された呼び出しを「盗聴」することは可能ですか? または、元の共有ライブラリを偽の共有ライブラリに置き換え、そのライブラリへの関数呼び出しに渡されたすべての引数を「出力」しますか?
パスワードやライセンス キー、または機密データを受け入れる機能を提供するライブラリを検討した場合、共有ライブラリと静的ライブラリの間にセキュリティの点で違いはありますか?
共有ライブラリで実行された呼び出しを「盗聴」することは可能ですか? または、元の共有ライブラリを偽の共有ライブラリに置き換え、そのライブラリへの関数呼び出しに渡されたすべての引数を「出力」しますか?
実際、共有ライブラリを置き換えることは、キーを取得する簡単な方法です。ただし、ライブラリを静的にリンクするときに実行中のアプリケーションにブレークポイントを設定してキーを取得することも難しくありません。したがって、ライブラリ開発者として、この問題に対処する必要があります。この問題に対する適切な解決策はありません。キーの盗難に対抗し、ライブラリの「海賊版」バージョンを使用する方法は、主に非技術的です。ユーザーを追跡し、登録されていないユーザーへのサポートを拒否し、Web サイトの制限された領域を介して更新を提供します。
一般に、共有ライブラリを同じインターフェイスを提供する独自のバージョンに置き換えることは可能です。たとえば、Linux では LD_LIBRARY_PATH を設定して、ライブラリを探す場所を指定できます。Windows では、検索パスに DLL を配置できます。
ただし、それができれば、メイン プログラムもオリジナルの変更されたバージョンに置き換えることができるので、データの傍受の難しさ以外にセキュリティ上の違いはあまりありません。