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 电脑端安装模块

1.1.2 手机端安装frida-server

注意手机架构!!!


- 16.1.10下载

- 赋予可执行权限

- 运行frida-server

1.2 启动并hook应用
1.2.1在电脑端配置端口转发
- 手机端启动了frida-server,服务
- 电脑端要跟它通信
- 通过某个端口做通信
- 以后发送到电脑端 27042端口的数据
- 转发到手机的27042端口
以后手机端每次启动了frida-server,都要执行端口转发!,否则会报错!!!
1.2.2 使用python代码,打印手机中的所有进程—前台运行的进程
电脑上cmd
adb shell- 进入
su权限
- cd 到安装目录,我这里是
/data/local/tmp
- 最后启动该frida-server
- 启动后,在电脑端进行端口转发 1.2.1
- 后才能打印手机端正在进行的所有进程,否则将被拒绝 1.2.2



1.3 Hook模板
注意!: 在执行Hook前 必须启动frida-server 以及 做好 端口转发




总结步骤:
- 写好hook代码
- 手机端运行frida-server
- 做好端口转发
- 开启app
- 右键运行hook脚本
- 触发对应接口,等待hook输出

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方案
Loading...


.png?table=block&id=8cbd9ef4-8c1c-4581-80f1-a15297380674&t=8cbd9ef4-8c1c-4581-80f1-a15297380674&width=1080&cache=v2)
