🗒️关于安卓hook框架Frida

Hook 框架是一种技术,用于在运行时拦截和修改应用程序的行为。 通过 Hook,你可以劫持应用程序的方法调用、修改参数、篡改返回值等,以达到对应用程序的修改、增强或调试的目的
关于安卓hook框架Frida
status
Published
type
Post
category
技术分享
date
Jul 2, 2023
slug
hook-frida
summary
Hook 框架是一种技术,用于在运行时拦截和修改应用程序的行为。 通过 Hook,你可以劫持应用程序的方法调用、修改参数、篡改返回值等,以达到对应用程序的修改、增强或调试的目的
tags
逆向
Hook
password
icon
😀
常用的hook框架有哪些呢?
Xposed Framework:Xposed 是一个功能强大的开源 Hook 框架,可以在不修改应用程序源代码的情况下,对应用程序进行各种修改。它允许你编写模块来拦截和修改应用程序的方法调用,修改应用程序的行为和逻辑
Frida:Frida 是一个跨平台的动态 Hook 框架,支持安卓和其他操作系统。它提供了一个强大的 JavaScript API,可以在运行时对应用程序进行 Hook,包括方法拦截、参数修改、调用注入等。Frida 可以用于安全研究、逆向工程和应用程序调试等方面。
 

1.1 下载与安装

1 电脑端,需要安装python的解释器环境--》【3.9】--》安装frida模块 2 手机端,需要安装 frida-server 3 python解释器环境中的frida模块版本必须和 手机端使用的frida-server版本要一一对应

1.1.1 电脑端安装模块

notion image
 

1.1.2 手机端安装frida-server

notion image
 
💡
注意手机架构!!!
notion image
notion image
 
  • 16.1.10下载
notion image
  • 赋予可执行权限
notion image
  • 运行frida-server
像这样子卡住不报错,表示启动成功。
像这样子卡住不报错,表示启动成功。
 
 

1.2 启动并hook应用


1.2.1在电脑端配置端口转发

  1. 手机端启动了frida-server,服务
  1. 电脑端要跟它通信
  1. 通过某个端口做通信
  1. 以后发送到电脑端 27042端口的数据
  1. 转发到手机的27042端口
💡
以后手机端每次启动了frida-server,都要执行端口转发!,否则会报错!!!
 

1.2.2 使用python代码,打印手机中的所有进程—前台运行的进程

💡
电脑上cmd adb shell
  • 进入su 权限
  • cd 到安装目录,我这里是 /data/local/tmp
  • 最后启动该frida-server
  • 启动后,在电脑端进行端口转发 1.2.1
  • 后才能打印手机端正在进行的所有进程,否则将被拒绝 1.2.2
notion image
notion image
notion image
 

1.3 Hook模板


💡
注意!: 在执行Hook前 必须启动frida-server 以及 做好 端口转发
 
notion image
notion image
notion image
notion image
 
💡
总结步骤:
  1. 写好hook代码
  1. 手机端运行frida-server
  1. 做好端口转发
  1. 开启app
  1. 右键运行hook脚本
  1. 触发对应接口,等待hook输出
notion image
 

1.4 sqawn与attach的hook方案


💡
两种Hook方案的应用场景区别比较
spawn方案
适应场景: Spawn 方式是在目标应用程序启动时直接注入 Frida 的 Agent 代码
  • 需要在应用程序启动的早期阶段进行 Hook。
  • 需要访问和修改应用程序的内部状态,例如应用程序的全局变量、静态变量等。
  • 需要 Hook 应用程序的初始化过程,以实现对应用程序的自定义初始化逻辑。
  • 需要在应用程序的上下文中执行代码,并与其他模块或库进行交互。
attach方案(上面的案例,就是attach方案)
适应场景: Attach 方式是在目标应用程序已经运行的过程中动态地连接并注入 Frida 的Agent 代码
  • 需要对已经运行的应用程序进行 Hook,即动态地连接到正在运行的进程。
  • 需要在应用程序运行时拦截和修改特定的方法调用。
  • 需要实时监视和修改应用程序的行为,例如参数修改、返回值篡改等。
  • 需要对应用程序进行调试和分析,以查找潜在的问题和漏洞。
 
上面的案例--》密码加密---》程序运行了,点击登录,才执行密码加密---》所以咱们使用了attach方案
 
比如:有个应用程序,一启动---》就向后端发送请求---》如果等app启动了,使用attach方案hook,就可能hook不到,这种情况下,使用spwan方案---》重启应用---》启动过程中,hook进去

1.4.1 python实现方式

attach方案hook
spawn方案--》他会自动重启app--》适应于应用程序启动初期进行hook

1.4.2 JavaScript实现方式

💡
由于frida,提供了js的api接口,它可以写js脚本去运行hook 而我们用的python -》 其实它的核心逻辑,也是在用js调用frida的api,借助于了 frida-tools和firda这两个模块 所以最核心的其实还是JS的hook方式,
attach 方案
spawn方案
 
上一篇
关于安卓scrcpy无线投屏
下一篇
安卓XML持久化
Loading...

相关文章