APP算法分析

Frida17更新后,代码补全功能变得麻烦了。

nodejs和vscode没什么好说的,直接一路安装,自己再装上几个顺手的插件即可。

frida-node需要注意一下版本,本质是Frida 的Node.js 绑定

1
2
3
4
5
PS D:\data\code\APK\tiaoshi> frida --version
17.24.3
PS D:\data\code\APK\tiaoshi> npm install frida@17.24.3

注意版本要一致

另外,看了下资料,在frida17中,出现了架构变化

  • Frida ≤16:Java 是 GumJS 全局变量,脚本里直接写 Java.perform 能跑也能猜类型
  • Frida 17+:Java / ObjC / Swift 桥被拆出去,不默认注入
    • 运行时要用必须:import Java from "frida-java-bridge"
    • 但 frida CLI/REPL 为了兼容老脚本,会临时给你挂一下全局 Java,所以能跑但编辑器不知道类型
      自动补全功能无了。所以要稍微配置一下
  1. 安装两个关键插件
1
2
3
npm install --save-dev @types/frida-gum
npm install frida-java-bridge

npm install 默认把包写进 package.json 的 dependencies;加 –save-dev(简写 -D)就写进 devDependencies。一个是生产环境,一个是开发环境。区别如下:

dependencies devDependencies
含义 运行时需要 只在开发/构建时需要
npm install(生产) 装 装(默认)
npm install --production / --omit=dev 装 不装​
别人 npm i 你的包 装 装
作为库被依赖时 装 不装​

判断标准:

1
2
3
代码跑起来时还需要它吗?
- 需要-.`dependencies`
- 只在写代码、编译、测试、类型检查时用 → `devDependencies`

frida-gum只含 .d.ts,不含运行时代码,作用是写 Agent(TS)时有补全、类型检查。不提供Java.use等。
是GumJS 里的Java/ART/Dalvik 桥接库,被注入到目标 App 的 Agent 脚本里,提供Java.perform / Java.use / Java.choose / Java.cast。

功能区别:

  • frida-gum:是 Frida 注入到目标进程后的原生插桩引擎(C 层 + GumJS 全局 API)。
    Interceptor / Memory / Module / Process / NativeFunction 这些全局直接可用,不需要你 import 任何包。
  • @types/frida-gum:只是 TS 类型声明,编译完就消失,运行时完全不需要。
  • frida-java-bridge:只在你要操作Java/Kotlin 层时才需要(Frida 17+ 要显式装、显式 import)。
  1. 然后将node_modules@types\frida-gum模块中的index.d.ts复制到要写ts的文件夹下。

  2. 在自己的demo.ts文件开头输入下面两句话,则代码补全功能回来了:

1
2
3
/// <reference path="./index.d.ts" />
import Java from 'frida-java-bridge'

写完ts后记得编译成js,然后运行

1
2
3
4
npx frida-compile demo.ts -o demo.js

frida -UF -l _agent.js
frida -U -f com.xxx.app -l _agent.js

补充扩展

整体链路

1
2
3
4
5
6
7
8
9
10
11
12
13
14
你的 Node 进程
└─ frida-node (JS/TS API)
└─ libfrida-core (C/Vala 编译的 native addon)
│
│ D-Bus / WebSocket / TCP / USB 隧道
▼
设备端 frida-server (守护进程)
│
│ ptrace/inject → 载入 frida-agent.so
▼
目标 App 进程内
├─ frida-agent (QuickJS/V8)
├─ frida-gum (Interceptor/Stalker/Memory)
└─ 你的 Agent JS/TS

frida-node 只跟 本机 frida-core​ 说话;本机 frida-core 再跟远端 frida-server 通信。

作者

纹云

发布于

2026-11-06

更新于

2026-11-06

许可协议