应用软件保护方法
應(yīng)用軟件保護方法
- 應(yīng)用軟件保護方法
- 參考
應(yīng)用軟件保護方法
從應(yīng)用軟件的角度,也許確實沒有辦法來防止軟件被最終破解,因為一旦軟件發(fā)布,所有的防衛(wèi)方法也就都固定了下來,可是攻擊和破解的方式卻是無窮的,破解只是時間問題。
我們真正能做的,就是盡量增加軟件被破解的難度和包括破解的時間成本。當(dāng)然也包括平衡我們自己要保護的軟件本身的價值,來采取合適的保護措施。
| 線索隱藏 | (1)隱藏或者加密關(guān)鍵信息和提示 (2)核心檢測代碼加密關(guān)鍵字,避免使用和License文件或者界面提示信息同樣的明文,例如: “incorrect_user_license”,“PRODUCT_KIND”,“USER_KIND” … (3)移除或者盡量減少"不必要"的和License相關(guān)的信息和提示 | 減少給破解者提供更多線索 |
| 軟件包保護 | (1)采用JAR包簽名 (2)采用例如ProGuard等擾碼手段,在編譯器對class,成員變量,方法等做擾碼,例如:“oOooo0O”,“1l11lll1”… (3)增加package完整性的檢測邏輯,例如size,change time,MD5 … (4)使用自己修改過的/專有的JDK | |
| License的檢查 | (1)避免集中式的一次性的License檢查實現(xiàn),避免使用全局的License標記 (2)除登錄時的License檢查之外,考慮在代碼里隨機的增加檢查點(或者我們稱之為暗樁) (3)避免使用boolean方法和簡單If-else邏輯比較來實現(xiàn)License 檢測 (4)開發(fā)多套License檢查邏輯,隨機使用 (5)避免在代碼里直接嵌入公鑰或私鑰 (6)一旦License檢查失敗,應(yīng)該永久標記此license為失效狀態(tài) (7)采用C/S模式,遠程校驗 (但也會增加新的復(fù)雜度,還有通信安全等問題也需要一并考慮) (8)延遲提示錯誤,一旦發(fā)現(xiàn)程序被嘗試破解,延遲報錯,比如幾小時或者幾天后在提示 (9)使用誤導(dǎo)提示把嘗試破解的人引向其他方向,增加其破解的難度,例如如果實際需要的密碼為10位字符,則提示請輸入8位字符的密碼… (10)分散License檢測邏輯到多個不同class,并且使用一些假的校驗實現(xiàn)來干擾破解者(混淆視聽) (11)增大破壞,比如發(fā)現(xiàn)被破解或者嘗試,執(zhí)行系統(tǒng)重啟,刪除本地文件,格式化等等 (不推薦) | 推薦多種方法結(jié)合使用 |
| License文件保護 | (1)強化代碼邏輯檢查License文件的惡意篡改 (2)使用二進制的License文件,避免使用純文本 (3)使用隨機的,動態(tài)的算法 |
參考
通過破解來學(xué)習(xí)怎樣更好的保護應(yīng)用軟件Licens…
總結(jié)
- 上一篇: 压缩包破解
- 下一篇: Wix 安装部署教程(十三) -- 多