軟件許可證和授權的實現方法

一般許可證授權是和機器進行綁定關係的,當前運行的機器沒有授權的話可以進行一些處理,來防止盜版軟件和非法傳播。

大多數軟件有激活碼或者註冊碼的概念,來進行激活等操作。這種大多數是離線激活。

在線激活可以通過服務器通信來確認當前機器是否授權,授權後纔可以正常運行。

這裏將使用在線動態授權,來達到嚴格控制授權機器,和具備較高的實時性的目的。

授權流程:進程獲取機器信息->信息發到服務器->服務器確認授權->進程收到授權結果進行處理。

step1:機器的信息可以主板編號,CPUID,內存大小等機器特徵信息組合出來數據,在這裏可以再加上機器IP,如果是對公IP的話,那麼服務器是可以進行校驗的,達到無法僞裝的目的。在這裏還可以加入UTC時間。

step2:通過網絡吧機器信息傳輸到服務器。衆所周知網絡是不安全的,明文傳輸的話可以被僞造,爲了加大破解難度,可以進行非對稱傳輸。進程經過公鑰把需要上傳的信息進行加密處理,一個app或者一個產品,可以有一對公鑰私鑰。

step3:服務端可以根據機器特徵來進行當前機器是否有被授權,並且吧正確的信息非對稱加密返還給客戶端。

上面的介紹方法實現了授權邏輯關係,和具備一定的網絡安全。

但是由於進程本身是在客戶端運行的,容易被攻破。因此這裏需要進行一些加密保護技術來保護進程的功能正常運作。

常見的技術名詞有進程加殼,內存和代碼混淆,虛擬化。

對於虛擬化的目的是爲了讓進程本身的運行機制不被輕易識別和攻破。簡單方案是可以內嵌lua或者python虛擬機來進行一些OP code改造,運作代碼用lua或者python書寫,達到加大破解難度的目的。

複雜一點的就是自己實現一個虛擬機。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章