XX客戶端APP簽名分析之脫殼篇
前言
對于當前的APP來說,基本都采用了加殼這一方式來對APP進行加固,這也是在算法分析上需要過的第一個點。在挖洞過程中,主要還是針對業務層邏輯進行分析處理,尋找漏洞點。因此本篇利用某園這一APP,側重點在于對脫殼原理的介紹和一些脫殼工具的分享和使用。
01 脫殼原理介紹
首先說一下殼的歷史發展。第一代殼是對Dex加密,會進行Dex字符串加密,資源加密,對抗反編譯,反調試,自定義DexClassLoader。
第二代殼是Dex抽取與So加固,對抗第一代殼常見的脫殼法,Dex Method代碼抽取到外部(通常企業版),Dex動態加載,So加密。
第三代殼是Dex動態解密與So混淆,Dex Method代碼動態解密,So代碼膨脹混淆,對抗之前出現的所有脫殼法。
然后現在出現了第四代加殼技術,就是vmp殼。
而我們脫殼就是要對內存中處于解密狀態的dex的dump。這就需要準確定位內存中解密后的dex文件的起始位置和大小。
02 常見殼的識別
對于市面上常見的殼,基本都可以通過其基本命名去判斷。
娜迦:libchaosvmp.so , libddog.solibfdog.so愛加密:libexec.so, libexecmain.so梆梆:libsecexe.so, libsecmain.so , libDexHelper.so360:libprotectClass.so, libjiagu.so通付盾:libegis.so網秦:libnqshield.so百度:libbaiduprotect.so騰訊:lejiagu
另外還可以使用工具如PKiD,APKDetecter等等。
03 Youpk
首先介紹一下Youpk這一工具,項目地址:
https://github.com/Youlor/Youpk
這也是筆者常用的方法,因為手頭上的測試機正好是pixel 1代,剛好適配。可以在分析的時候就把脫殼這件事做了,pixel+Youpk,站著就把錢賺了(手動狗頭)。可能唯一不足的地方就是需要刷機,不過作者已經提供了一鍵刷機的方法,因此問題也不大。使用方法也很簡單。首先在手機上啟動某園APP,然后
adb shell "echo cn.domo.domo >> /data/local/tmp/unpacker.config"
之后查看日志信息等待unpack end即可。


然后將文件pull出來直接導入jadx(jadx支持多dex分析,免去了修復的麻煩)即可進行java層分析。
04 FRIDA-DEXDump
這是hluwa大佬的作品,項目地址:
https://github.com/hluwa/FRIDA-DEXDump
只需要frida環境即可使用。可以運行frida-dexdump或者python3 main.py進行脫殼。

05 BlackDex
這是一個最近出來的工具,是最最最支持傻瓜式操作的,項目地址:
https://github.com/CodingGay/BlackDex
官方介紹:BlackDex是一個運行在Android手機上的脫殼工具,支持5.0~12,無需依賴任何環境任何手機都可以使用,包括模擬器。只需幾秒,即可對已安裝包括未安裝的APK進行脫殼。項目包括32位和64位,Google 已經在2019年9月強制所有新上架 Google Play 的應用提供 64 位版本,64取代32是趨勢。不過國內的apk,還有很大一部分都是32位。因此如果其中一個版本沒有顯示你想脫殼的apk就選擇另一個版本。筆者使用的一加9+balckdex 32位進行測試。只需5秒,就出結果了。

并且blackdex還支持深度脫殼,但是還是不太穩定,期待后續吧。
06 總結
本篇文章主要注重了脫殼這一過程,沒有很深入的介紹脫殼中的技術點,畢竟表哥們還要把更多的精力放在后續的挖洞上,有更多關于脫殼的想法以及一些騷操作大家可以在評論區積極討論。下一篇就將進行脫殼后的簽名算法分析。