1. 程式人生 > >防止別人反編譯你的軟體

防止別人反編譯你的軟體

翻看歷史記錄,可以看到之前有寫過一篇文章,簡單講解了怎麼反編譯,或者說破解C#軟體。由於大公司的專案很注重安全性,這裡通過移動端APP來為例,通過幾個方向點,說一下避免別人反編譯你軟體的幾個思路,以下僅限於技術方面的處理方式,暫時想到這麼多,其它的自我發散思考吧。

1.混淆程式碼

這是軟體防反編譯加密技術的必要項,也是最直接而有效的方式,對應用程式的程式碼進行混淆,保證原始碼被逆向後無法解析程式碼,讓人幾乎看不懂實現方式。這種方式現在都有用到,還有各種工具,官方和第三方都有,收費不收費都有。像Android Studio編譯器都自帶混淆功能,Visual Studio安裝完整版也帶混淆外掛。

2.本地資料加密

應用程式本地配置檔案,本地基本資料庫,裡面的資料都要通過加密演算法進行加密,保護帳號和關鍵資訊。甚至於這些配置檔案的為檔名,都可以進行加密。

3.網路傳輸資料加密

對於c/s結構的軟體來說,客戶端傳輸資料需要提供加密方案,有效防止通過網路介面的攔截獲取資料,避免網路通訊資料的劫持,和通訊協議格式的暴露。

4.URL編碼加密

移動APP客戶端,需要對程式中出現的URL進行編碼加密,防止URL被靜態分析。

5.程式結構混排加密

除了上面提到的程式碼混淆,應用軟體還可以對應用程式邏輯結構進行打亂混排,保證原始碼可讀性進一步降低。

6.加入無效程式碼

加入無效程式碼,目的也是混淆視聽,以使整個程式被反編譯後的程式碼更加複雜難懂,當然不好之處是,整個軟體包變大了,這個需要酌情考慮。

7.藉助第三方APP加固

這個通常是軟體加密加殼工具,不多說,具體實現和思路是由該軟體廠商決定的,例如:網易雲易盾