1. 程式人生 > >常見android app加固廠商脫殼方法研究

常見android app加固廠商脫殼方法研究

目錄簡述(脫殼前學習的知識、殼的歷史、脫殼方法)
第一代殼
第二代殼
第三代殼
第N代殼
簡述Apk檔案結構Dex檔案結構殼史殼的識別Apk檔案結構

1

Dex檔案結構

2

殼史

第一代殼 Dex加密

Dex字串加密資源加密對抗反編譯反除錯自定義DexClassLoader

第二代殼 Dex抽取與So加固

對抗第一代殼常見的脫殼法Dex Method程式碼抽取到外部(通常企業版)Dex動態載入So加密

第三代殼 Dex動態解密與So混淆

Dex Method程式碼動態解密So程式碼膨脹混淆對抗之前出現的所有脫殼法

第四代殼 arm vmp(未來)

vmp殼的識別

1.用加固廠商特徵:

娜迦: 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

2.基於特徵的識別程式碼

3

第一代殼記憶體Dump法檔案監視法Hook法定製系統動態除錯法記憶體Dump法記憶體中尋找dex.035或者dex.036

/proc/xxx/maps中查詢後,手動Dump

4

android-unpacker https://github.com/strazzere/android-unpacker

5

drizzleDumper https://github.com/DrizzleRisk/drizzleDumper 升級版的android-unpacker,read和lseek64代替pread,匹配dex代替匹配odex

6

IDA Pro + dumpDEXdumpDex https://github.com/CvvT/dumpDex

7

檔案監視法Dex優化生成odexinotifywait-for-Android https://github.com/mkttanabe/inotifywait-for-Android

監視檔案變化

8

notifywait-for-Android https://github.com/mkttanabe/inotifywait-for-Android監視DexOpt輸出

9

10

Hook法Hook dvmDexFileOpenPartial http://androidxref.com/4.4_r1/xref/dalvik/vm/DvmDex.cpp

11

12

定製系統修改安卓原始碼並刷機

13

DumpApk https://github.com/CvvT/DumpApk只針對部分殼

14

動態除錯法IDA Pro

15

16

17

gdb gcore法

.gdbserver :1234 –attach pid .gdb (gdb) target remote :1234 (gdb) gcore

 

coredump檔案中搜索“dex.035”

18

第二代殼記憶體重組法Hook法動態除錯定製系統靜態脫殼機記憶體重組法

Dex篇

ZjDroid http://bbs.pediy.com/showthread.php?t=190494

對付一切記憶體中完整的dex,包括殼與動態載入的jar

19

20

so篇

elfrebuild

21

22

構造soinfo,然後對其進行重建

23

24

Hook法

針對無程式碼抽取且Hook dvmDexFileOpenPartial失敗

Hook dexFileParse

http://androidxref.com/4.4_r1/xref/dalvik/vm/DvmDex.cpp

25

https://github.com/WooyunDota/DumpDex

26

針對無程式碼抽取且Hook dexFileParse失敗

Hook memcmp

http://androidxref.com/4.4_r1/xref/dalvik/vm/DvmDex.cpp

27

28

定製系統

修改安卓原始碼並刷機-針對無抽取程式碼

https://github.com/bunnyblue/DexExtractor

29

Hook dexfileParse

30

31

DexHunter-最強大的二代殼脫殼工具

https://github.com/zyq8709/DexHunter

DexHunter的工作流程:

32

DexHunter的工作原理:

33

繞過三程序反除錯

http://bbs.pediy.com/showthread.php?p=1439627

34

35

修改系統原始碼後:

36

http://www.cnblogs.com/lvcha/p/3903669.html

37

ls /proc/345/task

 

38

./gdbserver :1234 --attach346 ... (gdb) gcore

 

gcore防Dump解決方案:

http://bbs.pediy.com/showthread.php?t=198995

斷點mmap除錯,針對Hook dexFileParse無效

原理: dexopt優化時, dvmContinueOptimization()->mmap()

39

靜態脫殼機

分析殼so邏輯並還原加密演算法

http://www.cnblogs.com/2014asm/p/4924342.html

40

自定義linker脫so殼

https://github.com/devilogic/udog

main() -> dump_file()

 

41

第三代殼dex2oat法定製系統dex2oat法

ART模式下,dex2oat生成oat時,記憶體中的DEX是完整的

http://bbs.pediy.com/showthread.php?t=210532

43

定製系統

Hook Dalvik_dalvik_system_DexFile_defineClassNative

列舉所有DexClassDef,對所有的class,呼叫dvmDefineClass進行強制載入

44

第N代殼so + vmp動態除錯 + 人肉還原

原文連結:http://www.mottoin.com/89035.html