Android常見App加固廠商脫殼方法的整理

目錄

  1. 簡述(脫殼前學習的知識、殼的歷史、脫殼方法)
  2. 第一代殼
  3. 第二代殼
  4. 第三代殼
  5. 第N代殼

簡述

  1. Apk文件結構
  2. Dex文件結構
  3. 殼史
  4. 殼的識別

Apk文件結構

1

Dex文件結構

2

殼史

第一代殼 Dex加密php

  1. Dex字符串加密
  2. 資源加密
  3. 對抗反編譯
  4. 反調試
  5. 自定義DexClassLoader

第二代殼 Dex抽取與So加固html

  1. 對抗第一代殼常見的脫殼法
  2. Dex Method代碼抽取到外部(一般企業版)
  3. Dex動態加載
  4. So加密

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

  1. Dex Method代碼動態解密
  2. So代碼膨脹混淆
  3. 對抗以前出現的全部脫殼法

第四代殼 arm vmp(將來)git

  1. vmp

殼的識別

1.用加固廠商特徵:github

  • 娜迦: libchaosvmp.so , libddog.solibfdog.so
  • 愛加密:libexec.so, libexecmain.so
  • 梆梆: libsecexe.so, libsecmain.so , libDexHelper.so
  • 360:libprotectClass.so, libjiagu.so
  • 通付盾:libegis.so
  • 網秦:libnqshield.so
  • 百度:libbaiduprotect.so

2.基於特徵的識別代碼算法

3

第一代殼

  1. 內存Dump法
  2. 文件監視法
  3. Hook法
  4. 定製系統
  5. 動態調試法

內存Dump法

  • 內存中尋找dex.035或者dex.036
  • /proc/xxx/maps中查找後,手動Dump

4

5

6

7

文件監視法

8

9

10

Hook法

11

12

定製系統

  • 修改安卓源碼並刷機

13

14

動態調試法

  • IDA Pro

15

16

17

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

coredump文件中搜索「dex.035」工具

18

第二代殼

  1. 內存重組法
  2. Hook法
  3. 動態調試
  4. 定製系統
  5. 靜態脫殼機

內存重組法

Dex篇學習

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

對付一切內存中完整的dex,包括殼與動態加載的jarui

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

第三代殼

  1. dex2oat法
  2. 定製系統

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代殼

  1. so + vmp
  2. 動態調試 + 人肉還原


相關文章
相關標籤/搜索