0x00:APK加固簡介
- 大家都知道Android中的程序反編譯比較簡單,辛苦開發出一個APK輕易被人反編譯了,所以現在就有很多APK加固的第三方平台,比如愛加密和梆梆加固、360加固等。
- 一般的加固保護通常能夠提供如下保護:加密、防逆向、防篡改、反調試、反竊取等功能。
0x01:愛加密流程簡單分析(dalvik)
0x02:殼運行流程大致如下:
0x03:愛加密企業版加固后Apk反編譯如下
從上圖可以看到方法指令都被抽走了 。
0x04:靜態脫殼機編寫
加殼時將方法指令抽走后自定義格式加密存放在assets/ijiami.ajm文件中,通過IDA動態調試分析發現每個被抽走的方法的debuginfo值改成0X3F開始的8字節大不的值,該值在還原時做為Map的KEY。
還原后的結構大致如下:
殼還原指令時流程如下:
- 寫靜態脫殼機須要還原解密算法,它的數據又做了多重加密所以要還原多個算法,其實算法本身並不復雜,但愛加密殼做了混淆,所以比較難找有用的指令,還原后的其中一個算法如下:
-
0x05:測試與總結
- 將解密后的指令填充到DEX后能正常反編譯出源代碼。
- OLLVM混淆后的代碼分析起來目前對於我個人來說有兩個難點:
- 1.很難理清程序流程邏輯。
- 2.還原算法時不好提取出有用的代碼。
- 代碼與樣本下載:鏈接: https://pan.baidu.com/s/1slsBYxf 密碼: 87xa