一、整体流程总览(先建立全局认知)
Frida Hook = 三件事同时成立
① 手机上运行 frida-server
② 电脑上安装 frida / frida-tools
③ 电脑 → 通过 USB / WiFi attach 或 spawn App
二、手机端:安装 & 运行 frida-server(最关键)
把 frida-server.deb 传到手机
下载地址:github.com/frida/frida...
ruby
scp frida-server-17.5.2-ios-arm64.deb mobile@192.168.1.11:/private/var/tmp/
发送前要建立与手机的连接
css
ssh mobile@192.168.1.11
192.168.1.11是你的手机IP
这时需要输入密码
css
mobile@192.168.1.11's password:
输入root用户的密码,
Dopamine 默认:alpine,如果不对可以去Dopamine修改成你自己的密码
如果成功,在终端上能看到:(越狱手机可以下载一个终端Terminal)
bash
ls /private/var/tmp | grep frida
在手机上安装 frida-server
csharp
su
dpkg -i /private/var/tmp/frida-server-17.5.2-ios-arm64.deb
确认安装成功:
bash
which frida-server
# 输出:
/var/jb/usr/sbin/frida-server
启动 frida-server(⚠️ 必须)
bash
/var/jb/usr/sbin/frida-server &
验证是否成功:
perl
ps -ef | grep frida
你应该看到类似:
bash
root xxxx /var/jb/usr/sbin/frida-server
确认端口监听(27042)
perl
netstat -an | grep 27042
如果有:
127.0.0.1.27042 LISTEN
三、电脑端:安装 Frida 工具
1️⃣ 确认 Python 可用
css
python3 --version
2️⃣ 安装 frida & frida-tools(用户级,避免权限坑)
css
python3 -m pip install --user frida frida-tools
如果 frida 命令找不到:
bash
echo 'export PATH="$HOME/Library/Python/3.x/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
3️⃣ 验证 Frida 版本
css
frida --version
👉 必须与你手机上的 frida-server 主版本一致(17.x)
4️⃣ 验证能看到手机
frida-ps -U
如果你能看到 App 列表:
bash
PID Name Identifier
30311 0.test com.xxxx.test
👉 电脑端 OK
四、准备 Hook 的 JS 脚本(改变工程中isJailbroken的返回值)
javascript
if (ObjC.available) {
console.log("[*] ObjC runtime available");
var targetMethod = null;
ObjC.enumerateLoadedClasses({
onMatch: function (className, methods) {
if (methods.indexOf("+ isJailbroken") !== -1) {
try {
var cls = ObjC.classes[className];
var method = cls["+ isJailbroken"];
if (method) {
targetMethod = method;
console.log("[+] Found:", className, "+ isJailbroken");
}
} catch (e) {}
}
},
onComplete: function () {
if (!targetMethod) {
console.log("[-] isJailbroken not found");
return;
}
Interceptor.attach(
targetMethod.implementation,
{
onLeave: function (retval) {
console.log("[*] Original:", retval.toInt32());
retval.replace(0); // NO
console.log("[*] Bypassed -> NO");
}
}
);
}
});
} else {
console.log("[-] ObjC runtime not available");
}
五、Hook App
✅ 方式 :Attach
1️⃣ 先手动在手机上打开 App
确保 App 正在前台运行。
2️⃣ Mac 终端执行:
lua
frida -U -n com.compass.--test -l bypass_jailbreak.js
看到:
css
[*] ObjC runtime available
[+] Found: XXSecurity + isJailbroken
👉 Hook 成功
六、验证 Hook 是否生效
在 App 里触发:
csharp
[Security isJailbroken]
Frida 输出:
ini
[*] Original: 1
[*] Bypassed -> NO
👉 App 逻辑被你成功欺骗