首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VC6/MFC 軟體試用期限制:防止修改系統時間破解

     編輯:程式設計綜合問答

需求

VC6 開發軟體交付公司,需限制試用 3 個月。但使用者可修改系統時間繼續使用,詢問是否需讀取網路時間,以及離線情況下如何處理。

解決思路

  1. 記錄最後執行時間:每次啟動將當前系統時間寫入註冊表或加密檔案。
  2. 單向時間檢查:下次啟動時,要求系統時間 大於等於 上次記錄時間。若偵測到時間倒退,拒絕執行或提示授權異常。
  3. 離線容忍機制:允許無網路環境下運行,但依賴本地時間單調遞增特性防止倒退。
  4. 可選:網路時間校準:若有網路,啟動時向 NTP 伺服器請求時間,比對本地時間,發現大幅偏移則警告/鎖定。

程式碼概念 (MFC)

// 啟動時
CTime lastRun = GetLastRunTimeFromRegistry();
CTime now = CTime::GetCurrentTime();
if (now < lastRun) {
    AfxMessageBox(_T("系統時間異常,軟體鎖定。"));
    return FALSE;
}
SetLastRunTimeToRegistry(now);

// 試用期檢查
CTime installTime = GetInstallTime();
if (now - installTime > CTimeSpan(90,0,0,0)) {
    AfxMessageBox(_T("試用期已結束。"));
    return FALSE;
}

注意事項

  • 註冊表/檔案需加密或隱藏,防止使用者直接刪除重置。
  • 虛擬機快照/還原可繞過此機制,屬高級攻擊,一般商業軟體可接受風險。
  • 正式商業授權建議採用硬體狗、線上授權驗證等更強健方案。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved