配套实验资源

《移动安全》教材配套实验,涵盖从环境配置到高级安全技术的完整实践体系

Lab6 高级技术

代码混淆与解混淆

熟悉控制流混淆和命名混淆技术,掌握解混淆方法

实验目标

  1. 熟悉和理解安卓代码中的控制流混淆和命名混淆技术;
  2. 熟悉常见的安卓代码混淆场景,掌握对混淆代码的解混淆方法;
  3. 能够通过逆向工程完成简单的恶意软件行为分析。

前置准备

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待分析的恶意软件

注:下载该附件可能需要执行关闭防火墙等操作