配套实验资源
感谢您关注我们的《移动安全》教材。如果您想要相关资源以及答案,请将您的姓名、教育邮箱、学校及学院信息发送至 xxxxx@xxx.com。
请您放心,我们承诺将严格保护您的信息安全。感谢您的信任与支持!
一、实验目标
1. 学习和理解adb调试工具的基本使用方法,能够熟练使用adb工具的常用命令;
2. 熟悉Frida动态插桩工具的基本使用方法,能够根据需求使用Frida对Java层代码进行动态插桩。
二、前置准备
1. 知识学习
进行本实验前请先完成教材第2章、第5章和第6章的学习,主要包括2.2.2节安卓应用调试环境搭建,5.1.1节逆向工具Jadx的使用。
2. web服务搭建
从安卓官方安装adb工具,并将其添加到环境变量。
常用命令如下:
ADB命令
描述
adb devices
查看手机设备
adb install package
安装应用
adb shell
连接终端的shell
adb shell pm list packages -3
查看手机里所有的第三方包名,如果已经在shell,则不需要加adb shell
adb push D:/xx.text /sdcard/xx.text
将主机上的文件发送到手机
adb pull /sdcard/xx.text D:/xx.text
将手机上的文件下载到主机
adb shell am start -n
包名/类的全名 启动导出的活动
adb logcat
查看log日志
adb shell dumpsys activity top | grep ACTIVITY
查看当前运行的Activity
adb shell getprop ro.product.cpu.abi
查看手机的abi
3. Frida环境配置
pip3 install frida
pip3 install frida-tools
pip3 show frida 查看frida的版本,默认安装最新的16.2.1
首先需要配置python3环境,之后使用pip/pip3下载Frida相关的包
下载与frida版本一致的frida server,例如arm64的设备下载frida-server-16.2.1-android-arm64。将server通过adb工具传输到手机,赋予可执行权限并启动。
以frida-server-16.2.1-android-arm64为例:
adb shell
su
cd /data/local/tmp
chmod 777 frida-server-16.2.1-android-arm64
./frida-server-16.2.1-android-arm64
4. Frida脚本自动补全
1. 从NodeJs官网安装Node.js
2. 编写JS脚本可参考Frida官网的JS API,为了方便编写,可结合VS Code配置脚本自动补全功能。使用cnpm/npm i @types/frida-gum
将模块安装到当前目录。
3. 使用VS Code打开该目录,创建test.js之后即可使用Frida代码补全功能。
5. Frida基本使用
使用流程:编写注入脚本,注入指定进程
• frida -U XXX -l frida_1.js
XXX是包名、进程名 -l 后跟注入的脚本
• frida -U -p[pid] -l frida_1.js
指定进程id注入,可根据frida-ps -U | grep “xxx”
寻找进程id
• frida -U --no-pause -f XXX -l frida_1.js
使用spwan模式启动,注入时机较早
编程语法:注入java层的代码在Java.perform下编写,具体格式如下:
function hook_java() {
Java.perform(function () {
...
});
}
其他使用方法可参考官网API,或网上的学习资料。推荐阅读
三、任务描述
本实验的任务需要使用Frida工具对Java层进行Hook,完成以下四个任务,最终获取Flag。
任务1 修改返回值
启动应用是一个登录页面,需要输入用户名和密码。使用Frida Hook相关函数,实现任意用户名密码登录。
任务2 修改变量的值
登录后进入第二关,需要修改变量让自己成为VIP,并且设置cnt的值大于100。
任务3 主动调用函数
根据页面提示,使用Frida主动调用相关函数,设置文本显示框的值为Secret的值。
任务4 动态加载dex的Hook
通过验证,获取Flag值。
四、结果提交形式
1. lab4_code.zip:本次实验中的实验代码,每个任务编写一个Frida函数,并将通过该任务的Frida代码写在该函数内,第一个任务对应函数名为hookLogin、第二个为hookChall1、第三个为hookChall2,第四个为hookChall3
2. lab4.docx:本次实验的实验报告,包括实验环境配置、实验步骤、实验结果和实验心得等内容
五、评分标准
1. 完成任务1(10%):通过注入实现任意用户名和密码登录
2. 完成任务2(20%):成功修改变量值
3. 完成任务3(20%):成功调用函数修改文本
4. 完成任务4(20%):成功获得正确的Flag值
5. 实验报告(30%):
• 内容完整性和原创性(20%)
• 报告包含实验目的、详细步骤、结果、总结思考等关键部分
• 代码设计遵循代码规范,有必要的解释说明
• 报告撰写和表达(10%)
• 报告格式规范,语言表达清晰
• 能够适当使用图表等辅助说明报告内容
六、附件内容说明
1. FridaLab.apk:本实验的分析目标
一、实验目标
1. 学习和理解adb调试工具的基本使用方法,能够熟练使用adb工具的常用命令;
2. 熟悉Frida动态插桩工具的基本使用方法,能够根据需求使用Frida对Java层代码进行动态插桩。
二、前置准备
1. 知识学习
进行本实验前请先完成教材第2章、第5章和第6章的学习,主要包括2.2.2节安卓应用调试环境搭建,5.1.1节逆向工具Jadx的使用。
2. web服务搭建
从安卓官方安装adb工具,并将其添加到环境变量。
常用命令如下:
ADB命令 | 描述 |
---|---|
adb devices | 查看手机设备 |
adb install package | 安装应用 |
adb shell | 连接终端的shell |
adb shell pm list packages -3 | 查看手机里所有的第三方包名,如果已经在shell,则不需要加adb shell |
adb push D:/xx.text /sdcard/xx.text | 将主机上的文件发送到手机 |
adb pull /sdcard/xx.text D:/xx.text | 将手机上的文件下载到主机 |
adb shell am start -n | 包名/类的全名 启动导出的活动 |
adb logcat | 查看log日志 |
adb shell dumpsys activity top | grep ACTIVITY | 查看当前运行的Activity |
adb shell getprop ro.product.cpu.abi | 查看手机的abi |
3. Frida环境配置
首先需要配置python3环境,之后使用pip/pip3下载Frida相关的包
下载与frida版本一致的frida server,例如arm64的设备下载frida-server-16.2.1-android-arm64。将server通过adb工具传输到手机,赋予可执行权限并启动。
以frida-server-16.2.1-android-arm64为例:
4. Frida脚本自动补全
1. 从NodeJs官网安装Node.js
2. 编写JS脚本可参考Frida官网的JS API,为了方便编写,可结合VS Code配置脚本自动补全功能。使用cnpm/npm i @types/frida-gum
将模块安装到当前目录。
3. 使用VS Code打开该目录,创建test.js之后即可使用Frida代码补全功能。
5. Frida基本使用
使用流程:编写注入脚本,注入指定进程
• frida -U XXX -l frida_1.js
XXX是包名、进程名 -l 后跟注入的脚本
• frida -U -p[pid] -l frida_1.js
指定进程id注入,可根据frida-ps -U | grep “xxx”
寻找进程id
• frida -U --no-pause -f XXX -l frida_1.js
使用spwan模式启动,注入时机较早
编程语法:注入java层的代码在Java.perform下编写,具体格式如下:
其他使用方法可参考官网API,或网上的学习资料。推荐阅读
三、任务描述
本实验的任务需要使用Frida工具对Java层进行Hook,完成以下四个任务,最终获取Flag。
任务1 修改返回值
启动应用是一个登录页面,需要输入用户名和密码。使用Frida Hook相关函数,实现任意用户名密码登录。
任务2 修改变量的值
登录后进入第二关,需要修改变量让自己成为VIP,并且设置cnt的值大于100。
任务3 主动调用函数
根据页面提示,使用Frida主动调用相关函数,设置文本显示框的值为Secret的值。
任务4 动态加载dex的Hook
通过验证,获取Flag值。
四、结果提交形式
1. lab4_code.zip:本次实验中的实验代码,每个任务编写一个Frida函数,并将通过该任务的Frida代码写在该函数内,第一个任务对应函数名为hookLogin、第二个为hookChall1、第三个为hookChall2,第四个为hookChall3
2. lab4.docx:本次实验的实验报告,包括实验环境配置、实验步骤、实验结果和实验心得等内容
五、评分标准
1. 完成任务1(10%):通过注入实现任意用户名和密码登录
2. 完成任务2(20%):成功修改变量值
3. 完成任务3(20%):成功调用函数修改文本
4. 完成任务4(20%):成功获得正确的Flag值
5. 实验报告(30%):
• 内容完整性和原创性(20%)
• 报告包含实验目的、详细步骤、结果、总结思考等关键部分
• 代码设计遵循代码规范,有必要的解释说明
• 报告撰写和表达(10%)
• 报告格式规范,语言表达清晰
• 能够适当使用图表等辅助说明报告内容
六、附件内容说明
1. FridaLab.apk:本实验的分析目标