1

単純なプロダクト キー ライブラリの場合、特定の日付が経過したかどうかを確実に確認する必要があります。
システムクロックはユーザーが簡単に変更できるため、システムクロックをチェックするよりも少し簡単なことをしたいと思います。

これを行う標準的な方法は何ですか?

誰かが提案した 1 つの方法は、チェックした日付の後に変更されたファイルがあるかどうかをチェックすることです。これは良さそうですが、どのファイルを確認すればよいでしょうか? 明らかに、ユーザーのディスクを無作為にスイープしたくはありません。

編集- ネットワークベースのソリューションは避けたいです。

4

7 に答える 7

2

行間を読んでいます。「試用ソフト」版を作りたいと思います。特に「クラッキング」について言及しているので。

「試用期間」の日付について私が想像できる最善の非ネットワーク ソリューションは、絶対的な日付が過ぎていくのを気にせず、代わりに 1 日カウントダウンを実装することです。ユーザーが CMOS/BIOS の日付/時刻を変更して何日も失敗したとしても、最後に起動したときの日付と時刻、およびシステム ティック カウントを保存し、次に起動したときは保存できます。日付が1日未満のわずかな時間だけ進む以外のことをしたように見える場合は、「試用期間の残り日数」カウンターを減らします. アプリケーションがアクティブだった時間をカウントし、それをカウントダウンすることもできます。アプリをネットワークから遠ざけ、クロックをロールバックすることで、誰かが試用版の有効期間を無期限に延長することができます。

おそらく、アプリケーションで使用されるアクティブな時間を、日付よりもはるかに正確にロックダウンする方法を思い付くことができるでしょう。

実際、ソフトウェアの「試用版」を検討している場合は、「30 日間」ではなく「xx 時間の試用期間」をユーザーに与えることを検討してみてはいかがでしょうか。30 日が経過しても、ユーザーが日付/時刻をいじって延長しない場合、ソフトウェアを使用する前に試用期間が切れてしまい、売り上げを失う可能性があります。

Google のスケッチアップ プロは「時間のカウントダウン」手法を使用しており、評価がはるかに簡単であることがわかりました。

別の質問に対するこの回答は、私が見た中で最高のものだと思います: 事前定義された試用期間 (評価期間) でのみ機能するプログラムを作成する最良の方法は何ですか?

本当の答えは、「あなたにできることは何でも、打ち負かしてクラックしようとする人がたくさんいる」ということです。真剣に。暗号化と難読化にどのくらいの時間を費やしたいですか? そんなんじゃ稼げないよ。

于 2010-07-19T14:30:13.177 に答える
1

変更可能な日付のチェックを OS に依存している-->すでにゲームに負けている

どんな方法でも壊れる可能性があり、失われた位置からのスタートで怪我に侮辱を加える. 外部ネットワーク ベースは賢明な選択ですが、それでも阻止される可能性があります。

ご質問のキーワードは

信頼性のある

簡単な答えはNOです。四角いペグを丸い穴に打ち込む意味はありません。

編集 1: 弱い解決策

わかりました、これはほとんど負け戦であることを理解していますが、ここで非常に弱い解決策を主張する場合は、1 つの可能性があります。

時間は上向きにのみ増加することがわかっているため、この仮定に基づいて、これが「テスト」になる可能性があります。このルールに違反すると、誰かが時間を改ざんしていると見なされ、このケースをブロックできます。

(1) アプリケーションの初回実行時に、現在の日付 (タイムスタンプ) で暗号化されたファイルを作成します。

(2) アプリケーションを起動するたびに、まずこのファイルをチェックし、OS から現在時刻を確認します。

(3) 私たちの基本的な仮定から、現在の時刻は保存された時刻よりも常に大きいと予想する必要があります。そうである場合、OS 時刻が「信頼できる」ものであると仮定することはほとんどできません。

(3) 現在の時刻が保存された時刻よりも小さい場合、何者かが OS の時刻を改ざんしている -> 悪者。

(5) 終了時に現在時刻を暗号化します。

(6) 暗号化されたファイルが欠落している場合は、悪者も想定します。

于 2010-07-19T10:55:32.207 に答える
0

会社のntpサーバーにクエリを実行できます。もちろん、ユーザーはntpサーバーをファイアウォールで保護して存在しない可能性があるため、厳格なセキュリティポリシーを使用しているユーザー、またはライセンス技術を回避しようとしているユーザーをサポートするために、どの程度の作業を行うかを決定する必要があります。

于 2010-07-19T10:17:59.707 に答える
0

時計を確認できますが、他のチェックで取得した最新の日付をレジストリに保存することもできます。そうすれば、ユーザーが一度プログラムを非アクティブ化すると、再度アクティブ化することはできなくなります。私が見ることができる唯一の代替手段は、ある種のインターネットサービスに問い合わせて時間を取得することですが、それは良くありません.

于 2010-07-19T10:27:37.070 に答える
0

公開されている任意の Web サーバー (www.com など) をリクエストして、応答ヘッダーから日付を取得できます。

于 2010-07-19T10:28:32.337 に答える
-1

試用版のシナリオの場合は、ユーザーが特定の回数だけアプリケーションを使用できるようにすることができます。

于 2010-07-19T10:29:46.613 に答える
-2

ネットワークベースのソリューションがないということで、shooshが何を意味するのかわかりません。任意の場所の日付と時刻を取得できる Web サービスがあります。

EarthTools

アプリケーションは、アプリケーションのインストール時と開始時に、作成者の場所で日付と時刻を取得できます。

EarthTools では、1 秒間に複数のリクエストを送信しないように求めていますが、これはほとんどの目的に適しています。

ニューヨークのクエリの例: http://www.earthtools.org/timezone/40.71417/-74.00639

応答の例を次に示します。

<?xml version="1.0" encoding="ISO-8859-1" ?>
<timezone xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://www.earthtools.org/timezone.xsd">
    <version>1.1</version>
    <location>
        <latitude>40.71417</latitude>
        <longitude>-74.00639</longitude>
    </location>
    <offset>-5</offset>
    <suffix>R</suffix>
    <localtime>4 Dec 2005 12:06:56</localtime>
    <isotime>2005-12-04 12:06:56 -0500</isotime>
    <utctime>2005-12-04 17:06:56</utctime>
    <dst>False</dst>
</timezone>
于 2010-07-19T13:36:33.967 に答える