Something To Do Android Application Security Research
-
DEX/ODEX
- Dalvik 操作码
- DEX 文件格式 -> 出自虫神
- ODEX 文件格式 -> 出自虫神
-
AXML -> 出自虫神
- AXML 文件格式的修改: AmBinaryEditor、AndroidManifestFix
-
ARSC -> 出自虫神
-
OAT -> 出自虫神
-
ELF -> 出自虫神
-
文件格式分析工具
- 010 Editor
- gnu binutils
不知名网友的统概图(待完善)
-
Android-Crack-tool for Mac
支持常规的APK
编译与反编译功能 -
GDA
国内研发的APK
分析工具 【注:目前体验感不是太好】 -
Androguard
用来处理APK
的Python
工具包,很多自动化分析项目都内嵌 -
MobSF
跨平台开源自动化动态分析框架
IDA Pro
- Hopper
- 动态调试器
- GDB
- LLDB
- 编译与反编译
- 反编译查看
- JD-GUI
- JADX
- ByteCode Viewer -> 本人基本没用过
- dex-finder
快速寻找一个类所在 dex 的小工具
-
根据 r0ysue 知识星球的内容画的流程图
https://github.com/Darenfy/AppDroid_Sec/blob/main/img/init.png参考链接:https://wx.zsxq.com/dweb2/index/search/%E5%90%AF%E5%8A%A8/alltopics
HOOK 类型:
- Dalvik Hook
- ART Hook
- So Hook
- LD_PRELOAD Hook
- GOT Hook
- Inline Hook
Hook 注入框架:
动态注入:
- DEX 注入
- SO 注入
注:
- 当在进行 Hook 时,如果遇到错误,可以使用
cat /proc/pid/maps
查看所要 hook 的代码是否已经加载
- 资源加密
- 代码混淆
- 源码混淆
- 模版混淆
- AST 混淆
- IR 混淆
- DEX 混淆
- DEX 二次混淆
- 反调试技术
- 调试器状态
- 调试器端口
- 进程状态
- 运行环境检测
- 模拟器检测
- Root 检测
- Hook 检测
Android 壳迭代
- 动态加载型壳
基于压缩壳和加密壳,主要对本地的 DEX 文件、so 库、资源文件进行加密,运行时进行动态还原。一般会采用一定的反调试方法来阻止动态调试- 缓存脱壳法
- 内存 Dump 脱壳
- 动态调试脱壳
- Hook 脱壳
- 系统定制脱壳
- 代码抽取型壳
提取 DEX 方法进行加密保存,运行时调用 Native 解密方法进行还原,甚至会通过执行前解密,执行后加密方法防止内存 Dump。通常会采用多进程保护、API Hook 等反调试与反内存 Dump 技术- 内存重组脱壳
- Hook 脱壳
- 系统定制脱壳
- 代码混淆壳
基于 LLVM Pass 实现的代码混淆壳,使用较多的技术有指令变换、花指令混淆、指令混淆、代码流程混淆等- Obfuscator-LLVM
- 指令替换
- 控制流平坦化
- 伪造控制流
- 指令模式匹配 + 垃圾代码消除
- 确定相关块关系并修正
- 修改 bl 指令并修正
- Obfuscator-LLVM