Java 语言基础
Android 开发基础
- Android 源码编译
- Android 开发基础知识
- AndroidManifest.xml
- Android 工程相关文件说明
- Android NDK 开发基础
- Android 基于监听的事件处理机制
- Android Handler 消息传递机制
- Android 基于回调的事件处理机制
Android 安全概述
Android 应用安全
- Android Application Security
- OWASP Mobile top 10_2014
- Android Activity Security
- Android Broadcast Security
- Android Content Provider Security
- Android Logcat Security
- Android Service Security
Android 逆向基础
Android 系统安全
Android 调试工具
- Smali Instrumentation
- Ida Pro
- Android Hook(上)
- Android Hook(下)
- Android Hook 框架(Cydia 篇)
- Android Hook 框架(XPosed 篇)
- Android Java 层的 Anti Hook 技巧
- Android 应用程序通用脱壳方法研究
- Android ART 运行时(上)
- Android ART 运行时(下)
- 初识 JEBAPI
- 常见 App 加固厂商脱壳方法
- Android Hook 技术防范漫谈
- Android Native Hook 技术线路概述
- Android Native Hook 工具实践
- Android Inline Hook 的指令修复详解
常见 App 加固厂商脱壳方法
Apk文件结构
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.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
文件监视法
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
动态调试 + 人肉还原
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论