Android常见App加固厂商脱壳方法的整理
目录
- 简述(脱壳前学习的知识、壳的历史、脱壳方法)
- 第一代壳
- 第二代壳
- 第三代壳
- 第N代壳
简述
- Apk文件结构
- Dex文件结构
- 壳史
- 壳的识别
Apk文件结构
Dex文件结构
壳史
第一代壳 Dex加密
- Dex字符串加密
- 资源加密
- 对抗反编译
- 反调试
- 自定义DexClassLoader
第二代壳 Dex抽取与So加固
- 对抗第一代壳常见的脱壳法
- Dex Method代码抽取到外部(通常企业版)
- Dex动态加载
- So加密
第三代壳 Dex动态解密与So混淆
- Dex Method代码动态解密
- So代码膨胀混淆
- 对抗之前出现的所有脱壳法
- HOOK Dalvik的解释器的壳
第四代壳 arm vmp(未来)
- 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.基于特征的识别代码
第一代壳
- 内存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 + dumpDEX
- dumpDex https://github.com/CvvT/dumpDex
文件监视法
- Dex优化生成odex
- inotifywait-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 –attach 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
- 动态调试 + 人肉还原
Android常见App加固厂商脱壳方法的整理相关推荐
- android elf 加固_Android常见App加固厂商脱壳方法的整理
目录 简述(脱壳前学习的知识.壳的历史.脱壳方法) 第一代壳 第二代壳 第三代壳 第N代壳 简述 Apk文件结构 Dex文件结构 壳史 壳的识别 Apk文件结构 Dex文件结构 壳史 第一代壳 Dex ...
- 常见app加固厂商脱壳方法研究
转自:http://www.mottoin.com/89035.html 目录 简述(脱壳前学习的知识.壳的历史.脱壳方法) 第一代壳 第二代壳 第三代壳 第N代壳 简述 Apk文件结构 Dex文件结 ...
- 常见android app加固厂商脱壳方法研究
这篇文章主要介绍了常见android app加固厂商脱壳方法研究,需要的朋友可以参考下 目录简述(脱壳前学习的知识.壳的历史.脱壳方法) 第一代壳 第二代壳 第三代壳 第N代壳 简述Apk文件结构De ...
- android 监控行为,一种针对Android系统App行为的监控方法
主权项: 1.一种针对Android系统App行为的监控方法,通过安全内核实现方法在Android内核层添加模块,实现对整个Android系统的系统调用的拦截与监控:包括如下步骤:S1.编写内核模块: ...
- APP加固和脱壳方案总结
原文链接 APP安全合规 APP安全浅析 APP隐私合规 APP安全检测 APP安全检测解决方案浅析 CTF逆向指南 App逆向|ART下整体壳的解决方案(一) App逆向|ART下抽取壳的解决方案( ...
- Android 常见内存泄漏及解决方法
Android中的内存泄漏: 先说一下为什么会出现内存泄漏: Android程序开发中,如果一个对象已经不需要被使用了,本该被回收时,而这时另一个对象还在持有对该对象的引用,这样就会导致无法被GC回收 ...
- Android packages Android常见APP对应包名
instagram com.instagram.android facebook com.facebook.katana messenger com.facebook.orca whatsapp co ...
- android控件使用大全,Android常见控件使用详解
本文实例为大家分享了六种Android常见控件的使用方法,供大家参考,具体内容如下 1.TextView 主要用于界面上显示一段文本信息 2.Button 用于和用户交互的一个按钮控件 //为Butt ...
- 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | 加固厂商在 ART 下使用的两种类加载器 | InMemoryDexClassLoader 源码 )
文章目录 一.加固厂商在 ART 下使用的两种类加载器 ( InMemoryDexClassLoader | DexClassLoader ) 二.InMemoryDexClassLoader 源码分 ...
最新文章
- 数据智能与计算机图形学领域推荐论文列表
- linux下mysql的root密码忘记解决方
- linux下查看cpu负载及分析
- python 对话框的创建及调用_单击按钮创建新对话框
- 深入理解java虚拟机(十三) Java 即时编译器JIT机制以及编译优化
- 为什么不建议学python贴吧_为什么那么多自学Python的后来都放弃了,总结下来就这些原因...
- python docx包_[Python02] Python-docx包的使用,快速处理 Word 文件!
- rfc方式的集成 sap_转载: 与SAP集成的接口方式比较:IDOC BAPI RFC 之间的区别
- 博通:NFC将成手机标配nbsp;新芯…
- springmvc请求参数获取的几种方法
- 如何高效的使用Google
- Python 总体架构
- 【云原生 | Docker篇】 Docker容器配置阿里云镜像加速器
- matlab所有画图函数总结——20210318
- wps带阴影的边框怎么设置_win10系统设置wps阴影边框的具体办法
- 2023-2029年中国LED产业园区行业市场深度监测及战略咨询研究报告
- WinCC RT Adv 项目下载与自动运行
- Masm 如何调试汇编代码
- linux redis 远程访问
- 利用Html与css从零开始制作基础静态网页(web课设)
热门文章
- C语言课设-班级成绩统计分析
- 【循环测试试题】数字游戏
- QDockWidget 简单的自定义标题栏
- 百度Web前端开发实战案例解析
- 汽车理论动力性仿真-MATLAB
- windows10 结桌面进程,蓝屏
- Google 街景已增至37个城市
- 世纪前线网络质量测试工具 是什么_上海控安发布汽车信息安全评估工具箱:一款标准化、自动化的安全测试工具...
- 2015年图灵奖--惠特菲尔特·迪菲和马丁·赫尔曼简介
- 安徽省计算机应用对口招生好考吗,安徽省对口高考计算机专业考本科是不是难考...