單片機序列號加密,基於硬碟號和CPU序列號的軟體加密技術很多人還不知道,現在讓我們一起來看看吧!
基於硬碟號和CPU序列號的軟體加密技術
應用與安全
摘要:本文提供了一種注冊碼與計算機硬體參數相關的一種加密方法,並通過具體的實例講述了如何對軟體加密的方法。
關鍵詞:硬碟號,CPU序列號,注冊表
1引言
計算機軟體是一種特殊的產品,為了防止軟體的非法復制、盜版,保護軟體開發商的利益,就必須對軟體進行加密保護。採用基於硬碟號和CPU序列號的軟體加密技術,軟體會根據微機硬體參數給出該軟體的序列號;用戶需要把這一序列號用E-mail、電話或郵寄等方法寄給軟體提供商或開發商,軟體開發商利用注冊機(軟體)產生該軟體的注冊號寄給用戶即可。它的注冊信息與機器的硬體信息有關,不同於以前的序列號的注冊方法,提高了軟體的安全性。
2硬碟號和CPU序列號
(1)硬碟序列號:英文名HardDiskSerialNumber,該號是出廠時生產廠家為區別產品而設置的,是唯一的,是只讀的,利用硬碟序列號的加密往往是利用其唯一和只讀的特性。在有的加密軟體中採用的是硬碟卷的序列號:英文名VolumeSerialNumber,以指硬碟的邏輯盤,如:「C:」、「D:」等,是高級格式化時隨機產生的,是可以修改的,由於其可修改,所以利用其加密,對於安全而言就大打折扣了。硬碟的卷號通過WINAPI函數,GetVolumeInformation即可獲得。就IDEHDD而言,對於沒有序列號或SCSIHDD硬碟則無能為力,這也是利用它進行加密的局限性。
(2)CPU序列號是一個建立在處理器內部的、唯一的、不能被修改的編號。它由96位數字組成。高32位是CPUID,用來識別CPU類型。低64位每個處理器都不同,唯一地代表了該處理器。CPU號可以用來識別每一個處理器。為了適應這一新特徵,Intel在處理中增加了兩條指令(「讀取」和「禁止」)和一個寄存器位(模式指定寄存器位:ModelSpecificRegister-「MSR」)。讀取指令擴展了CPUID讀取指令。當執行讀取指令時可以得到96位的處理器序列號。禁止指令可以禁止對處理器序列號的讀取。為了配合CPU序列號的讀取和禁止,設置了MSR位。當MSR位為「0」時可以讀取CPU序列號;當「MSR」位為「1」時只能讀取高32位(即CPUID),而低64位全為零。
3程序實現
3.1加密方法
通過應用程序取得機器硬碟號和CPU號通過機密程序形成一個注冊序列號,用戶將這個注冊序列號發送到軟體注冊者,軟體注冊者按照預定的演算法生成注冊碼,然後將其發給用戶,通過注冊形成合法用戶。軟體每次啟動時都到注冊表或注冊文件的相應位置讀取注冊碼並與軟體生產的注冊碼比較,一致則是合法用戶,否則是非法用戶。由於注冊碼與用戶計算機的硬碟號與CPU號相關聯,故其是唯一的,非法用戶即使知道注冊序列號與注冊碼也無法使用。
3.2實現過程
(1)CPU號的讀取
硬碟的序列號只能採用對硬碟控制器直接操作的方式進行讀取,也就是說只能採用CPU的I/O指令操作硬碟控制器,對於CPU號的讀取採用了在DELPHI嵌入匯編的方法讀取。其讀取方法如下:
MOVEAX.01H
如果返回的EDX中,低18位為1,那麼這個CPU就是支持序列號的。此時EAX就是序列號的高32位。這32位對同一型號的'CPU是一樣的。
再執行:
MOVEAX.03H
此時的EDX:ECX就是序列號的第64位。
(2)硬碟號的讀取
硬碟號的讀取通過CreateFile函數,CreateFile可以打開物理設備和串口等,使用CreateFile(?.PHYSICALDRIVEI?,)打開硬碟,其中的I為0~255,其為需要讀取的硬碟。命令如下:
hDevice:=CreateFile(?.PhysicalDrive0?,GENERIC_READORGENERIC_WRITE,FILE_SHARE_READORFILE_SHARE_WRITE,NIL,OPEN_EXISTING,0,0)
使用DeviceIOControl函數對打開的設備進行通信,發送指定命令,根據返回的PSENDCMDOUTPARAMS結構,得到物理序列號和模型號,把物理序列號和模型號格式化為一定的格式輸出。
(3)對注冊表的操作
Delphi程序中可利用TRegistry對象來存取注冊表文件中的信息。
①創建和釋放TRegistry對象
通過Create和Destroy來創建對象和釋放內存。
②讀取注冊表中寫入信息
對於注冊表數據的讀取可採用ReadString、ReadInteger、ReadBinaryData等函數來讀取字元串、數值、二進制值。
③向注冊表中寫入信息
Write系列方法將信息轉化為指定的類型,並寫入注冊表。
對於注冊表數據的寫入可採用WriteString、WriteInteger、WriteBinaryData來寫入字元串、數值、二進制值。
4結語
本文給出了一種軟體加密的方法,通過該方法產生的注冊碼與計算機的硬體相關,對於讀取的硬碟號、CPU號可以通過MD5加密演算法產生一個注冊號,保證軟體加密的可靠性,可有效地防止非法用戶破解注冊碼,保護軟體的知識產權。
參考文獻:
[1]Delphi程序開發範例寶典[M].人民郵電出版社,2006.7:127-129
[2]Delphi從入門到精通[M].電子工業出版社,2006.4:373-376
② 電腦磁碟如何加密
電腦的速度是CPU和內存決定的,軟體加密後是寫在硬碟上的,只有觸發該時間比如進入需要輸入密碼時才會激發程序,所以這個不用擔心!
下面都是硬碟加密軟體!
1.MagicLocker
硬碟加密保護工具,MagicLocker採用隨機的密鑰為文件
2.紫電硬碟加密神
紫電硬碟加密神是目前獨一無二的硬碟分區加密軟體。但是不僅僅包括硬碟。實際上軟體可以保護任何分區,即使是軟碟機、光碟驅動器、U盤和移動硬碟。
3.SecurStarDriveCrypt
為你提供高達1344Bit軍用硬碟加密技術,加密速度快,加密強度高
4.CompuSec
CompuSec是用來保護您的系統的軟體,主要使用一些認證機制、硬碟加密保護等來確保系統
5.PWMBR
一個硬碟加密工具
Prayaya加密王
Prayaya 加密王是在您電腦上創建的一塊加密磁碟區域,您可將需要保護的私密文件(照片、視頻、財務信息文件等)存放在Prayaya 加密王中。