通过逆向工程提取应用代码和资源文件,分析潜在风险。
常用工具与操作:
apktool d app.apk
jadx -d app.apk
getDeviceId()
、readPhoneState()
)权限与组件分析表
| 文件类型 | 分析目标 | 风险示例 |
|——————|———————————–|————————————-|
| AndroidManifest.xml | 权限声明、组件导出状态 | 未使用的敏感权限(如READ_SMS) |
| resources.arsc | 字符串/颜色值中隐藏的敏感信息 | 含”password”字段的硬编码字符串 |
| DEX文件 | 加密/混淆代码逻辑 | 动态加载DexClassLoader的可疑代码 |
在沙箱环境中运行应用,监控其行为。
关键监测维度:
api.example.com
vs 可疑IP)strace
或SELinux日志监控文件读写/data/data/包名/
目录下的敏感文件操作ps
命令检测后台服务logcat
抓取关键日志(关键词:SQLite
, WebView
)动态调试工具对比表
| 工具 | 适用场景 | 典型命令 |
|—————|—————————–|———————————–|
| Frida | 实时修改运行时内存 | frida -U -f com.target --no-pause
|
| Xposed | Hook系统API调用 | 编写模块hook Landroid/telephony
|
| Appium | 自动化UI交互测试 | driver.find_element_by_id("btn")
|
通过模式识别发现异常行为。
常见风险行为特征:
SYSTEM_ALERT_WINDOW
却无合理用途adb shell dumpsys alarm
检测)exported=true
且无permission
)webView.getSettings().setJavaScriptEnabled(true)
)rawQuery("SELECT FROM users WHERE name='$input'")
)getIntent().getStringExtra("key")
直接使用)利用自动化平台快速筛查已知威胁。
平台特性对比:
| 平台 | 检测速度 | 干扰库更新频率 | 特色功能 |
|—————–|———-|—————-|——————————-|
| VirusTotal | 快 | 实时 | 多引擎扫描报告对比 |
| APKMirror | 中等 | 每日 | 版本历史对比 |
| AndroGuard | 慢 | 手动 | 代码结构可视化分析 |
使用建议:
strings app.apk | grep -i "malware"
预检aapt dump permissions
交叉验证权限声明Q1:如何判断应用是否存在代码混淆防护?
A1:通过以下特征识别:
a/b/c/d
等无意义类名 reflection
或JNI
实现 jadx
查看控制流图) -keep
关键字)Q2:如何检测应用是否通过第三方SDK收集用户数据?
A2:执行以下步骤:
apktool
解压后搜索.so
文件,记录第三方SDK库名 grep -r "adservice" .
查找广告SDK相关代码 tcpdump
抓包,观察是否向陌生域名发送数据 mvsdk
标识