クラスライブラリを参照に追加

  • ソリューション エクスプローラーでプロジェクトの[参照設定]を右クリックし、[参照の追加(R)...]を選択します。
  • MA-Manager がインストールされているフォルダの、
    (例 C:\Program Files\COSMOSOFT\MA-Manager)
    CSM_Activation.DLL を参照してください。
  • [参照の追加(R)...]により追加されたファイルは、自動的にプロジェクトの bin フォルダ内にコピーさるので、手動でコピーする必要はありません。
  • ソースコードにディレクティブを追加してください。
    C# の場合 using CSM_Activation;
    VB の場合 Imports CSM_Activation
 

メソッドについて

  • CSM_Activation.DLL の真贋をチェック
/// パラメータ
/// string AppName アプリの略名(半角:英数4~16文字)
/// string AngoKey 暗号化/復号化用のキー(半角8文字)
/// string Password パスワード(半角:英数4~16文字)
/// 戻り値
/// 2 : アプリ略名の文字数が不正
/// 3 : 暗号化キーの文字数が不正
/// 4 : パスワードの文字数が不正
/// 5 以上の long 型数値は Password で変化
/// 注意事項
/// ※半角英数には一部の記号 ( ) = - _ も利用可能
/// Password の内容によって戻り値が変化するので、ブレークで確認して検証

///  
long ChkGenuineDLL(string AppName, string AngoKey, string Password)
   
  • レジストリからアクティベーションの状況を取得
/// パラメータ
/// string AppName アプリの略名(半角:英数4~16文字)
/// string AngoKey 暗号化/復号化用のキー(半角8文字)
/// 戻り値
/// 0 : 有効期間中
/// 1 : 有効期間外
/// 2 : アプリ略名の文字数が不正
/// 3 : 暗号化キーの文字数が不正
/// 4 : その他(致命的エラー発生)
/// 注意事項
/// ※半角英数には一部の記号 ( ) = - _ も利用可能
///

Int32 GetActivationRegistry(string AppName, string AngoKey)
   
  • アクティベーションの状態をレジストリに記録
/// パラメータ
/// string AppName アプリの略名(半角:英数4~16文字)
/// string AngoKey 暗号化/復号化用のキー(半角8文字)
/// 戻り値
/// 0 : 有効期間中
/// 1 : 有効期間外
/// 2 : アプリ略名の文字数が不正
/// 3 : 暗号化キーの文字数が不正
/// 4 : その他(致命的エラー発生)
/// 注意事項
/// ※半角英数には一部の記号 ( ) = - _ も利用可能
///

Int32 SetActivationRegistry(string AppName, string AngoKey)
 

全メソッドに共通の注意事項

  • 「アプリケーションの略名」と「暗号化/復号化用のキー」は、下記のダイアログで作成した内容です。
  • 「アプリケーションの略名」と「暗号化/復号化用のキー」は、全メソッドで同じでなければなりません。
  • 「アプリケーションの略名」と「暗号化/復号化用のキー」は、認証の運用開始後に変更できません。
  • クラスライブラリの真贋チェックにおける Password は、アプリケーションを改版する度に変更できます。(変更を推奨)
 

アプリケーションでメソッドを利用する手順

  1. Windows Form が Load される時点などで、「CSM_Activation.DLL の真贋をチェック」してください。
    long ChkGenuineDLL(string AppName, string AngoKey, string Password)
    メソッドの直後にブレークポイントを設置し、[戻り値]で検証してください。
    [戻り値]が不一致なら、アプリケーションを終了してください。
  2. Windows Form が Load される時点などで、「レジストリからアクティベーションの状況を取得」してください。
    Int32 GetActivationRegistry(string AppName, string AngoKey)
    【有効期間外】か【有効期間中】かよって、それぞれの動作を振り分けてください。
  3. ユーザーが認証を実施するためのイベントを設置し、「アクティベーションの状態をレジストリに記録」してください。
    Int32 SetActivationRegistry(string AppName, string AngoKey)
 

リバースエンジニアリングへの対策

  • アプリケーションによっては、リバースエンジニアリングでソースを解析される可能性がありますが、その完全な対策は殆ど無理です。
  • しかし違法行為を承知で、そうまでして認証の仕組みを『破る』ことにより、どれだけのメリットが得られるかは甚だ疑問です。
  • それでも若干の対策を施す場合は、バイナリーダンプしても「暗号化/復号化用のキー」が一塊の文字列として読み取れないようにしてください。