找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 253|回复: 14

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

[复制链接]

646

主题

4133

回帖

1万

积分

登峰造极

积分
14833
发表于 2024-7-19 16:21:03 | 显示全部楼层 |阅读模式
如何将 frida 脚本工程化,使用 ES6 语法,甚至用 typescript


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

646

主题

4133

回帖

1万

积分

登峰造极

积分
14833
 楼主| 发表于 2024-7-19 16:21:34 | 显示全部楼层
正常来说,frida 只能加载一个 js 脚本,于是吧里各位手里的 frida 脚本动辄五六千行,在如此巨大的脚本里进行开发,想想都折磨

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

678

主题

4225

回帖

1万

积分

登峰造极

积分
15354
发表于 2024-7-19 16:22:34 | 显示全部楼层
不弄成编辑器的情况下我cpu不带转的
回复

使用道具 举报

646

主题

4133

回帖

1万

积分

登峰造极

积分
14833
 楼主| 发表于 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 时尤为实用
回复

使用道具 举报

646

主题

4133

回帖

1万

积分

登峰造极

积分
14833
 楼主| 发表于 2024-7-19 16:23:32 | 显示全部楼层
有人看再更
回复

使用道具 举报

702

主题

4195

回帖

1万

积分

登峰造极

积分
15339
发表于 2024-7-19 16:23:50 | 显示全部楼层
上开源

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

702

主题

4195

回帖

1万

积分

登峰造极

积分
15339
发表于 2024-7-19 16:24:06 | 显示全部楼层
支持 光函数名就几千行
看烦了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

668

主题

4157

回帖

1万

积分

登峰造极

积分
15143
发表于 2024-7-19 16:24:12 | 显示全部楼层
羡慕但看不懂
回复

使用道具 举报

644

主题

3982

回帖

1万

积分

登峰造极

积分
14432
发表于 2024-7-19 16:25:08 | 显示全部楼层
看不懂,火钳留名
回复

使用道具 举报

646

主题

4133

回帖

1万

积分

登峰造极

积分
14833
 楼主| 发表于 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 中找到
回复

使用道具 举报

646

主题

4133

回帖

1万

积分

登峰造极

积分
14833
 楼主| 发表于 2024-7-19 16:26:40 | 显示全部楼层
不明觉厉
回复

使用道具 举报

646

主题

4133

回帖

1万

积分

登峰造极

积分
14833
 楼主| 发表于 2024-7-19 16:27:04 | 显示全部楼层
很多人用的还是不支持es6的frida版本, 就是frida刚被引入台服的那个版本, 得先让他们换个新版本, 还在用var声明变量的看着很难受
回复

使用道具 举报

644

主题

3982

回帖

1万

积分

登峰造极

积分
14432
发表于 2024-7-19 16:27:19 | 显示全部楼层
台吧何德何能
回复

使用道具 举报

646

主题

4133

回帖

1万

积分

登峰造极

积分
14833
 楼主| 发表于 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 文件替换掉旧的就可以了
回复

使用道具 举报

646

主题

4133

回帖

1万

积分

登峰造极

积分
14833
 楼主| 发表于 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 就完事了!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表