2016-07-05 4 views
0

タイトルの通り、私は、この手順が「良い」ということに興味があります。プログラムの試用版を作成して、一定時間実行してその有効期限。また、典型的なユーザーは特別な "コンピュータリテラシー"な人ではありません - 私はこれが重要な前提だと思います。アマチュアコードの保護手続き

だから、ここ擬似コードです:プログラムのインストール時

at program installation: 

    write encrypted (time_left = infinity) to registry 

at every program run: 

    calculate time_left = licence_limit_time - current_time 
    (if registry.time_left doesnt extst) 
     abort program 
    (else) 
     (if time_left >= registry.time_left) 
      abort program 
     (else) 
      write time_left to registry 

最初のステップは、レジストリキーの削除が使用できないプログラムが得られることを保証します。

この手順のポイントは、システムタイムを変更するだけで、ユーザーには免疫力がなければならないということです。

ご意見やご提案は大歓迎です。

編集:また、プログラムがコンパイルされていることが前提です。

+0

ユーザーがインターネットに接続しているときのオンライン日付を確認してください –

+0

Lorenzo、私はすでにそれを考えていましたが、 "インターネットに依存しない"アプローチが成功すれば実装する予定です。 –

+0

コンピュータで無防備な人がレジストリキーを削除できる場合は、レジストリキーをコピーして後で値をコピーすることができるはずです(暗号化コミュニティではリプレイ攻撃と呼ばれます)。 –

答えて

0

time_left >= registry.time_leftのポイントがわかりません。 time_leftを計算することができれば、そのレジストリコピーは必要ありません。レジストリコピーを信頼する場合は、計算する必要はありません。どちらも本当に何も改善しません。

特に、レジストリキーと日付をロールバックすると、保護が回避されます。

それは答えでした。ここにはアイデアの解説があります:

現実的には、DRMを実装しようとしています。すべてのケースでうまくいくことは何もできません。決められた人を何時間も遅らせることができます。あなたの時間はおそらく、最も簡単で簡単な保護(日付に対するチェック)を実装し、代わりに製品を改善するのに費やされた方がよいでしょう。

+0

返事をありがとう。 time_left> = registry.time_leftの目的は、システム時刻が以前の日付に設定されているかどうかを確認することでした。これは、通常の時刻の流れと矛盾するためです。私はあなたの要点を見ていますが、単純にシステム時間を変更することはできません。 (もちろん、インターネットの日付と時刻を除いて) –

+0

何らかの外部プロセス(インターネット、デバイスなど)なし - いいえ。ユーザーが提供するものに悩まされています。あなたができる最善の方法は、ある時間間隔で時間を節約し、それが過去に逆戻りするかどうかを確認することです。しかし、それは回避することも簡単です - 誰かがそのデータを削除することができます。または、壁時計に対してモノトニックタイマを監視するプログラムを実行します。しかし、それを回避するには、そのプログラムを強制終了する必要があります。 – viraptor