目录

  1. 简述(脱壳前学习的知识、壳的历史、脱壳方法)
  2. 第一代壳
  3. 第二代壳
  4. 第三代壳
  5. 第N代壳

简述

  1. Apk文件结构
  2. Dex文件结构
  3. 壳史
  4. 壳的识别

Apk文件结构

Android常见App加固厂商脱壳方法的整理

Dex文件结构

Android常见App加固厂商脱壳方法的整理

壳史

第一代壳 Dex加密

  1. Dex字符串加密
  2. 资源加密
  3. 对抗反编译
  4. 反调试
  5. 自定义DexClassLoader

第二代壳 Dex抽取与So加固

  1. 对抗第一代壳常见的脱壳法
  2. Dex Method代码抽取到外部(通常企业版)
  3. Dex动态加载
  4. So加密

第三代壳 Dex动态解密与So混淆

  1. Dex Method代码动态解密
  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.基于特征的识别代码

Android常见App加固厂商脱壳方法的整理

第一代壳

  1. 内存Dump法
  2. 文件监视法
  3. Hook法
  4. 定制系统
  5. 动态调试法

内存Dump法

  • 内存中寻找dex.035或者dex.036
  • /proc/xxx/maps中查找后,手动Dump

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

文件监视法

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

Hook法

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

定制系统

  • 修改安卓源码并刷机

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

动态调试法

  • IDA Pro

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

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

coredump文件中搜索“dex.035”

Android常见App加固厂商脱壳方法的整理

第二代壳

  1. 内存重组法
  2. Hook法
  3. 动态调试
  4. 定制系统
  5. 静态脱壳机

内存重组法

Dex篇

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

对付一切内存中完整的dex,包括壳与动态加载的jar

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

so篇

elfrebuild

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

构造soinfo,然后对其进行重建

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

Hook法

针对无代码抽取且Hook dvmDexFileOpenPartial失败

Hook dexFileParse

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

Android常见App加固厂商脱壳方法的整理

https://github.com/WooyunDota/DumpDex

Android常见App加固厂商脱壳方法的整理

针对无代码抽取且Hook dexFileParse失败

Hook memcmp

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

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

定制系统

修改安卓源码并刷机-针对无抽取代码

https://github.com/bunnyblue/DexExtractor

Android常见App加固厂商脱壳方法的整理

Hook dexfileParse

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

DexHunter-最强大的二代壳脱壳工具

https://github.com/zyq8709/DexHunter

DexHunter的工作流程:

Android常见App加固厂商脱壳方法的整理

DexHunter的工作原理:

Android常见App加固厂商脱壳方法的整理

绕过三进程反调试

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

Android常见App加固厂商脱壳方法的整理

Android常见App加固厂商脱壳方法的整理

修改系统源码后:

Android常见App加固厂商脱壳方法的整理

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

Android常见App加固厂商脱壳方法的整理

ls /proc/345/task

Android常见App加固厂商脱壳方法的整理

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

gcore防Dump解决方案:

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

断点mmap调试,针对Hook dexFileParse无效

原理: dexopt优化时, dvmContinueOptimization()->mmap()

Android常见App加固厂商脱壳方法的整理

静态脱壳机

分析壳so逻辑并还原加密算法

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

Android常见App加固厂商脱壳方法的整理

自定义linker脱so壳

https://github.com/devilogic/udog

main() -> dump_file()

Android常见App加固厂商脱壳方法的整理

第三代壳

  1. dex2oat法
  2. 定制系统

dex2oat法

ART模式下,dex2oat生成oat时,内存中的DEX是完整的

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

Android常见App加固厂商脱壳方法的整理

定制系统

Hook Dalvik_dalvik_system_DexFile_defineClassNative

枚举所有DexClassDef,对所有的class,调用dvmDefineClass进行强制加载

Android常见App加固厂商脱壳方法的整理

第N代壳

  1. so + vmp
  2. 动态调试 + 人肉还原


相关文章:

  • 2022-02-15
  • 2021-10-13
  • 2022-01-16
  • 2021-11-30
  • 2022-01-14
  • 2022-12-23
  • 2021-10-17
  • 2021-05-02
猜你喜欢
  • 2021-12-12
  • 2021-12-29
  • 2021-11-22
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案