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

本文轉載自:http://www.mottoin.com/89035.html

目錄

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

簡述

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

Apk文件結構

1

Dex文件結構

2

殼史

第一代殼 Dex加密

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

第二代殼 Dex抽取與So加固

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

第三代殼 Dex動態(tài)解密與So混淆

  1. Dex Method代碼動態(tài)解密
  2. So代碼膨脹混淆
  3. 對抗之前出現的所有脫殼法

第四代殼 arm vmp(未來)

  1. vmp

殼的識別

1.用加固廠商特征:

  • 娜迦: 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. 文件監(jiān)視法
  3. Hook法
  4. 定制系統
  5. 動態(tài)調試法

內存Dump法

  • 內存中尋找dex.035或者dex.036
  • /proc/xxx/maps中查找后,手動Dump
4
5
6
7

文件監(jiān)視法

8
9
10

Hook法

11
12

定制系統

  • 修改安卓源碼并刷機
13
14

動態(tài)調試法

  • IDA Pro
15
16
17
  • gdb gcore法

<pre class="" style="box-sizing: border-box; overflow: auto; font-family: monospace, monospace; font-size: 16px; color: rgb(68, 68, 68); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">.gdbserver :1234 –attach pid
.gdb
(gdb) target remote :1234
(gdb) gcore</pre>

coredump文件中搜索“dex.035”

18

第二代殼

  1. 內存重組法
  2. Hook法
  3. 動態(tài)調試
  4. 定制系統
  5. 靜態(tài)脫殼機

內存重組法

Dex篇

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

對付一切內存中完整的dex,包括殼與動態(tài)加載的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

<pre class="" style="box-sizing: border-box; overflow: auto; font-family: monospace, monospace; font-size: 16px; color: rgb(68, 68, 68); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">ls /proc/345/task</pre>

38

<pre class="" style="box-sizing: border-box; overflow: auto; font-family: monospace, monospace; font-size: 16px; color: rgb(68, 68, 68); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">./gdbserver :1234 --attach346
...
(gdb) gcore</pre>

gcore防Dump解決方案:

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

斷點mmap調試,針對Hook dexFileParse無效

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

39

靜態(tài)脫殼機

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

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

40

自定義linker脫so殼

https://github.com/devilogic/udog

<pre class="" style="box-sizing: border-box; overflow: auto; font-family: monospace, monospace; font-size: 16px; color: rgb(68, 68, 68); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">main() -> dump_file()</pre>

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進行強制加載

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容