代码混淆与解混淆
熟悉控制流混淆和命名混淆技术,掌握解混淆方法
实验目标
- 熟悉和理解安卓代码中的控制流混淆和命名混淆技术;
- 熟悉常见的安卓代码混淆场景,掌握对混淆代码的解混淆方法;
- 能够通过逆向工程完成简单的恶意软件行为分析。
前置准备
1. 理论知识学习
进行本 Lab 前请先完成教材第5章、第6章和第8章的学习,包括 5.1.1 节 Jadx 的安装使用、6.3.1 节代码混淆、8.2 节恶意软件检测。
2. 实验环境
- Jadx 逆向工具
- Android Studio 开发环境
- 有 Root 权限的安卓设备或安卓模拟器
任务描述
任务1 控制流解混淆
taskA.apk 是一个混合了无用代码且控制流扁平的安卓应用。该任务需要逆向该 APK 文件,分析和猜测代码逻辑,得到一个可以使该文件显示 "You are correct!!" 的输入(flag)。
任务2 命名解混淆
taskB 文件夹中提供了 3 个恶意安卓应用,在这些应用中有一些字符串是加密的。该任务需要逆向这三个恶意安卓应用,分析这些字符串进行了哪些转换,并尝试通过编程恢复字符串的原始值。
请注意:给定的 task_question.txt 文件中,每一行通过三个字段表示一个 String 变量在应用中的位置,每一行从左至右分别为:加密字符串所在应用的名称,包含该字符串的类名,需要恢复的加密字符串。
任务3 恶意软件行为分析
目标恶意软件 Spam Blocker(建议在运行时使用 AS 自带的模拟器,并关闭网络连接)的恶意功能是监控和劫持短信的收发,请分析其隐藏的恶意行为。
提示如下:
- 分析当设备重启后,软件执行了什么操作
- 分析恶意软件保持运行的做法,对什么服务上锁,启动了什么组件
- 分析恶意软件建立的与 Command 相关的网络连接
- 分析恶意软件监听的短信发送的手机号列表,不包括设备手机号
- 分析恶意软件将截获的短信发送到何处
请注意:该实验任务2和任务3的 APK 文件请不要尝试在自己的移动设备上安装。
结果提交形式
- lab6_code.zip:本次实验中的实验代码,即实现任务1、任务2的代码
- lab6_result.txt:本次实验的实验结果,包括任务1的输入和任务2恢复的原始字符串值
- lab6.docx:本次实验的实验报告,包括实验目标、实验过程、实验结果和实验心得等
评分标准
1. 完成任务1(25%)
得到正确的 flag 值
2. 完成任务2(15%)
每个正确恢复的加密字符串占5%
3. 完成任务3(30%)
五个恶意行为,每个正确分析的恶意行为占6%
4. 实验报告(30%)
内容完整性和原创性(20%)
- 报告包含实验目的、详细步骤、结果、总结思考等关键部分
- 代码设计遵循代码规范,有必要的解释说明
报告撰写和表达(10%)
- 报告格式规范,语言表达清晰
- 能够适当使用图表等辅助说明报告内容
实验资源
Lab6 实验资源包
包含本次实验所需的全部资源文件
资源包内容
taskA/
包含任务1所需的安卓应用 APK 文件
SpamBlocker.apk
包含任务3待分析的恶意软件
注:下载该附件可能需要执行关闭防火墙等操作