【Frida】04_Frida中使用TypeScript脚本(采坑)

▒ 目录 ▒

    • 🛫 导读
      • 需求
      • 开发环境
      • 演示目标
    • 1️⃣ 操作步骤
      • 安装node 20.10.0
      • 在 VSCode 中打开项目目录
      • 初始化一个 NodeJS 项目
      • 安装 TypeScript
      • 初始化 TypeScript 项目
      • 安装依赖
      • 配置 TypeScript
      • 编写代码
      • 编译设置
      • 编译脚本
      • 运行,查看结果
    • 2️⃣ 采坑
      • frida-compile版本问题
    • 📖 参考资料

🛫 导读

需求

TypeScript目前是主流,方面模块管理frida代码。
而且这也是frida官网推荐的模式,这样会给你带来更多优势,如:代码完成度更高、类型检查、内联文档、重构工具
在这里插入图片描述

ps: 合并文件的形式也可以实现模块划分,但是总感觉有点非主流,而且没有代码提示等功能。

开发环境

版本号描述
文章日期2024-03-17
操作系统Win11 - 22H222621.2715
node -vv20.10.0
npm -v10.2.3
yarn -v3.1.1
frida-compile10.0.1高版本各种异常
课程源码https://gitcode.net/kinghzking/MyOpen所在目录:/course/frida

演示目标

winmine.exe (windows xp系统附带的扫雷游戏)

  • 软件版本:5.1.2600.0

  • 软件大小:117 KB (119,808 字节)

1️⃣ 操作步骤

安装node 20.10.0

参考文章《【nvm】【node多版本管理工具】使用说明和踩坑(exit status 1) https://blog.csdn.net/kinghzking/article/details/126186648》

在 VSCode 中打开项目目录

在这里插入图片描述

初始化一个 NodeJS 项目

在终端中运行以下命令:

npm init -y

安装 TypeScript

在终端中运行以下命令:

npm install typescript --save-dev

初始化 TypeScript 项目

在终端中运行以下命令:

npx tsc --init

安装依赖

安装node、frida-gum的类型声明库;安装frida-compile

npm install @types/node @types/frida-gum frida-compile@10.2.1 --save-dev

配置 TypeScript

你基本上希望你的tsconfig.json看起来像我的。 或者,有一种更紧凑的方法来实现相同的目的,只需复制粘贴以下内容:

{"compilerOptions": {"target": "es2020","lib": ["es2020"],"allowJs": true,"noEmit": true,"strict": true,"esModuleInterop": true}
}

编写代码

创建一个名为src的目录,并在里面创建一个名为index.ts的文件。文件内容如下:

// Startup
const version = "v3.8.6"
console.log(`Launching script ${version} on FRIDA ${Frida.version}`)// Check your environment is ready
if(Java.available){setTimeout(function (){// Execute FRIDA code hereJava.perform(function (){// FRIDA code here});}, 0);
}

编译设置

package.json内容做如下调整:

  • 修改入口文件
  • 增加运行项:build、watch
    在这里插入图片描述

编译脚本

执行命令npm run build,我们将获得如下文件
在这里插入图片描述

ps: 执行命令npm run watch,将监视原有文件变化,并立刻自动编译新的index.js文件。

运行,查看结果

我们以windows环境下的扫雷程(winmine.exe)序为例:
启动扫雷,执行命令D:\Python\Python371\Scripts\frida.exe -n winmine.exe -l index.js
将显示出Launching script v3.8.6 on FRIDA 15.0.18信息,表示运行成功。
在这里插入图片描述

2️⃣ 采坑

frida-compile版本问题

小编使用官网文档提示的github代码,直接运行,生成下图所示的文件内容(各种乱码)。一开始以为是node版本问题,切换了三四个版本的node,依然各种报错。
在这里插入图片描述

后来灵机一动,修改frida-compile版本10.2.1,然后就可以正常运行了!!!

📖 参考资料

  • 官网文档地址: https://frida.re/docs/javascript-api/
  • 官网示例代码: https://github.com/oleavr/frida-agent-example
  • 赵庆明老师视频课程: https://www.bilibili.com/video/BV1xa411X7oF/
  • github上某示例(含教程): https://github.com/BRUHItsABunny/FRIDASampleAgentTS

ps: 文章中内容仅用于技术交流,请勿用于违规违法行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/752016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WEB前端项目开发——(一)(2024)

目录 1 通过Git Bash安装 vue-cli 2 创建项目 3 解决Git Bash方向键失效 4 重新进行项目创建 5 浏览器输入地址查看 6 案例——简单修改v3-calendar中的内容 7 测试页面效果 本篇文章介绍通过了Git Bash创建v3-calendar项目,之后对v3-calendar进行简单…

使用gitee自动备份文件

需求 舍友磁盘前两天gg了,里面的论文没有本地备份,最后费劲巴拉的在坚果云上找到了很早前的版本。我说可以上传到github,建一个私人仓库就行了,安全性应该有保证,毕竟不是啥学术大亨,不会有人偷你论文。但是…

R语言:microeco:一个用于微生物群落生态学数据挖掘的R包,第四:trans_beta class

trans_beta class:利用trans_beta类可以变换和绘制beta分集的距离矩阵。该类中涉及到beta多样性的分析主要包括排序、群距、聚类和方差分析。我们首先使用PCoA显示排序。 > dataset$cal_betadiv() The result is stored in object$beta_diversity ... > t1 &…

ClickHouse中的设置的分类

ClickHouse中的各种设置 ClickHouse中的设置有几百个,下面对这些设置做了一个简单的分类。

游戏引擎中网络游戏的基础

一、前言 网络游戏所面临的挑战: 一致性:如何在所有的主机内都保持一样的表现可靠性:网络传输有可能出现丢包安全性:反作弊,反信息泄漏。多样性:不同设备之间链接,比如手机,ipad&a…

C到C++的敲门砖-2

文章目录 引用内联函数auto关键字基于范围的for循环指针空值nullptr后记 引用 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。 所谓引用就是给变量起别名&am…

OpenAI的ChatGPT企业版专注于安全性、可扩展性和定制化。

OpenAI的ChatGPT企业版:安全、可扩展性和定制化的重点 OpenAI的ChatGPT在商业世界引起了巨大反响,而最近推出的ChatGPT企业版更是证明了其在企业界的日益重要地位。企业版ChatGPT拥有企业级安全、无限GPT-4访问、更长的上下文窗口以及一系列定制选项等增…

蓝桥杯算法

1,枚举(买股票) 买卖股票的最佳时机 小算是一个“优秀又不甘平庸的韭菜”,想要在股票市场上大赚一笔。这天小算又看中了一只潜力股。现在已知这只股票在n天内的价格为P0,P1,....,Pn-1&#xff…

ArrayList和LinkedList的区别,以及应用场景

ArrayList和LinkedList都是Java中的集合类,用于存储和操作一组对象。它们的主要区别在于内部实现方式和对操作的影响。 内部实现方式: ArrayList使用数组作为内部的数据结构,可以随机访问元素。当需要插入或删除元素时,ArrayList需…

RUST egui体验

egui官方提供了web版的demo&#xff0c;效果还是很不错的&#xff0c;就是用的时候有点一头雾水&#xff0c;没有找到明确的指导怎么把这些组件插入到自己的application或者web。花了一天时间撸了一遍流程&#xff0c;记录一下&#xff0c;说不定以后能用到呢 >_< efram…

asp.net 作业星软件系统

asp.net 作业星软件系统 用户功能:分教师和家长&#xff08;学生) 注册登录:登录部分是用户名密码&#xff0c;以及教师和家长&#xff08;学生&#xff09;的勾选; 注册包括用户名密码确认密码再次确认密码(与上方输入的密码比对&#xff09;身份班级设置找回账号的问题和答案…

【人工智能】英文学习材料01(每日一句)

&#x1f33b;个人主页&#xff1a;相洋同学 &#x1f947;学习在于行动、总结和坚持&#xff0c;共勉&#xff01; 目录 1.Natural Language Processing&#xff0c;NLP&#xff08;自然语言处理&#xff09; 2.Machine Learing&#xff0c;ML&#xff08;机器学习&#xf…

C#学习路线指南

C#新手学习路线指南 - 简书 https://www.cnblogs.com/yunbrody/p/17534310.html 第一部分&#xff1a;面向对象C#基础知识 1.C#开发入门 认识.NET平台与C#语言、理解.NET Framework框架、编写一个简单的C#程序并理解、C#程序的编译运行原理、VS常用开发环境设置&#xff08…

【AI】机器学习是什么?

相关内容可以参考我之前的“大厂AI课笔记系列”。 一、概念与技术发展 机器学习是人工智能&#xff08;AI&#xff09;的一个子领域&#xff0c;它的核心是让计算机系统从数据中学习并提升性能&#xff0c;而无需进行明确的编程。换句话说&#xff0c;机器学习是关于开发和使…

FFplay使用滤镜添加字幕到现有视频显示

1.创建字幕文件4k.srt 4k.srt内容: 1 00:00:01.000 --> 00:00:30.000 日照香炉生紫烟2 00:00:31.000 --> 00:00:60.000 遥看瀑布挂前川3 00:01:01.000 --> 00:01:30.000 飞流直下三千尺4 00:01:31.000 --> 00:02:00.000 疑是银河落九天2.通过使用滤镜显示字幕在视…

【GPT-SOVITS-03】SOVITS 模块-生成模型解析

说明&#xff1a;该系列文章从本人知乎账号迁入&#xff0c;主要原因是知乎图片附件过于模糊。 知乎专栏地址&#xff1a; 语音生成专栏 系列文章地址&#xff1a; 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…

llama笔记:官方示例解析 example_chat_completion.py

1 导入库 from typing import List, Optional从typing模块中导入List和Optional。typing模块用于提供类型注解的支持&#xff0c;以帮助明确函数预期接收和返回的数据类型。List用于指定列表类型Optional用于指定一个变量可能是某个类型&#xff0c;也可能是None。 import fir…

Linux 下使用 socket 实现 TCP 客户端

目录 示例代码板级验证更多内容 套接字&#xff08;socket&#xff09;是 Linux 下的一种进程间通信机制&#xff08;socket IPC&#xff09;&#xff0c;它不仅支持同一主机的不同进程间通信&#xff0c;还支持跨网络的不同主机的进程间通信。 socket 允许通过标准的文件描述…

【K8s】肿么办??Kubernetes Secrets并不是Secret哟!!

【K8s】肿么办??Kubernetes Secrets并不是Secret哟!! 目录 【K8s】肿么办??Kubernetes Secrets并不是Secret哟!!Kubernetes Secrets为什么不认为 Base64 编码是密文?问题出现了以下是几种加密 K8s Secrets 的选项。Bitnami Sealed Secrets 介绍Bitnami Sealed Secrets…

十四、GPT

在GPT-1之前&#xff0c;传统的 NLP 模型往往使用大量的数据对有监督的模型进行任务相关的模型训练&#xff0c;但是这种有监督学习的任务存在两个缺点&#xff1a;预训练语言模型之GPT 需要大量的标注数据&#xff0c;高质量的标注数据往往很难获得&#xff0c;因为在很多任务…