通過對App加固,提升App 安全性,防止Apk(安卓應用軟件包)被入侵、篡改、山寨,提升代碼的安全性和被破解難度。不過,在對Apk加固后,Apk原有的簽名信息會丟失,需要重新簽名,否則,無法在安裝到手機等安卓設備上。
因此Apk重簽名需要和加固前保持一致,否則會觸發(fā)加固的防二次打包功能,導致Apk無法正常運行。
Apk的簽名的作用
軟件簽名并非安卓系統(tǒng)首創(chuàng),在諾基亞主導的塞班(Symbian OS)時代就開始運行。通過簽名每個程序開發(fā)商都擁有合法賬號ID。
Apk簽名類似在開發(fā)者在Apk中寫入一個獨有的“指紋”。安卓App導出為Apk時,需要選擇一個數字證書,也就是keystore文件。該Key文件用來對App進行簽名,是導出App的一個鑰匙,是Apk的獨有“指紋”,需要開發(fā)者自己生成。
生成簽名以后,除非再次修改,否則Apk將永久有效。同時,在安卓設備上安裝該Apk,安卓形同會對Apk簽名進行校驗,如果校驗失敗則無法獲得通過。這是安卓系統(tǒng)自帶的一種安全性驗證機制,目的是為了確保Apk來源的真實性,防止Apk遭第三方篡改,保證Apk的完整性、原創(chuàng)新和安全性。
Apk簽名的組成
APK簽名分塊包含了 4 部分:分塊長度、ID-VALUE序列、固定magic值。
簽名有V1、V2、V3、V4 等四個方案。其中,V2 方案應用最多。該方案V是在安卓7.0 (Nougat) 中被引入的,是一種全文件簽名方案,能夠發(fā)現對 APK 的受保護部分進行的所有更改,從而有助于加快驗證速度并增強完整性保證。
V2 方案支持并行計算,無需計算所有文件的摘要,以分塊形式進行hash,良好保證了APK內各文件的完整性。而且它只需進行一次hash校驗,速度很快。
如何為加固后的Apk進行二次簽名?
以頂象安卓App加固為例。
第一步,在頂象官網下載、解壓簽名工具dx-signer.jar。
第二步,運行簽名工具,其中Windows平臺下運行run-win.bat, mac/linux平臺下運行run-mac-linux.sh。
第三步,選擇簽名的key文件,并輸入密碼。
第四步,選擇alias名,并輸密碼。
第五步,點擊“簽名”按鈕,系統(tǒng)自動進行簽名。
頂象App加固基于虛機源碼保護技術,良好兼容Java、Kotlin、C/C++等多種語言。可以保護Android的DEX、配置、SO等 16 種數據和文件安全,可有效偵測對抗動態(tài)調試、代碼注入、內存dump、root環(huán)境、多開環(huán)境、模擬器、重打包等風險。
頂象App加固提供了一套完整的工具鏈,首先把App代碼編譯成中間的二進制文件,隨后生成獨特的虛機源碼保護執(zhí)行環(huán)境以及只能在該環(huán)境下執(zhí)行的運行程序。也就是虛機源碼保護會在App內部隔離出獨立的執(zhí)行環(huán)境,該核心代碼的運行程序在此獨立的執(zhí)行環(huán)境里運行。即便App本身被破解,這部分代碼仍然不可見。
頂象App加固自帶“蜜罐”功能(一種針對攻的欺騙的術,誘使攻擊方實施攻擊,從而可以有效捕獲攻擊行為并對其機型分析,進而通過技術和管理手段來增強實際系統(tǒng)的安全防護能力),可以通過自身的探針感知到環(huán)境的變化,實時探測到外界對本環(huán)境的調試、注入等非正常執(zhí)行流程變化,將調試動作引入程序陷阱,并發(fā)出警報,進而進行實時更新,進一步提高安全強度。
此外,頂象App加固率先支持對iOS免源碼加固,提供代碼混淆、字符串混淆、符號混淆、指令虛化、防調試、反編譯、防Class dump的保護,并支持Bitcode輸出。