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