阿苏 发表于 2024-7-19 16:21:03

来点干货,给 frida 脚本开发者提供一些便利

如何将 frida 脚本工程化,使用 ES6 语法,甚至用 typescript


原文地址:https://tieba.baidu.com/p/9053703002 -----粽子
由阿荣社区 https://bbs.vul7.com/    转录

阿苏 发表于 2024-7-19 16:21:34

正常来说,frida 只能加载一个 js 脚本,于是吧里各位手里的 frida 脚本动辄五六千行,在如此巨大的脚本里进行开发,想想都折磨

阿荣社区采集员3 发表于 2024-7-19 16:22:34

不弄成编辑器的情况下我cpu不带转的

阿苏 发表于 2024-7-19 16:22:40

说说我这套的优势:
1. ESModule 多文件和模块,这个不用说,把巨大的 js 脚本拆成多个文件和模块,便于开发和维护
2. ES6语法,具体可百度阮一峰的ES6 入门教程。说几个好用的:
- 字符串模板 `this is a ${str} tmpl`
- 匿名函数 (args) => { return 1 }
- async/await 异步函数
3. Typescript 提供类型检查和类型提示,调用 frida API 时尤为实用

阿苏 发表于 2024-7-19 16:23:32

有人看再更

阿荣社区采集员2 发表于 2024-7-19 16:23:50

上开源

阿荣社区采集员2 发表于 2024-7-19 16:24:06

支持 光函数名就几千行
看烦了

阿荣社区采集员 发表于 2024-7-19 16:24:12

羡慕但看不懂

阿荣社区采集员1 发表于 2024-7-19 16:25:08

看不懂,火钳留名

阿苏 发表于 2024-7-19 16:26:01

先科普一下 frida。
Frida 是一个开源动态代码注入工具,用于执行运行时的分析、调试、逆向工程等操作。它提供了一种强大的能力,可以在应用程序运行时拦截函数调用、修改代码、监控 API 调用等。Frida 支持多种平台,包括 Windows、macOS、Linux、Android 和 iOS,适用于多种开发场景。
以上来自 ChatGPT
Frida 通过 Javascript API 提供上述的功能,也就是我们写的 js 脚本。
Frida 有多种注入方式,在台服一般使用 Gadget。
上述资料均可在 frida 官网 frida.re 中找到

阿苏 发表于 2024-7-19 16:26:40

不明觉厉

阿苏 发表于 2024-7-19 16:27:04

很多人用的还是不支持es6的frida版本, 就是frida刚被引入台服的那个版本, 得先让他们换个新版本, 还在用var声明变量的看着很难受

阿荣社区采集员1 发表于 2024-7-19 16:27:19

台吧何德何能

阿苏 发表于 2024-7-19 16:27:24

关于 Frida 版本。
Frida 在台服的应用最早由神牛大佬发掘并推广,他提供的是 Frida 很早期的版本,好像是 9 还是 10 的了,这也是如今吧内流传的版本。这版本用的 js 引擎是 Duktape,最高只支持到 ES5.1 语法。
从 Frida12 开始,默认 js 引擎切换为 qjs, 也可以切换到 v8,这两是支持 ES6 的。
我问过神牛大老为什么不用新版本,说是可能与CentOS5之间有兼容性问题,但是根据我这么长时间的使用情况,高版本的 Frida 完全可以在 CentOS6 稳定运行。
所以我们要做的第一件事就是升级 Frida 版本,在 github release 页面 (github.com/frida/frida/releases) 下载 gadget-linux-x86(_64) 的 .so 文件替换掉旧的就可以了

阿苏 发表于 2024-7-19 16:28:19

工程化方面,做过前端开发的都知道,现在的前端框架如 vue/react 等都是由打包工具如 webpack/vite 等打包成单个 js 文件发布的,那么其实也可以用这些工具来打包我们的 Frida 脚本,甚至这些工具支持 ES6 语法转 ES5 语法。
我在早期的时候甚至还开发过一个轮子自己打包模块化的代码

但是,后来发现 frida 官方提供了一个编译器 frida-compile (github.com/frida/frida-compile),没错,说这么多就只是为了向你们推荐这个东西。把仓库 clone 下来改吧改吧,npm run build 就完事了!!!
页: [1]
查看完整版本: 来点干货,给 frida 脚本开发者提供一些便利