Frida接口功能介绍
Frida是个so级别的hook框架,它可以帮助开发、安全人员对指定的进程的so模块进行分析。它主要提供了功能简单的Python接口和功能丰富的JS接口,使得hook函数和修改so可以编程化,接口中包含了主控端与目标进程的交互接口。
目标进程的交互接口分为:
- JS接口
功能包括但不限于进程操作、模块操作、内存操作、函数操作、线程操作、网络通信、数据流操作、文件操作、数据库操作、寄存器操作。 - Python接口
提供的功能较少,基本都是用来获取进程、模块、函数操作。
Frida功能较多,暂时没有需求要每个都掌握,我现在的需求就是在程序运行的时候修改函数传参值、得到函数的返回值这种简单操作,下面通过JS配合Python脚本方式对这两个功能进行探讨。
注入Android系统的使用流程
- 打开一个APP应用,并跳转到有你想注入的页面
- 通过
adb shell dumpsys activity top
,获取当前 Android 系统中与用户交互(顶层) Activity 的详细信息 - 反编译APK文件,根据上一步提供的信息,进行代码查看,然后定位到想hook的函数,查看的该函数的传参和返回值
- 编写js注入代码,运行脚本注入到函数中
步骤1演示 - 打开APP页面
步骤2演示 - 获取顶层Activity信息
adb shell dumpsys activity top
TASK com.example.myapplication id=190
ACTIVITY com.example.myapplication/.MainActivity 6b2b7a5 pid=31745
Local Activity e71a071 State:
mResumed=false mStopped=true mFinished=false
mChangingConfigurations=false
mCur