跳到主要内容

实验 1:Android 和 APK


实验目的

  • 了解 Android 系统的平台架构和运行机制
  • 了解 apk 文件的构成
  • 了解 Android 逆向的基本内容
  • 接触并使用集成度较高的工具对 app 进行简单的分析

实验内容

阅读并了解「Android 系统」和「Android 应用程序包

实验所需的 apk 参见 环境与材料

实验提供的 app 为文件管理器,请选择一个完成以下的任务:

  • 对 apk 进行反编译得到产物,描述产物的目录结构及其作用是什么:

    • 使用高集成度的逆向工具:
      • jadx: 集成化的开源 apk 反编译工具,支持命令行和 gui
      • GDA 和 Android Killer 等
    • 分类型的进行处理, 可以使用较为流行的 Android 反编译组合:
      • apktool:获取资源文件,提取图片文件,布局文件,还有一些 XML 的资源文件
      • dex2jar:将 APK 反编译成 Java 源码(将 classes.dex 转化为 jar 文件)
      • jd-gui:对 jar 文件的反编译
  • 尝试对 app 进行简单的修改,并安装运行,如下是一些可行的更改:

    • 修改 AndroidManifest.xml,更改 app 的名称等
    • 修改资源文件,更改文字内容或者界面样式
    • 更改代码逻辑,更改跳转或activity
  • 阅读 AndroidManifest.xml, 找到 app 的入口activity,使用Androguard或其他工具绘制从入口 activity 开始的函数调用关系图

选择一个或多个app并完成:

  • 使用现有的 Android 分析工具或框架对 app 进行分析,并对比其功能特性,以下推荐两个:

实验报告

实验报告应该清晰、有条理,有良好的格式和结构, 并且严禁抄袭

实验报告应包括以下内容:

  1. 选择哪种工具对 app 进行反编译,反编译得到的产物目录结构和代码结构的截图,并回答以下问题
    • 什么是加壳和脱壳,什么是加固
    • 什么是混淆
  2. 描述对 app 做了何种修改,修改前和修改后的安装并运行的对比截图,并回答以下问题
    • 二次打包会遇到什么样的问题
    • 简述二次打包的防范机制
  3. 给出 app 的入口activity的调用关系图,并回答以下问题
    • 作为文件管理app,其正常需要的最小权限有哪些,该app多索要了哪些权限
    • 选择一个非必需的权限,描述获得该权限以后有哪些API可以调用
  4. 描述使用了哪些 Android 分析工具或框架(不少于2个)对 app 进行了分析,概述不同的分析工具的特点或优缺点,可以从不限于以下的方面组织你的回答
    • 衡量指标
    • 分析途径
    • 性能和效果
    • \cdots

Bonus: 了解工具的工作原理或流程并进行简单的描述

实验提交

随堂验收

在实验截止日期之前的3月15日(周三)课上会要求小组对实验内容进行随堂验收

  • 汇报实验采取的方案
  • 展示实验结果

报告提交截止日期: 2023.3.19 23:59

lab1-学号-姓名.zip
└─lab1-学号-姓名
├─lab1-report-学号.pdf
└─附件