應用文檔
應用文檔
應用文檔 首頁 > 應用文檔

如何更好地提高加密狗的使用效率---加密狗使用技巧

更新時間:2019-09-26 17:17:29   點擊量:
簡單技巧
 
1. 賦值和判斷分開 (參考強度值:1)
在賦值和對值的判斷之間,可以插入很多的其他操作,讓解密者難以猜到二者之間的聯系。對于全局變量,可以在別的函數塊中做判斷。
 
2. 多次判斷值  (參考強度值:2)
對于一個值,可以在不同的地方做判斷,可以做很多的判斷,讓解密者難以屏蔽所有的判斷操作,而只要有一個地方判斷結果不對就可以認為整個結果是不對的。
 
3. 多次賦值   (參考強度值:3)
對于一個返回值,可以多次賦值給它,可以用復雜循環來做,讓解密者無法跟蹤該值的變化。
 
4. 賦多個值   (參考強度值:3)
返回的結果可以賦給很多的值,讓解密者難以跟蹤所有的這些返回值。而任意一個返回值不正確,都可以認為結果不正確。
 
5. 使用返回值   (參考強度值:4)
其實做判斷是一種不好的方法,容易被識破和屏蔽。直接使用結果可以更好地讓應用軟件和加密軟件結合。如計算圓面積這樣一個函數,可以把圓周率參數放到加密狗的返回值中,如果返回值不正確,圓周率肯定也不正確,程序運行的結果也就會混亂了。
 
6. 使用加密狗中常量   (參考強度值:6)
在加密狗中放置一些常量,要使用時從加密狗中讀出使用。比如路徑名,文件名,一些常用數據等。
 
7. 使用解密函數的結果   (參考強度值:10-20)
解密函數的結果可以看成是一種可預知的返回值,隨著輸入的不同,輸出也會不同,進行多次解密運算,并且使用解密后的結果。
 
8. 關鍵加密點不要使用系統的比較函數進行比較   (參考強度值:10-20)
不要使用字符串和加密狗中的數據進行簡單的比較,同時最好不要使用系統的比較函數來進行比較,比如 strncmp、memcmp、radom、getsystemtime、messagebox 等函數,最好自己編寫比較函數。因為黑客很容易使用靜態反編譯工具識別出此類函數。
 
9. 盡量在加密點附近不要調用一些敏感的系統函數   (參考強度值:10-20)
例如:random、getsystemtime、messagebox、 exitprocess 等函數。
 
中級技巧
 
10. 隨機執行   (參考強度值:10)
解密者往往是通過大工作量地跟蹤程序以發現加密點的,這需要不停地運行程序,以發現規律。在程序中設置隨機量可以讓加密者糊涂。這種隨機可以是隨機對返回值進行判斷,可以是隨機的賦值,也可以是程序隨機地執行。
一些解密的高手可能會注意到程序執行的隨機性,從而屏蔽 Random 函數。下面幾條技巧也用到隨機量,如果可能,可以使用自己編寫的隨機數發生器。隨機發生器的初始化可以取如系統時間這樣的隨機值。
 
11. 隨機讀   (參考強度值:15)
可以隨機地從狗中讀取一些內容,但是除非需要,這些內容可以不使用。地址、長度都可以是隨機的。
 
12. 隨機寫   (參考強度值:20)
可以隨機地向加密狗中寫入一些隨機內容,地址、長度都可以是隨機的。但是要注意不要覆蓋加密狗中有用的內容。較好的辦法是在加密狗中規定一個特定數據文件區域用于隨機寫,并使隨機寫的地址和長度不會越界。
 
13. 隨機寫然后讀出   (參考強度值:35)
這其實是上面兩個技巧的配對使用。要注意的是讀和寫要從程序的運行邏輯上分離遠一些,中間可以加入其他對加密狗的操作,這樣解密者極難看出兩者的聯系。
 
14. 隨機調用加解密函數   (參考強度值:35)
隨機調用加解密函數是指做加解的內容和長度可以是隨機的。而返回的變換結果可以不使用。
 
15. 隨機加密并使用結果   (參考強度值:20-100)
這個技巧可能比較難于理解。使用方法是這樣的:假如我們要使用常數 1,我們可以先產生一個隨機內容 A,把 A 保存起來,按照技巧 14 用 A 做一次隨機加密函數調用得到加密結果 B,再把 B 同我們要得到的常數做一次運算,這里比如是簡單的加法,得到結果 C,那么肯定 C = B + 1,再把 C 也保存起來。在程序的另外一個地方,我們再用保存的 A 再做一次加密,加密的結果肯定與上次的 B 相同,同保存的 C 做一次反運算(解密函數),這里是減法,會得到結果 D = C - B = 1。這時就可以使用 D 了, D 就是我們要用的常量。要注意這個技巧也是有兩部分組成,它基于以下的原理:即使加密函數的結果是不可預知的,但是兩次相同的加密結果肯定是一樣的。有人可能會覺得中間那步加密和解密是多余的,其實不然。
 
16. 使用加密狗做全局變量   (參考強度值:40)
可以把一些變量放在加密狗中,使用加密狗來做傳遞變量,而且這些變量還是全局的,甚至下一次運行程序時還在。
 
17. 定時查加密狗   (參考強度值:40)
可以在需要加密的程序中,根據日期來判斷是否需要查加密狗。比如說,在 2003-12-26 調用某個加密接口函數,然后在 2004-1-26 以后又調用某個加密接口函數,或者每天的某個時間調用加密接口函數。
 
18. 加密點分散原則   (參考強度值:40)
如果開發商的軟件包括很多的模塊,比如說 exe、 dll、 ocx 等子程序,建議不要僅僅在主程序中使用加密函數或者外殼工具,最好其它的模塊也使用加密狗進行加密。
 
19. 使用AppOnChip   (參考強度值:20-150)
開發商如果使用的是C++的開發語言,可以使用加密狗提供的AppOnChip功能,將程序植入到加密狗中運行。具體使用方法請參考加密狗的AppOnChip說明。
 
 
高級技巧
 
20.在不影響程序運行效率的情況下,盡可能做外殼加密   (參考強度100)
外殼加密,外殼加密,外殼加密(重要的事情說3次)。外殼加密已經集成了上面大多數的加密技巧,并經過多次的優化,常見的脫殼程序很難對它完全脫殼。對于需要較高的加密強度又沒有很多精力來研究加密策略的用戶來講,外殼加密是一個快速有效的辦法。
 
21. 自校驗   (參考強度值:20-150)
可以使用外殼加密中提供的簽名功能對被加密文件簽名,如果黑客修改了加密的文件,則獲取到的簽名結果將會和以前獲取的簽名不一致。
 
22. 多線程   (參考強度值:20-150)
利用高級操作系統的多線程技術可以很好地迷惑解密者和解密工具。基本思路是這樣的:在一個線程中對加密狗操作,在另外一個線程中判斷和使用。
 
23. 隊列   (參考強度值:40-60)
可以建造一個隊列以管理返回值和返回結果,管理的方法可以復雜一些,而程序的執行是依賴于這個隊列的。當然不用隊列而使用其他的數據結構也是一樣的,甚至效果更好。有心的讀者可能注意到本技巧也可以和上面的技巧結合起來。一個簡單的使用隊列進行返回值管理的例子如下圖所示:
在上圖中,有一個初始化了的隊列,共有 6 個單元,初始數據為 148888,當發生的返回值不為 0 時,將 205429 賦給 Pin,并使隊列移動一個單元。在 Pout 處檢測被推出的數據,當為 148888 時不做動作,當為 205429 時即認為非法。
 
其他加密技巧
 
24. 多模塊軟件或多套軟件共用一只加密狗
開發商可以將加密狗的FeatureID(特征)系統合理的分配給不同的模塊或軟件使用,可以實現多模塊軟件或多套軟件共用一只加密狗。
 
25. 限制軟件使用次數及使用時間或某些模塊無法使用
開發商可以通過訪問加密狗中的FeatureID(特征)的屬性來方便地實現軟件使用次數和模塊使用期限的限制。
 
26. 遠程升級更新軟件
加密軟件的運行依賴于加密狗中的數據。軟件開發商只需提供給最終客戶更新加密狗數據升級碼,將加密狗標志字節等內容重新初始化,使加密狗滿足升級加密軟件的運行條件即可,更新加密狗的代碼也可直接做在升級加密軟件中。使用相同的方式也可將試用軟件升級至完全版本,或增加最終客戶的使用次數、時間。也可將某些功能、模塊或使用次數、時間的限制取消,授權給最終客戶使用。我們提供了遠程升級的解決方案,不需要用戶將加密狗寄回就能實現遠程的更新。
 
27. 安裝加密軟件時檢查加密狗(無加密狗不能安裝)
軟件開發商在加密軟件的安裝程序中可以通過調用加密狗的模塊進行查狗,以實現安裝過程中校驗加密狗。
 
總結: 在程序中綜合使用以上各種加密方法可以很好地保護您的軟件。參考強度值僅供參考,與使用者的具體使用方法有很大關系。事實上也并不一定要追求高強度值的技巧,低強度參考值的技巧只要使用巧妙,而且多次使用,也可以達到很好的效果。而高級的技巧一般難于實現,使用和調試都比較困難。
本頁關鍵詞: 加密狗使用技巧
亚欧2区免费在线视频