台服dnf吧 关注:118,217贴子:1,887,387

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

只看楼主收藏回复

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


IP属地:广东1楼2024-06-15 16:08回复
    正常来说,frida 只能加载一个 js 脚本,于是吧里各位手里的 frida 脚本动辄五六千行,在如此巨大的脚本里进行开发,想想都折磨


    IP属地:广东2楼2024-06-15 16:11
    回复
      不弄成编辑器的情况下我cpu不带转的


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


        IP属地:广东4楼2024-06-15 16:24
        收起回复
          有人看再更


          IP属地:广东5楼2024-06-15 16:25
          回复
            上开源


            IP属地:江苏来自iPhone客户端6楼2024-06-15 16:42
            回复
              支持 光函数名就几千行 看烦了


              IP属地:福建7楼2024-06-15 16:44
              回复
                羡慕但看不懂


                IP属地:山东来自Android客户端8楼2024-06-15 16:52
                回复
                  看不懂,火钳留名


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


                    IP属地:广东10楼2024-06-15 17:15
                    回复
                      不明觉厉


                      IP属地:广东来自Android客户端11楼2024-06-15 17:21
                      回复
                        很多人用的还是不支持es6的frida版本, 就是frida刚被引入台服的那个版本, 得先让他们换个新版本, 还在用var声明变量的看着很难受


                        IP属地:河南12楼2024-06-15 17:25
                        回复
                          台吧何德何能


                          IP属地:吉林来自Android客户端13楼2024-06-15 17:26
                          回复
                            关于 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 文件替换掉旧的就可以了


                            IP属地:广东14楼2024-06-15 17:26
                            收起回复
                              工程化方面,做过前端开发的都知道,现在的前端框架如 vue/react 等都是由打包工具如 webpack/vite 等打包成单个 js 文件发布的,那么其实也可以用这些工具来打包我们的 Frida 脚本,甚至这些工具支持 ES6 语法转 ES5 语法。
                              我在早期的时候甚至还开发过一个轮子自己打包模块化的代码
                              但是,后来发现 frida 官方提供了一个编译器 frida-compile (github.com/frida/frida-compile),没错,说这么多就只是为了向你们推荐这个东西。把仓库 clone 下来改吧改吧,npm run build 就完事了!!!


                              IP属地:广东15楼2024-06-15 17:32
                              收起回复