第一代壳 Dex加密
第二代壳 Dex抽取与So加固
第三代壳 Dex动态解密与So混淆
第四代壳 arm vmp(未来)
1.用加固厂商特征:
2.基于特征的识别代码
.gdbserver :1234 –attach pid .gdb (gdb) target remote :1234 (gdb) gcore
.gdbserver :1234 –attach pid .gdb (gdb) target remote :1234 (gdb) gcore |
coredump文件中搜索“dex.035”
Dex篇
ZjDroid http://bbs.pediy.com/showthread.php?t=190494
对付一切内存中完整的dex,包括壳与动态加载的jar
so篇
elfrebuild
构造soinfo,然后对其进行重建
针对无代码抽取且Hook dvmDexFileOpenPartial失败
Hook dexFileParse
http://androidxref.com/4.4_r1/xref/dalvik/vm/DvmDex.cpp
https://github.com/WooyunDota/DumpDex
针对无代码抽取且Hook dexFileParse失败
Hook memcmp
http://androidxref.com/4.4_r1/xref/dalvik/vm/DvmDex.cpp
修改安卓源码并刷机-针对无抽取代码
https://github.com/bunnyblue/DexExtractor
Hook dexfileParse
DexHunter-最强大的二代壳脱壳工具
https://github.com/zyq8709/DexHunter
DexHunter的工作流程:
DexHunter的工作原理:
绕过三进程反调试
http://bbs.pediy.com/showthread.php?p=1439627
修改系统源码后:
http://www.cnblogs.com/lvcha/p/3903669.html
ls /proc/345/task
./gdbserver :1234 --attach346 ... (gdb) gcore
./gdbserver :1234 --attach346 ... (gdb) gcore |
gcore防Dump解决方案:
http://bbs.pediy.com/showthread.php?t=198995
断点mmap调试,针对Hook dexFileParse无效
原理: dexopt优化时, dvmContinueOptimization()->mmap()
分析壳so逻辑并还原加密算法
http://www.cnblogs.com/2014asm/p/4924342.html
自定义linker脱so壳
https://github.com/devilogic/udog
main() -> dump_file()
ART模式下,dex2oat生成oat时,内存中的DEX是完整的
http://bbs.pediy.com/showthread.php?t=210532
Hook Dalvik_dalvik_system_DexFile_defineClassNative
枚举所有DexClassDef,对所有的class,调用dvmDefineClass进行强制加载
来自:Digg 投稿 Mottoin原创稿件,未经允许禁止转载!
未经允许不得转载:MottoIN » 常见app加固厂商脱壳方法研究