車子加裝了防盜器並不保證就不會被偷,只是增加偷竊時的風險與時間,進而讓小偷知難而退;軟體保護的目的應該也是這樣,如果為了避免別人破解反而造成使用者的不便或者增加日後維護的困難,那麼不如把花在防破的時間用在提昇軟體的品質上面。
無論如何,軟體是智慧的結晶,適度的保護是有必要的,以下就是一些簡易的軟體保護方法,提供給各位參考:
當你檢查到非法使用者時,不要顯示任何這類訊息,如果要的話,延遲個一兩天再顯示這些訊息。如果您曾經使用過 WinICE 等除錯工具的話就應該知道要攔截這些訊息是易如反掌,破解者只要下對中斷點就能有效減少破解的時間。
利用加密演算法把重要資訊隱藏起來,不要只用 XOR 之類簡單的方法,同時要記得其解密的方式,以免造成日後自己得破解自己的程式,那可就糗了。
在輸入及檢查密碼等關鍵性動作中加入一些短的時間延遲或迴圈,這些迴圈能夠有效的干擾一些使用暴力法(brute-force)追蹤程式流程的破解者。
在 EXE 檔或 DLL 檔中加入 checksum,並且使用交互檢查的方法避免檔案被修改。
你可以把重要的檔案,例如 DLL 檔,加密之後存成另外一個檔案,當檢查到該 DLL 檔被修改時,安靜地把加密的檔案解密後覆蓋到該 DLL檔。
撰寫多種檢查函式,並且在不同時間呼叫不同的檢查函式,讓破解者以為已經破解成功了,但日後執行程式時又發現還有尚未破解的地方,藉此持續打擊破解者的信心。
軟體必須不斷推出新的版本,讓舊的破解方法不再適用新版的軟體。另外,品質與服務也是很重要的因素。
最後,花些時間思考一下你所加入的這些保護措施是否值得,你的軟體真的會優秀到有很多人想要去破解嗎? 軟體的價格是否定得太高了? 在保護您的智慧結晶的同時,經常問自己這些問題,以免矯枉過正,反而喪失了軟體的品質與市場。
以上幾種防止破解的方法參考自 Richey's Anti Cracking FAQ,我做了些刪改,並加進自己的想法,如果想看原文可以到 Richey's Delphi Box,網址為 http://inner-smile.com。
Last update: Oct-5-1999