1

DLL(Win32、ダイナミック)ファイルが挿入されないように保護する方法と、コンパイルされたコードのセキュリティを強化する方法について、いくつかのヒントを知りたいと思います。

  1. MySQLへの接続に使用されるDDLソースコードにはSQLパスワードがあります。それを残すのに十分安全ですか?
  2. 'ユーザー'がHEXコードを変更するのを防ぐ方法はありますか?私はソースコードからより多くを保護することを意味します。
  3. プロジェクトプロパティのどのオプションがDLLの最適化と保護に最適でしょうか?

MVSC ++2010Expressを使用しているImとユーザーへのソースコードは利用できません。

4

2 に答える 2

3

DLL を使用できるようにするには、読み取り可能である必要があります。つまり、ファイルを暗号化する場合は、使用する前に復号化する必要もあります。また、DLL が変更されていないことがわかるように DLL に署名することもできますが、それでもファイル自体のシンボルは隠されません。もう 1 つのアプローチは、コードを難読化して、ユーザーが理解するのが難しくなりますが、OS は簡単に実行できるようにすることです。これは、暗号化の弱い形式と考えてください。

具体的な回答:

  1. バイナリ ファイルにパスワードがある場合、それは安全ではありません。バイナリ ファイルの文字列を調べるだけで簡単に見つけることができます。

  2. ユーザーはいつでもファイルを変更できますが、改ざんされているかどうかを確実に知ることができる暗号スキームを使用してファイルに署名することができます。

  3. 私はその特定のツールを使用していませんが、本当のセキュリティを提供するものではないと確信しています.

ヒント: ソース コードに SQL DB パスワードを含める代わりに、コマンドを認証して処理するサーバーにコマンドを送信させることができます。そうすれば、ファイルに明示的なパスワードは必要ありません。

于 2012-08-25T08:01:48.583 に答える
1

ファイル全体を暗号化しない限り、DLL 内のすべてのリテラル文字列を読み取ることができます。パスワードをリテラル文字列として dll に保存しないでください。限目。また、アセンブリ コードは単なるデータであることを覚えておく必要があります。ファイルが書き込み可能であれば、Intel リファレンス シートと 16 進エディタ、または逆アセンブラとアセンブラがあれば、ファイルにアクセスできれば誰でも変更できます。いつでもソースを難読化できます。これにより、アセンブリが少し読みにくくなりますが、それでも完全に変更可能になります。

つまり、何をしても DLL を完全に保護することはできません。

于 2012-08-25T08:13:17.043 に答える