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

news2024/10/7 12:24:20

▒ 目录 ▒

    • 🛫 导读
      • 需求
      • 开发环境
      • 演示目标
    • 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 here
        Java.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.coloradmin.cn/o/1524746.html

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

相关文章

R语言深度学习-6-模型优化与调试

本教程参考《RDeepLearningEssential》 这是本专栏的最后一篇文章,一路走来,大家应该都可以独立的建立一个自己的神经网络进行特征学习和预测了吧! 6.1 缺失值处理 在我们使用大量数据进行建模的时候,缺失值对模型表现的影响非常…

【鸿蒙HarmonyOS开发笔记】自定义组件详解

自定义组件 除去系统预置的组件外,ArkTS 还支持自定义组件。使用自定义组件,可使代码的结构更加清晰,并且能提高代码的复用性。 我们开发的每个页面其实都可以视为自定义组件内置组件的结合 语法说明 自定义组件的语法如下图所示 各部分…

Github: Github actions 自动化工作原理与多workflow创建和部署

Github actions 1 )概述 Github Actions 是Github官方推出的 CI/CD 解决方案 https://docs.githu.com/en/actions 优点 自动发布流程可减少发布过程中手动操作成本,大幅提升ci/cd效率,快速实现项目发布上线 缺点 存在较高的技术门槛需要利用…

Linux_基础指令(一)

目录 1、ls指令 1.1 ls -l 1.2 ls -a 1.3 ls -i 2、pwd指令 3、cd指令 3.1 路径的概念 3.1.1 绝对路径 3.1.2 相对路径 3.2 cd ~ 3.3 cd - 4、touch指令 5、mkdir指令 6、删除系列的指指令 6.1 rmdir 6.2 rm 7、man指令 8、cp指令 9、move指令 结…

算法——贪心

「贪心的本质是选择每一阶段的局部最优,从而达到全局最优」 贪心无套路 1. 分发饼干 贪心策略: (1)局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩 &#xff08…

AndroidStudio 由dolphin升级到giraffe,出现“gradle project sync failed“

1 现象描述 将AS由之前的dolphin版本升级到giraffe之后,接着打开以前的Android project,出现了"Gradle project sync failed…"的异常提示,在build面板中并没有出现project sync过程中报错的日志。 异常提示如下图所示&#xff1a…

mysql驱动的下载和JDBC的使用(在idea上)

1.mysql驱动的下载 在这里我们需要进入中央仓库中去下载mysql驱动的下载。 https://mvnrepository.com/ 上面就是中央仓库的网址。 如图: 上面就是中央仓库的网址首页。 1.在上面搜索框内输入mysql 如图: 这里呢,上面的mysql 是8.0以上版…

安装使用sqlite

在SQLite 下载页面中下载Windows的预编译的二进制文件 下载sqlite-tools-win32-*.zip和sqlite-dll-win32-*.zip压缩文件 解压下载的两个压缩文件,创建一个sqlite文件夹,把解压的文件放到sqlite的文件夹中,把创建的sqlite文件夹添加到环境变量…

Python——pgzero游戏打包exe执行时报错

Python——pgzero游戏打包exe执行时报错 记录一次使用 pgzero 开发游戏,使用 pyinstaller 打包时报错 目录结构: 1. 第一次报错 打包指令: pyinstaller -Fw .\code.py结果打开报错 报错如下: Traceback (most recent call…

【2024第一期CANN训练营】2、AscendCL概述

文章目录 【2024第一期CANN训练营】2、AscendCL概述1. AscendCL架构及基本概念1.1 什么是AscendCL?1.2 AscendCL的优势1.3 AscendCL应用场景1.4 基本概念 2. AscendCL接口调用流程2.1 流程概述2.2 详细步骤2.3 头文件和库文件 3. 准备开发和运行环境3.1 部署环境3.2…

基于springboot+vue的乡政府管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

智慧城市新篇章:数字孪生的力量与未来

随着信息技术的迅猛发展和数字化浪潮的推进,智慧城市作为现代城市发展的新模式,正在逐步改变我们的生活方式和社会结构。在智慧城市的构建中,数字孪生技术以其独特的优势,为城市的规划、管理、服务等方面带来了革命性的变革。本文…

企业计算机服务器中了devicdata勒索病毒怎么办,devicdata勒索病毒解密工具流程

随着科学技术的不断发展与应用,越来越多的企业开始利用网络开展各项工作业务,网络为企业的生产运营提供了极大便利,大大提高了生产运营效率,同时也为企业的发展规划带来不错的契机。但网络是一把双刃剑,网络在为人们提…

算法:一些DFS的经验

DFS:可以看作是向下遍历树的模拟 剪枝:减少时间复杂度 一个dfs所需要具备的元素: 一,出口 1.出口:每一个进入的dfs的出口,可以是枚举全部元素后退出该dfs,也可以是大于层数或剪枝条件........ 二,向下搜…

解决 Nginx 1.24 版本下载视频慢和文件问题的方法

解决 Nginx 1.24 版本下载视频慢和文件问题的方法 如果你最近在腾讯云服务器上遇到了下载视频慢以及视频文件无法正常使用的问题,可能需要检查一下你的 Nginx 版本。下面是一个真实案例的分析和解决方案,希望能帮助你避免或解决类似问题。 背景 一个运…

Vue3 - 笔记

1.创建Vue3项目 1.1vue-cli 使用vue-cli创建Vue3项目,需要确保vue-cli版本在4.5.0以上 ## 查看vue/cli版本,确保vue/cli版本在4.5.0以上 vue --version vue -V## 安装或者升级vue/cli npm install -g vue/cli使用vue-cli创建Vue3项目 vue create vue3…

Input/Output模型

I/O在计算机里指的是INPUT/OUTPUT,也就是输入/输出。IOPS即每秒钟的输入输出量。I/O的工作机制就是把数据从内核空间中的内存数据复制到用户空间中进程的内存当中。 Linux的I/O 磁盘I/O 磁盘I/O是进程向内核发起系统调用,请求磁盘上的某个资源&#xff…

论文阅读_时序模型_iTransformer

1 2 3 4 5 6 7 8英文名称: ITRANSFORMER: INVERTED TRANSFORMERS ARE EFFECTIVE FOR TIME SERIES FORECASTING 中文名称: ITRANSFORMER:倒置Transformers在时间序列预测中的有效性 链接: https://openreview.net/forum?idX6ZmOsTYVs 代码: https://github.com/thum…

深度学习 精选笔记(13.2)深度卷积神经网络-AlexNet模型

学习参考: 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。 ③非常推荐上面(学习参考&#x…

7.搜索——1.广度优先搜索BFS(求最优解)

广度优先遍历实现思路 构建辅助队列实现先进先出构建访问集,给已经访问的结点进行标记将起始结点加入队列当队列非空时: 取出队首元素将队首元素的所有邻居入队访问队首元素 队列空即访问完毕 用途:求最优解 例题——catch that cow 代码 …