『壹』 什麼是android apk加固
加固的過程中需要三個對象:1、需要加密的Apk(源Apk)2、殼程序Apk(負責解密Apk工作)3、加密工具(將源Apk進行加密和殼Dex合並成新的Dex)主要步驟:我們拿到需要加密的Apk和自己的殼程序Apk,然後用加密演算法對源Apk進行加密在將殼Apk進行合並得到新的Dex文件,最後替換殼程序中的dex文件即可,得到新的Apk,那麼這個新的Apk我們也叫作脫殼程序Apk.他已經不是一個完整意義上的Apk程序了,他的主要工作是:負責解密源Apk.然後載入Apk,讓其正常運行起來。
『貳』 怎麼加固安卓軟體
加固安卓軟體一般要達到以下效果:
1、防逆向:通過DEX 文件加殼以及DEX 虛擬化等技術,防止代碼被反編譯和逆向分析。
2、防篡改:通過校驗 APK 開發者簽名,防止被二次打包,植入廣告或惡意代碼。
3、防調試:防止應用被 IDA、JEB 等工具調試,動態分析代碼邏輯。
VirboxProtector安卓加固的核心技術一般有:
DEX 文件加密隱藏
對 DEX 文件加殼保護,防止代碼被竊取和反編譯。
SO 區段壓縮加密
對 SO 庫中的代碼段和數據段壓縮並加密,防止被 IDA 等工具反編譯。
單步斷點檢測
在混淆的指令中插入軟斷點檢測暗樁,防止native層run trace和單步調試。
防動態調試
防止應用被 IDA、JEB 等工具調試,動態分析代碼邏輯。
開發者簽名校驗
對 APK 中的開發者簽名做啟動時校驗,防止被第三方破解和二次打包。
SO 內存完整性校驗
在 SO 庫載入時校驗內存完整性,防止第三方對 SO 庫打補丁。
SO 代碼混淆
對 SO 庫中指定的函數混淆,通過指令切片、控制流扁平化、立即加密等技術手段,將 native 指令轉換為難以理解的復雜指令,無法被 IDA 反編譯,並且無法被還原。
SO 代碼虛擬化
對 SO 庫中指定的函數虛擬化,可以將 x86、x64、arm32、arm64 架構的機器指令轉換為隨機自定義的虛擬機指令,安全強度極高,可通過工具自定義配置,調整性能與安全性。
DEX 虛擬機保護
對 DEX 中的 dalvik 位元組碼進行虛擬化,轉換為自定義的虛擬機指令,最後由 native 層虛擬機解釋執行,防止逆向分析。
『叄』 安卓app360加固怎麼反編譯
1 對比
上傳demo進行加固,解包後對比下原包和加固包,發現加固包在assets文件夾下多了libjiagu.so,libjiagu_x86,lib文件夾下多了libjiagu_art.so,同時修改了dex文件和AndroidManifest文件
打開manifest文件,看到xxx加固對Application標簽做了修改,添加了殼入口,也就是我們反編譯後看到的StubApplication.smali這個文件。
相比於之前版本的加固,自從1.x.x.x加固版本之後,多了幾次反調試,使得動態難度稍微增大了一些,不過針對脫殼機脫殼,再多了反調試也是無用。或者通過修改系統源碼,也能達到消除反調試的作用。
2 動態調試
(1)把app安裝到手機,以調試模式打開app
(2)以shell模式root許可權打開IDA的android_server監聽
(3)tcp轉發
(4)打開IDA,修改配置為在進程開始時下斷
(5)搜索到進程後jdwp轉發,pid值即為我們進程號,並在命令行下附加。
成功附加後,可以下段了,打開Debugger Option
我們選擇在線程開始和庫載入時下斷,修改成功後,jdb附加,點擊運行
程序會斷在elf頭處,按下G鍵,搜索mmap,在mmap函數的段首和斷尾下段
F9運行,來到斷尾時F8單步,
來到此處時,在 BLunk_5C999C2C下斷,F9一下,F7跟進去
跟進去今後在BLX LR處進行下斷,此處就是進行反調試的地方,原理依然是獲取TracePid的值判斷當前是不是處於調試狀態,建議第一次調試的人在fgets和fopen處下斷,再f7跟進此調用就可以看到TracePid的值了。
跟進去之後,我們直接把方法移到最下方,就可以看到kill符號了,這就是殺進程的地方,如果當前處於調試狀態,則直接結束進程。
我們在此函數的所有cmpR0,#0處下斷,F9一下後即斷在斷點處,觀察寄存器窗口的R0值,實質就是當前的TracePid的16進制的值
不確定的可以使用cat /proc/pid/status進行對比一下,我們直接把R0置0,右鍵選擇Zero Value即可清0,繼續F9
我們看到程序又來到了mmap處,繼續f9
當繼續斷在調用反調試功能的方法時,繼續F7跟進,依然在所有的cmp R0,#0處下斷,斷下後把R0清0後繼續F9運行
目前的規律是,調用BLXLR的第一次,第二次和第四次是進行反調試判斷的,第三次並不影響,可以直接f9跳過去,三次反調試搞定後,就可以愉快的F9運行並觀察堆棧窗口了
當看到出現如下所示時:
說明殼已經開始解密並釋放dex文件了,我們直接F8單步十幾步,最後F9一下就可以看到我們需要的dex頭了
直接腳本mp出來即可,最後把libjiagu的所有文件刪除,並修復下Application標,如果存在則修復,不存在刪除即可