常见android app加固厂商脱壳方法研究
目录简述(脱壳前学习的知识、壳的历史、脱壳方法) Dex文件结构 壳史 第一代壳 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.基于特征的识别代码 第一代壳内存Dump法文件监视法Hook法定制系统动态调试法内存Dump法内存中寻找dex.035或者dex.036/proc/xxx/maps中查找后,手动Dump android-unpacker https://github.com/strazzere/android-unpacker drizzleDumper https://github.com/DrizzleRisk/drizzleDumper 升级版的android-unpacker,read和lseek64代替pread,匹配dex代替匹配odex IDA Pro + dumpDEXdumpDex https://github.com/CvvT/dumpDex 文件监视法Dex优化生成odexinotifywait-for-Android https://github.com/mkttanabe/inotifywait-for-Android监视文件变化 notifywait-for-Android https://github.com/mkttanabe/inotifywait-for-Android监视DexOpt输出 Hook法Hook dvmDexFileOpenPartial http://androidxref.com/4.4_r1/xref/dalvik/vm/DvmDex.cpp 定制系统修改安卓源码并刷机 DumpApk https://github.com/CvvT/DumpApk只针对部分壳 动态调试法IDA Pro gdb gcore法 .gdbserver :1234 Cattach pid .gdb (gdb) target remote :1234 (gdb) gcore coredump文件中搜索“dex.035” 第二代壳内存重组法Hook法动态调试定制系统静态脱壳机内存重组法 Dex篇 ZjDroid http://bbs.pediy.com/showthread.php?t=190494 对付一切内存中完整的dex,包括壳与动态加载的jar so篇 elfrebuild 构造soinfo,然后对其进行重建 Hook法 针对无代码抽取且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 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() 第三代壳dex2oat法定制系统dex2oat法 ART模式下,dex2oat生成oat时,内存中的DEX是完整的 http://bbs.pediy.com/showthread.php?t=210532 定制系统 Hook Dalvik_dalvik_system_DexFile_defineClassNative 枚举所有DexClassDef,对所有的class,调用dvmDefineClass进行强制加载 第N代壳so + vmp动态调试 + 人肉还原 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |