有的軟件開發商有這樣一種需求,就是使用U盤發布軟件的同時,想要節約成本,防止U盤中的軟件被復制,但又不想再購買昂貴的加密狗,因此想要把軟件綁定在U盤上執行,當U盤拔下來的時候,軟件就不能正常運行,和先前介紹的綁定硬件指紋相似,使用綁定U盤的方式加密軟件。
在對軟件安全不是特別在意的情況下,可以在軟件中采用綁定U盤內部ID的方式來實現這種加密,先使用程序將U盤的ID讀出來,然後根據這個ID生成License文件,當解密者將U盤內的文件復制到其他電腦的時候,軟件執行過程中讀取U盤ID失敗,因此就無法校驗License。
通常情況下兩個U盤的ID是不相同的,因此即使將軟件復制到另外一個U盤,軟件執行的時候,根據U盤ID驗證License,也會出現不匹配的現象,這樣就實現了軟件綁定U盤的加密方式。
需要指出的是,這種U盤加密並不算安全,大多數U盤廠商有內部量產工具,可以修改U盤的內部ID號碼,這就存在了復制U盤的可能性,但對於普通用戶來說,通常沒有修改U盤內部ID的能力,因此也具有一定的加密性。
這個加密方法中,讀取U盤ID號的函數的VB源代碼如下所示:
Se t objW MISe rvice = Ge tObject("winmg mts:\\.\ro ot\cimv2")
Se t colIte ms = objWMISer vice.E xecQ uery("Select * Fro m Wi n32_US BHub")
F or Ea ch objIte m In colI tems
a = o bjItem.De viceID
If In Str(a, "VI D") The n b = Sp lit(a, "\")
US B_ID = b(UBound(b))
Ne xt