1hook框架frida
Hook 框架是一种技术,用于在运行时拦截和修改应用程序的行为。
通过 Hook,你可以劫持应用程序的方法调用、修改参数、篡改返回值等,以达到对应用程序的修改、增强或调试的目的
Xposed Framework:Xposed 是一个功能强大的开源 Hook 框架,可以在不修改应用程序源代码的情况下,对应用程序进行各种修改。它允许你编写模块来拦截和修改应用程序的方法调用,修改应用程序的行为和逻辑。
Frida(咱们讲):Frida 是一个跨平台的动态 Hook 框架,支持安卓和其他操作系统。它提供了一个强大的 JavaScript API,可以在运行时对应用程序进行 Hook,包括方法拦截、参数修改、调用注入等。Frida 可以用于安全研究、逆向工程和应用程序调试等方面。
1.1 下载安装(电脑,手机)
1.1.1 电脑端配置
pip install frida
pip install frida-tools
1.1.2 手机端配置
-https://github.com/frida/frida/releases
-adb shell getprop ro.product.cpu.abi
-arm64-v8a
adb push frida-server-16.1.3-android-arm64 /data/local/tmp
adb shell
su
cd /data/local/tmp
chmod 755 frida-server-16.1.3-android-arm64
ls -al

1.2 启动并hook-app程序
1.2.1 通过frida,打印出当前手机所有的进程和前台进程(固定代码)
手机端启动frida-server
进入到手机路径下 ./frida-server
在电脑端要做端口转发---》命令行中执行---》电脑
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
import frida
rdev = frida.get_remote_device()
processes = rdev.enumerate_processes()
for process in processes:
print(process)
front_app = rdev.get_frontmost_application()
print(front_app)
1.3 hook某智赢app-pwd加密算法
import frida
import sys
rdev = frida.get_remote_device()
session = rdev.attach("车智赢+")
scr = """
Java.perform(function () {
//找到类 反编译的首行+类名:com.autohome.ahkit.utils下的
var SecurityUtil = Java.use("com.autohome.ahkit.utils.SecurityUtil");
//替换类中的方法
SecurityUtil.encodeMD5.implementation = function(str){
console.log("传入的参数(未加密之前的):",str);
var res = this.encodeMD5(str); //调用原来的函数
console.log("返回值(加密后的字符串):",res);
return str; // 没加密的
}
});
"""
script = session.create_script(scr)
def on_message(message, data):
print(message, data)
script.on("message", on_message)
script.load()
sys.stdin.read()

hook方式(两种,python,js)
-spawn:
需要在应用程序启动的早期阶段进行 Hook。
需要访问和修改应用程序的内部状态,例如应用程序的全局变量、静态变量等。
需要 Hook 应用程序的初始化过程,以实现对应用程序的自定义初始化逻辑。
需要在应用程序的上下文中执行代码,并与其他模块或库进行交互。
-attach:刚刚写的
需要对已经运行的应用程序进行 Hook,即动态地连接到正在运行的进程。
需要在应用程序运行时拦截和修改特定的方法调用。
需要实时监视和修改应用程序的行为,例如参数修改、返回值篡改等。
需要对应用程序进行调试和分析,以查找潜在的问题和漏洞。
1.5.1 attach方案(刚讲了)
import frida
import sys
rdev = frida.get_remote_device()
session = rdev.attach("车智赢+")
scr = """
Java.perform(function () {
//找到类 反编译的首行+类名:com.autohome.ahkit.utils下的
var SecurityUtil = Java.use("com.autohome.ahkit.utils.SecurityUtil");
//替换类中的方法
SecurityUtil.encodeMD5.implementation = function(str){
console.log("传入的参数(未加密之前的):",str);
var res = this.encodeMD5(str); //调用原来的函数
console.log("返回值(加密后的字符串):",res);
return str; // 没加密的
}
});
"""
script = session.create_script(scr)
def on_message(message, data):
print(message, data)
script.on("message", on_message)
script.load()
sys.stdin.read()
1.5.2 spawn方案
import frida
import sys
rdev = frida.get_remote_device()
pid = rdev.spawn(["com.che168.autotradercloud"])
session = rdev.attach(pid)
scr = """
Java.perform(function () {
// 包.类
var SecurityUtil = Java.use("com.autohome.ahkit.utils.SecurityUtil");
SecurityUtil.encodeMD5.implementation = function(str){
console.log("明文:",str);
var res = this.encodeMD5(str);
console.log("md5加密结果=",res);
return "305eb636-eb15-4e24-a29d-9fd60fbc91bf";
}
});
"""
script = session.create_script(scr)
def on_message(message, data):
print(message, data)
script.on("message", on_message)
script.load()
rdev.resume(pid)
sys.stdin.read()
1.5.3 hook可以使用js代码写
Java.perform(function () {
var SecurityUtil = Java.use("com.autohome.ahkit.utils.SecurityUtil");
SecurityUtil.encodeMD5.implementation = function(str){
console.log("传入的参数(未加密之前的):",str);
var res = this.encodeMD5(str);
console.log("返回值(加密后的字符串):",res);
return str;
}
});
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探