軟體保護建議 轉

來源:互聯網
上載者:User

軟體保護建議

  本節將給出關於軟體保護的一般性建議,這些都是無數人經驗的總結。程式員在設計自己的保護方式時最好能夠遵守這裡給出的準則,這樣會提高軟體的保護強度。
(1)
軟體最終發行之前一定要將可執行程式進行加殼/壓縮,使得解密者無法直接修改程式。如果時間允許並且有相應的技術能力,最好是設計自己的加殼/壓縮方法。
如果採用現成的加殼工具,最好不要選擇流行的工具,因為這些工具已被廣泛深入地加以研究,有了通用的脫殼/解壓辦法。另外,最好採用兩種以上的不同的工具
來對程式進行加殼/壓縮,並儘可能地利用這些工具提供的反跟蹤特性。
(2)增加對軟體自身的完整性檢查。這包括對磁碟檔案和記憶體映像的檢查,以防止有人未經允許修改程式以達到破解的目的。DLL和EXE之間可以互相檢查完整性。
(3)不要採用一目瞭然的名字來命名函數和檔案,如IsLicensedVersion( )、key.dat等。所有與軟體保護相關的字串都不能以明文形式直接存放在可執行檔中,這些字串最好是動態產生。
(4)
儘可能少地給使用者提示資訊,因為這些蛛絲馬跡都可能導致解密者直接深入到保護的核心。比如,當檢測到破解企圖之後,不要立即給使用者提示資訊,而是在系統的
某個地方做一個記號,隨機地過一段時間後使軟體停止工作,或者裝作正常工作但實際上卻在所處理的資料中加入了一些垃圾。
(5)將註冊碼、安裝時間記錄在多個不同的地方。
(7)檢查註冊資訊和時間的代碼越分散越好。不要調用同一個函數或判斷同一個全域標誌,因為這樣做的話只要修改了一個地方則全部都被破解了。
(8)不要依賴於GetLocalTime( )、GetSystemTime( )這樣眾所周知的函數來擷取系統時間,可以通過讀取關鍵的系統檔案的修改時間來得到系統時間的資訊。
(9)如果有可能的話,可以採用連網檢查註冊碼的方法,且資料在網上傳輸時要加密。
(10)除了加殼/壓縮之外,還需要自己編程在軟體中嵌入反跟蹤的代碼,以增加安全性。
(11)在檢查註冊資訊的時候插入大量無用的運算以誤導解密者,並在檢查出錯誤的註冊資訊之後加入延時。
(12)給軟體保護加入一定的隨機性,比如除了啟動時檢查註冊碼之外,還可以在軟體啟動並執行某個時刻隨機地檢查註冊碼。隨機值還可以很好地防止那些類比工具,如軟體狗類比程式。
(13)如果採用註冊碼的保護方式,最好是一機一碼,即註冊碼與機器特徵相關,這樣一台機器上的註冊碼就無法在另外一台機器上使用,可以防止有人散播註冊碼,並且機器號的演算法不要太迷信硬碟序號,因用相關工具可以修改其值。
(14)如果試用版與正式版是分開的兩個版本,且試用版的軟體沒有某項功能,則不要僅僅使相關的菜單變灰,而是徹底刪除相關的代碼,使得編譯後的程式中根本沒有相關的功能代碼。
(15)如果軟體中包含驅動程式,則最好將保護判斷加在驅動程式中。因為驅動程式在訪問系統資源時受到的限制比普通應用程式少得多,這也給了軟體設計者發揮的餘地。
(16)如果採用keyfile的保護方式,則keyfile的尺寸不能太小,可將其結構設計得比較複雜,在程式中不同的地方對keyfile的不同部分進行複雜的運算和檢查。
(17)自己設計的檢查註冊資訊的演算法不能過於簡單,最好是採用比較成熟的密碼學演算法。可以在網上找到大量的源碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.