如何選擇加殼工具?

加殼工具是指注入一段功能代碼到 APP 中,並可以將原始的二進制指令經過混淆、虛擬化等手段進行等價變換,實現滿足 APP 多種安全需求。根據功能的不同可以分爲:壓縮殼、加密殼、虛擬機殼

加殼工具的分類

壓縮殼

以隱藏程序代碼和數據爲目的,並將隱藏後的代碼和數據進行壓縮。但是,壓縮殼由於在運行時會將代碼段和數據段還原,所以安全性較低。

加密殼

功能與壓縮殼類似,可以將代碼和數據進行加密,也可以對單個函數加密,只有函數被執行時才進行解密。同樣,由於在運行時仍需要解密代碼和數據,所以只能起到輔助的效果。

虛擬機殼

將原始的指令經過虛擬化,翻譯成自定義的虛擬機指令。由於虛擬機指令不對外公開,每次加殼都能產生隨機化的虛擬機操作碼,如果要逆向虛擬化的指令,需要先分析自定義虛擬機,分析難度極高。

加殼工具六大特性

01 安全性

虛擬機外殼同時具備基礎保護和高級保護功能,是公認的強度最高的保護方式。

加密外殼的主要作用是保護核心代碼邏輯和增加軟件逆向難度。高安全性是選擇一款加殼工具的金標準。安全性可以從兩個方面進行分析:

基礎保護功能

基礎保護功能是指對程序的整體保護。基礎保護可以大輻度提高程序破解的門檻,延長破解時間。

  • 對於本地可執行程序而言主要包括:代碼段加密/壓縮、導入表保護、字符串加密、資源加密、反調試、內存完整性檢查等。
  • 對於.NET 程序而言主要包括:壓縮/元數據隱藏、名稱混淆、反調試等。

高級保護功能

高級保護是指函數級保護,對指定的函數進行混淆、虛擬化等保護。具有高安全性,破解難度極高。

02 加殼後程序的穩定性

一定要選擇市場上比較成熟的加殼產品。

對程序進行加殼,會增加軟件的複雜程度。加殼程序的某些特殊處理,很容易造成保護後程序的不穩定性。甚至會出現某些加殼後的程序被殺毒軟件攔截查殺的現象。加殼後的程序如果不穩定,會給使用者帶來極大的不便,影響工作效率。

03 加殼後是否影響性能

選擇支持性能調節的加殼工具。

外殼對程序的性能影響體現在兩方面,一是單個保護方式對程序性能影響大小,二是在追求高安全性的同時,性能是否可以調節。性能調節是指加殼工具對所保護程序進行性能分析、準確判斷性能瓶頸。對保護後的程序進行性能診斷會佔用開發人員大量時間,如果在保護過程中就能夠輕鬆診斷出性能瓶頸,可以明顯提升開發效率。

04 支持範圍

選擇支持範圍廣泛的加殼工具。

目前,應用程序正在向多平臺化發展,外殼工具的支持範圍可以從以下三個維度來權衡:

  • CPU 架構:是否支持 x86、x64 以及 ARM 32、ARM 64 指令集。
  • 操作系統:是否支持 Windows、Linux、macOS、Android、ARM Linux 等。
  • 程序類型:C/C++、Delphi、Go 等靜態語言編譯生成的本地可執行程序。C#、VB 編譯生成的 .NET 程序。遊戲編程流行的 Unity3D 程序。Python、PHP 等腳本語言程序。

05 數據保護

選擇有數據保護功能的加殼工具。

軟件在運行過程需要加載一些重要數據來完成某項功能,數據文件的安全也應該被重視。防止數據文件的泄露和破壞才能更好的實現軟件安全。選擇加殼工具時要關注一下是否支持數據文件保護。

06 用戶體驗

選擇操作簡單的產品。

界面工具:優先考慮界面直觀、操作簡單的產品,這樣能夠事半功倍,提升加密效率。

命令行:團隊開發流程往往會使用 CI 系統自動編譯,甚至有專門的構建團隊,所以命令行加殼是必不可少的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章