找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 498|回复: 14

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

[复制链接]

2606

主题

2万

回帖

7万

积分

出神入化

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


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

本帖子中包含更多资源

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

×
回复

使用道具 举报

2606

主题

2万

回帖

7万

积分

出神入化

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

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

2680

主题

2万

回帖

7万

积分

出神入化

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

使用道具 举报

2606

主题

2万

回帖

7万

积分

出神入化

积分
78557
 楼主| 发表于 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 时尤为实用
回复 支持 反对

使用道具 举报

2606

主题

2万

回帖

7万

积分

出神入化

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

使用道具 举报

2742

主题

2万

回帖

8万

积分

出神入化

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

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

2742

主题

2万

回帖

8万

积分

出神入化

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

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

2752

主题

2万

回帖

8万

积分

出神入化

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

使用道具 举报

2744

主题

2万

回帖

7万

积分

出神入化

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

使用道具 举报

2606

主题

2万

回帖

7万

积分

出神入化

积分
78557
 楼主| 发表于 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 中找到
回复 支持 反对

使用道具 举报

2606

主题

2万

回帖

7万

积分

出神入化

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

使用道具 举报

2606

主题

2万

回帖

7万

积分

出神入化

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

使用道具 举报

2744

主题

2万

回帖

7万

积分

出神入化

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

使用道具 举报

2606

主题

2万

回帖

7万

积分

出神入化

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

使用道具 举报

2606

主题

2万

回帖

7万

积分

出神入化

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

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

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

本版积分规则

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