Skip to content

Latest commit

 

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

USB 隱形授權系統操作與 C# 整合手冊 (v3.1 防篡改 / Raw 磁區直寫版)

本系統採用雙 DLL 分權設計,解決 Windows 平台下「製鎖端需要高風險磁碟權限」與「客戶端要求免 UAC、防毒軟體不誤殺」的商業衝突。

v3.1 版全面升級為 「 Raw 磁區直寫架構 (Raw Sector Storage)」,徹底拔除臨時掛載目錄與 FAT32 格式化依賴。


1. 系統運作原理與 v3.1 核心技術

  • 製作端 (libDongleMaker.dll):需要系統管理員權限 (UAC)。對指定隨身碟進行雙分割區規劃:
    • 隱形授權區 (Partition 1):128MB,類型 0x12 OEM。無檔案系統、零臨時掛載目錄。直接透過 WriteFile 將 AES-256-GCM 密文與 Header 直寫於 Sector 0。檔案救援軟體無法掃描到檔名。
    • 可見儲存區 (Partition 2):剩餘全部空間,exFAT 格式 (標籤 USB_DRIVE),供日常讀寫存放普通檔案。
  • 讀取端 (libDongleReader.dll / libDongleReaderStatic.a):隨主程式出貨給客戶,完全不需要系統管理員權限 (免 UAC)。
    • 安全讀取 USB 出廠晶片唯讀 ID。
    • 直接以 Raw Volume Handle (\\\\?\\Volume{GUID}) 讀取 Sector 0 並進行 AES-256-GCM 防篡改驗證解密。
    • 內建 Expression Parser 動態算式解析器 (支援 + - * / % ^ () x y z 及 abs, min, max, floor, ceil, sin, cos, sqrt)。
    • 包含 XOR API 名稱混淆 (NtSetInformationThread) 與 RDTSC CPU 週期抗最佳化反除錯。

2. 系統目錄與檔案說明

  • cpp_src/:所有 C++ 核心 DLL 專案原始碼。
    • cpp_src/CMakeLists.txt:CMake 建置設定。
    • cpp_src/common/:共用標頭檔、LicenseHeader 結構與 AES-256-GCM/CBC 加解密模組。
    • cpp_src/maker/:開發端製鎖 DLL 與測試程式(需要管理員權限)。
    • cpp_src/reader/:客戶端讀鎖 DLL 與測試程式(完全免 UAC 權限,隨軟體出貨)。
    • cpp_src/build/:編譯產出目錄。
  • dongle_maker_gui/:C# WinForms 專案目錄(包含視覺化燒錄與互動式 X/Y 算式測試驗證工具)。
    • dongle_maker_gui/Form1.cs:GUI 主視窗邏輯 (async/await 非阻塞 UI + Windows WM_DEVICECHANGE USB 熱插拔自動偵測)。

3. 建置與編譯指南

第一步:建置 C++ 核心 DLL 庫

使用 CMake 與您的 C++ 編譯器(如 MinGW x64 或 MSVC x64)在 cpp_src 下進行編譯:

cd d:\dongle_maker\cpp_src
cmake -B build
cmake --build build --config Release

Note

C++ 建置腳本已設定建置後事件 (Post-Build Event)。當 C++ 編譯成功後,會自動將 libDongleMaker.dll 複製到 C# 專案的輸出目錄 dongle_maker_gui/bin/Debug/ 與 dongle_maker_gui/bin/Release/ 中。

第二步:建置 C# GUI 專案

開啟終端機或 Visual Studio 進行建置:

cd d:\dongle_maker\dongle_maker_gui
dotnet build dongle_maker_gui.csproj -c Release

4. 燒錄與讀取測試流程

步驟 A:使用 C# GUI 進行視覺化製鎖

  1. 插入準備作為軟體鎖的 USB 隨身碟。
  2. 以系統管理員身分執行 dongle_maker_gui.exe(USB 插入或拔除時選單會自動刷新)。
  3. 可在文字框中修改授權 JSON 字典(例如包含自訂動態算式 "formula": "abs(x - y) * 9 + min(x, y)")。
  4. 點擊 「抹除磁碟並寫入隱形授權鎖」 按鈕(使用 Task.Run 背景異步執行,UI 不凍結)。
  5. 雙重確認後,毫秒級完成 Raw Sector 直寫。

步驟 B:客戶端驗證與讀取 (包含互動式 X/Y 算式測試)

  1. 將製妥的隨身碟插入電腦。
  2. 以一般使用者身分雙擊執行 dongle_maker_gui.exe (免 UAC)。
  3. 切換至第二分頁 「讀取與驗證 (Reader Demo)」。
  4. 選擇對應隨身碟並輸入密碼。
  5. 輸入測試變數 X 與 Y(例如 X = 10.0, Y = 5.0)。
  6. 點擊 「讀取並驗證軟體鎖 (Demo)」 按鈕。
  7. 程式自動調用 libDongleReader.dll 進行 Raw Sector 讀取、GCM 防篡改驗證,並帶入您輸入的 X、Y 進行加密算式動態求值。

About

基於 Raw 磁區直寫與 AES-256-GCM 加密的 USB 軟體授權鎖(Dongle)。採雙 DLL 架構,實現製鎖端安全寫入、客戶端免 UAC 驗證與動態算式解析。

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages