以下参数说明翻译自 frida-17.5.2版本。
frida
|------------------------------------------------------|--------------------------------------------------------|
| 参数 | 说明 |
| -h, --help | 展示帮助信息并退出 |
| -D ID, --device ID | 连接到给定ID的设备 |
| -U, --usb | 连接到usb设备 |
| -R, --remote | 连接到远程frida-server |
| -H HOST, --host HOST | 连接到HOST上的远程frida-server |
| --certificate CERTIFICATE | 与HOST使用TLS,需要证书(CERTIFICATE) |
| --origin ORIGIN | 连接到远程服务器,并将 "Origin" 标头设置为 ORIGIN |
| --token TOKEN | 使用token与主机进行身份验证 |
| --keepalive-interval INTERVAL | 设置保活间隔(秒),或设置0禁用(默认为-1,根据传输自动选择) |
| --p2p | 与目标建立对等(p2p)连接 |
| --stun-server ADDRESS | 设置STUN服务器地址以与--p2p一起使用 |
| --relay address,username,password,turn-{udp,tcp,tls} | 添加中继以与p2p一起使用 |
| -f TARGET, --file TARGET | 要hook的app(目标包名) |
| -F, --attach-frontmost | 附加到最前面的应用程序 |
| -n NAME, --attach-name NAME | 附上名称 |
| -N IDENTIFIER, --attach-identifier IDENTIFIER | 附加标识符 |
| -p PID, --attach-pid PID | 附加PID |
| -W PATTERN, --await PATTERN | 等待生成匹配模式 |
| --stdio {inherit,pipe} | 生成时的stdio行为(默认为"inherit") |
| --aux option | 在生成时设置辅助选项,例如 "uid=(int)42" (支持的类型有:string, bool, int) |
| --realm {native,emulated} | 附加的领域 |
| --runtime {qjs,v8} | 运行时使用的脚本 |
| --debug | 兼容Node.js的脚本调试器 |
| --squelch-crash | 如果启用静噪崩溃,则不会将崩溃报告转储到控制台 |
| -O FILE, --options-file FILE | 包含其他命令行选项的文本文件 |
| --version | 版本信息 |
| -l SCRIPT, --load SCRIPT | 加载脚本 |
| -P PARAMETERS_JSON, --parameters PARAMETERS_JSON | 参数以JSON格式呈现,与Gadget相同 |
| -C USER_CMODULE, --cmodule USER_CMODULE | 加载 CMODULE |
| --toolchain {any,internal,external} | 从源代码编译时使用CModule工具链 |
| -c CODESHARE_URI, --codeshare CODESHARE_URI | 加载 CODESHARE_URI |
| -e CODE, --eval CODE | 执行代码 |
| -q | 安静模式(无提示),在执行完 -l 和 -e 命令后退出 |
| -t TIMEOUT, --timeout TIMEOUT | 在安静模式下终止前等待的秒数 |
| --pause | 在程序生成后让主线程保持暂停状态 |
| -o LOGFILE, --output LOGFILE | 输出日志文件 |
| --eternalize | 在退出前将脚本永久化 |
| --exit-on-error | 在遇到任何脚本异常后退出,退出码为1 |
| --kill-on-exit | 在 Frida 退出时杀死派生的程序 |
| --auto-perform | 使用Java.perform包装输入的代码 |
| --auto-reload | 启用所提供脚本和C模块的自动重新加载(默认开启,将来会需要) |
| --no-auto-reload | 禁用所提供脚本和C模块的自动重新加载 |
命令示例:
bash
# 连接USB设备,强制启动包名为com.xxx.yyy的app,用指定js脚本追踪函数
frida -U -f com.xxx.yyy -l /frida-js/handle.js
frida-trace
frida-trace是对frida的高级封装,自身有一套hook脚本,所以大部分参数跟frida相同。
|-------------------------------------------------------|--------------------------------------------------------|
| 参数 | 说明 |
| -h, --help | 展示帮助信息并退出 |
| -D ID, --device ID | 连接到给定ID的设备 |
| -U, --usb | 连接到usb设备 |
| -R, --remote | 连接到远程frida-server |
| -H HOST, --host HOST | 连接到HOST上的远程frida-server |
| --certificate CERTIFICATE | 与HOST使用TLS,需要证书(CERTIFICATE) |
| --origin ORIGIN | 连接到远程服务器,并将 "Origin" 标头设置为 ORIGIN |
| --token TOKEN | 使用token与主机进行身份验证 |
| --keepalive-interval INTERVAL | 设置保活间隔(秒),或设置0禁用(默认为-1,根据传输自动选择) |
| --p2p | 与目标建立对等(p2p)连接 |
| --stun-server ADDRESS | 设置STUN服务器地址以与--p2p一起使用 |
| --relay address,username,password,turn-{udp,tcp,tls} | 添加中继以与--p2p一起使用 |
| -f TARGET, --file TARGET | 要hook的app(目标包名) |
| -F, --attach-frontmost | 附加到最前面的应用程序 |
| -n NAME, --attach-name NAME | 附上名称 |
| -N IDENTIFIER, --attach-identifier IDENTIFIER | 附加标识符 |
| -p PID, --attach-pid PID | 附加PID |
| -W PATTERN, --await PATTERN | 等待生成匹配模式 |
| --stdio {inherit,pipe} | 生成时的stdio行为(默认为"inherit") |
| --aux option | 在生成时设置辅助选项,例如 "uid=(int)42" (支持的类型有:string, bool, int) |
| --realm {native,emulated} | 附加的领域 |
| --runtime {qjs,v8} | 运行时使用的脚本 |
| --debug | 兼容Node.js的脚本调试器 |
| --squelch-crash | 如果启用静噪崩溃,则不会将崩溃报告转储到控制台 |
| -O FILE, --options-file FILE | 包含其他命令行选项的文本文件 |
| --version | 版本信息 |
| -I MODULE, --include-module MODULE | 包括模块 |
| -X MODULE, --exclude-module MODULE | 排除模块 |
| -i FUNCTION, --include FUNCTION | 包含 [MODULE!]FUNCTION |
| -x FUNCTION, --exclude FUNCTION | 排除 [MODULE!]FUNCTION |
| -a MODULE!OFFSET, --add MODULE!OFFSET | 添加 MODULE!OFFSET |
| -T INCLUDE_IMPORTS, --include-imports INCLUDE_IMPORTS | 包括程序的导入 |
| -t MODULE, --include-module-imports MODULE | 包括模块的导入 |
| -m OBJC_METHOD, --include-objc-method OBJC_METHOD | 包括 OBJC_METHOD |
| -M OBJC_METHOD, --exclude-objc-method OBJC_METHOD | 排除 OBJC_METHOD |
| -y SWIFT_FUNC, --include-swift-func SWIFT_FUNC | 包括 SWIFT_FUNC |
| -Y SWIFT_FUNC, --exclude-swift-func SWIFT_FUNC | 排除 SWIFT_FUNC |
| -j JAVA_METHOD, --include-java-method JAVA_METHOD | 包括 JAVA_METHOD |
| -J JAVA_METHOD, --exclude-java-method JAVA_METHOD | 排除 JAVA_METHOD |
| -s DEBUG_SYMBOL, --include-debug-symbol DEBUG_SYMBOL | 包括 DEBUG_SYMBOL |
| -q, --quiet | 不格式化输出消息 |
| -d, --decorate | 添加模块名称到生成的onEnter日志语句中 |
| -S PATH, --init-session PATH | 初始化会话的JavaScript文件的路径 |
| -P PARAMETERS_JSON, --parameters PARAMETERS_JSON | 参数为JSON,以名为"parameters"的全局形式公开 |
| -o OUTPUT, --output OUTPUT | 将消息转储到文件 |
| --ui-host UI_HOST(ui指的应该是格式化打印的内容) | 为ui提供服务的主机(默认本地主机) |
| --ui-port UI_PORT | 为ui提供服务的TCP端口 |
命令示例:
bash
# 一般地
frida-trace -U -f 目标包名
# 追踪所有文件操作相关函数(stat/fopen/access等)
frida-trace -U -f 目标包名 -i "stat*" -i "fopen*" -i "access*" -i "open*"
frida-server
|------------------------------------|--------------------------------------------------------|
| 参数 | 说明 |
| --version | 版本信息 |
| --device=ID | 为设备提供给定的ID |
| -l, --listen=ADDRESS | 监听地址 |
| --certificate=CERTIFICATE | 使用证书启用TLS |
| --origin=ORIGIN | 只接受带有 ?Origin? header matching ORIGIN 的请求(默认任何来源都将被接受) |
| --token=TOKEN | 使用token进行身份验证 |
| --asset-root=ROOT | 为root内的静态文件提供服务(默认情况下不提供任何文件) |
| -d, --directory=DIRECTORY | 将二进制文件存储在指定目录 |
| -D, --daemonize | 将Detach设置为守护进程 |
| --policy-softener=system|internal | 选择策略软化器 |
| -P, --disable-preload | 禁用预加载禁用预加载优化 |
| -C, --ignore-crashes | 忽略崩溃禁用本地崩溃报告器集成 |
| -v, --verbose | Be verbose(不懂有什么用) |
命令示例:
bash
# adb中运行
./存放路径/frida-server & # &表示后台运行,不然会卡控制台