首页 文章 排行 更新 赞助VIP 自定义收藏 搜索狂魔 广告位购买【请先登录!】 注册 登录

    Frida调试环境搭建 - 大咖技术

    浏览人数:311 更新时间:2021-02-07 所属栏目:技术教程

1. 前言

  • 目标:使用VSCode”调试“frida脚本
  • 环境
    • 设备:Pixel 3 Android9 180720.030
    • frida:14.2.6
    • Node.js:14.15.4
    • npm:6.14.10
    • Visual Studio Code 1.52.1 (user setup)
    • VSCode使用的是IntelliJ IDEA Keybindings
    • 2021/1/31

我们使用TypeScript编写frida脚本,再通过frida-compileTypeScript编译成JavaScript代码。

  • 使用TypeScript的好处
    • 自动补全
    • 类型检查
    • 内联文档
    • 重构工具
    • ......

首先介绍搭建TypeScript调试环境,再具体介绍Frida调试环境的配置

2. 搭建TypeScript调试环境

2.1 搭建TypeScript开发环境

2.1.1 安装Node.js和npm

Node.js下载
https://nodejs.org/en/download/

npm和Node.js是捆绑在一起的

配置npm

npm使用的默认源(registry)是https://registry.npmjs.org,在国外访问很慢,就算挂代{过}{滤}理访问也慢,所以直接替换成国内的源http://registry.npm.taobao.org,操作如下:

得到配置文件路径
npm config get

修改用户配置文件

  • 配置文件优先级:
    • per-project config file (/path/to/my/project/.npmrc)
    • per-user config file (~/.npmrc)
    • global config file ($PREFIX/etc/npmrc)
    • npm builtin config file (/path/to/npm/npmrc)

2.1.2 建立项目目录

使用以下命令创建项目的目录:

 复制代码 隐藏代码
mkdir ts3 cd ts3 mkdir src mkdir dist

建立好的目录如下:

 复制代码 隐藏代码
ts3 ├─dist └─src

2.1.3 初始化 NPM

在项目的根目录下,执行下面的命令:

 复制代码 隐藏代码
npm init -y

现在项目结构如下:

 复制代码 隐藏代码
ts3 ├─dist └─src └─package.json

package.json介绍

2.1.4 安装TypeScript

在项目的根目录下,执行下面的命令:

 复制代码 隐藏代码
npm install -g typescript

加了参数-g,会在全局环境安装TypeScript,不加只会在当前工程下安装TypeScript

2.1.5 创建并配置tsconfig.json

在项目的根目录下,执行下面的命令:

 复制代码 隐藏代码
tsc --init

现在项目结构如下:

 复制代码 隐藏代码
ts3 ├─dist └─src └─package.json └─tsconfig.json

tsconfig.json介绍

在 tsconfig.json 中取消下面属性项的注释,并修改其属性的值:

这样设置之后,我们在 ./src 中编码 .ts 文件,.ts 文件编译成 .js 后,输出到 ./dist 中。

 复制代码 隐藏代码
"outDir": "./dist", "rootDir": "./src",

2.1.6 Hello TypeScript

将下面代码复制到./src/index.ts中:

 复制代码 隐藏代码
const hello: string = 'hello, Genliese'; console.log(hello);

在项目的根目录下,执行下面的命令:

tsc 是编译命令,详情查看:https://www.tslang.cn/docs/handbook/typescript-in-5-minutes.html

tsc 的编译选项,详情查看:https://www.tslang.cn/docs/handbook/compiler-options.html

 复制代码 隐藏代码
//编译 tsc //执行 node ./dist/index.js

执行结果如下:

2.1.7 使用自动实时编译

手动编译还是比较麻烦,如果能够保存代码后,能自动编译就好了。

详情查看:https://go.microsoft.com/fwlink/?LinkId=733558

Ctrl + F9 运行构建任务,将显示以下选项:

选择 tsc: watch - tsconfig.json ,回车运行之后,编辑的代码保存之后,就会自动编译。

2.2 代码检查

代码检查主要是用来发现代码错误和统一代码风格。

详情查看:https://ts.xcatliu.com/engineering/lint.html

2.2.1 安装ESLint

ESLint 可以安装在当前项目中或全局环境下,因为代码检查是项目的重要组成部分,所以我们一般会将它安装在当前项目中(也可以安装在全局,因为package.json中记录有依赖库,别人下载项目后,直接npm install即可安装所有依赖库)。可以运行下面的脚本来安装:

 复制代码 隐藏代码
npm install eslint --save-dev

由于 ESLint 默认使用 Espree 进行语法解析,无法识别 TypeScript 的一些语法,故我们需要安装 typescript-eslint-parser,替代掉默认的解析器,别忘了同时安装 typescript

 复制代码 隐藏代码
npm install typescript typescript-eslint-parser --save-dev

由于 typescript-eslint-parser 对一部分 ESLint 规则支持性不好,故我们需要安装 eslint-plugin-typescript,弥补一些支持性不好的规则。

 复制代码 隐藏代码
npm install eslint-plugin-typescript --save-dev

现在项目结构如下:

 复制代码 隐藏代码
ts3 ├─dist └─node_modules └─src └─package-lock.json └─package.json └─tsconfig.json

package-lock.json是锁定依赖库的版本
package-lock.json介绍

2.2.2 创建配置文件 .eslintrc.js

ESLint 需要一个配置文件来决定对哪些规则进行检查,配置文件的名称一般是 .eslintrc.js 或 .eslintrc.json

当运行 ESLint 的时候检查一个文件的时候,它会首先尝试读取该文件的目录下的配置文件,然后再一级一级往上查找,将所找到的配置合并起来,作为当前被检查文件的配置。

在项目的根目录下,执行下面的命令:

 复制代码 隐藏代码
//创建配置文件 ./node_modules/.bin/eslint --init

按需求,选择相应的选项:

图中出现了WARN,编辑package.json修改对应字段:

 复制代码 隐藏代码
  "description": "default",   "repository": {     "type": "git",     "url": "none"   },

现在项目结构如下:

 复制代码 隐藏代码
ts3 ├─dist └─node_modules └─src └─.eslintrc.js └─package-lock.json └─package.json └─tsconfig.json

编辑 .eslintrc.js,增加 parser: 'typescript-eslint-parser', 替换掉默认的解析器,使之识别 TypeScript 的一些语法,如下面所示:

 复制代码 隐藏代码
module.exports = {   parser: 'typescript-eslint-parser',   env: {     es6: true,     node: true,   },   extends: 'airbnb-base',   globals: {     Atomics: 'readonly',     SharedArrayBuffer: 'readonly',   },   parserOptions: {     ecmaVersion: 2018,     sourceType: 'module',   },   rules: {   }, };

2.2.3 在 VSCode中集成ESLint检查

在编辑器中集成 ESLint 检查,可以在开发过程中就发现错误,极大的增加了开发效率。

要在 VSCode 中集成 ESLint 检查,我们需要先安装 ESLint 插件,点击「扩展」按钮,搜索 ESLint,然后安装即可。

VSCode 中的 ESLint 插件默认是不会检查 .ts 后缀的,需要在「文件 => 首选项 => 设置」中

添加以下配置:

 复制代码 隐藏代码
{   "eslint.validate": [     "typescript"   ] }

将下面代码复制到./src/index.ts中:

							    
你来打破0评论