首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

基於 NIC 與硬碟序列號的軟體網路授權機制實作

     編輯:關於VC++

軟體授權保護是商業軟體發布的必備環節。本文介紹一個輕量級 Win32 DLL —— PJSECURE,它結合網卡 MAC 位址(NIC Address)與 C 槽硬碟序列號,為軟體提供「機器綁定」式的網路註冊/防拷貝機制。原始碼包含 DLL 完整實作與測試主控台程式,支援 Unicode 與多種編譯配置。

核心設計邏輯

唯一識別一台電腦需要穩定、難以偽造的硬體特徵值:

  1. 網卡 MAC 位址:12 位十六進制數,由廠商保證全球唯一。透過 RPC 函數 UuidCreate 或 UuidCreateSequential 快速獲取,不依賴特定網路協議。
  2. C 槽硬碟序列號:作為輔助驗證,防止單一硬體更換導致授權失效。

雙重資訊結合,極大降低衝突與破解風險。

API 介面詳解

GetNicAddress —— 獲取網卡 MAC

BOOL GetNicAddress(LPTSTR pszNicAddress, UINT nBufSize);
  • pszNicAddress:輸出緩衝區,調用者需分配 至少 13 字元(12 字節 + 結束符)。
  • nBufSize:緩衝區長度。
  • 返回值:成功 TRUE,失敗 FALSE。

內部調用 UuidCreate/UuidCreateSequential,無需安裝特定協議棧。

GetCDriveSerialNumber —— 獲取 C 槽序列號

BOOL GetCDriveSerialNumber(LPDWORD pdwSerialNumber);
  • pdwSerialNumber:接收序列號的 DWORD 指標。
  • 返回值同樣為 TRUE/FALSE。數值可用 VOL 指令驗證。

對於高安全需求軟體,可作為二次驗證手段。

部署與授權流程建議

  1. 客戶端首次運行調用兩 API 獲取機器碼,上傳至授權伺服器。
  2. 伺服器依機器碼生成授權碼(可加入到期日、功能模組等資訊),簽名後下發。
  3. 客戶端驗證授權碼簽名與本機機器碼匹配,通過後解鎖功能。

注意事項與授權條款

  • Windows 2000 上請改用 UuidCreateSequential 替代 UuidCreate。
  • 原始碼可自由用於任何二進制發布產品(商業/共享/免費),但須保留模組頂部版權聲明。
  • 若需分發原始碼,僅允許分發作者最新版本,確保來源唯一。

附件提供完整 Visual Studio 專案與測試程式,可直接整合至現有專案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved