浏览器内存漫游

所谓浏览器内存漫游就是通过内存中变量级别的抓包监控,把浏览器中js加载过程中的变量值全部存储下来,从而达到可以随意检索浏览器内存中的数据。

有了浏览器内存漫游,就可以通过某个接口的变量的值反查变量生成的地方,从而快速定位接口参数,这在JS逆向这一块非常方便。

JS逆向之Fiddler编程猫插件使用一文中提到过一种浏览器内存漫游的方案,那就是使用Fiddler+编程猫插件,然而编程猫插件只支持windows平台,而且两个软件配置起来有点麻烦。这里介绍一个新的库:https://github.com/JSREI/ast-hook-for-js-RE,这个工具跨平台,并且配置简单。

安装配置

以mac环境为例,其它环境大同小异。

  1. 克隆项目到本地文件夹
1
git clone https://github.com/CC11001100/ast-hook-for-js-RE.git
  1. 安装依赖

进入项目文件夹,并安装依赖

1
2
cd ast-hook-for-js-RE
npm i
  1. 安装anyproxy并安装证书

由于ast-hook-for-js是依赖于anyproxy抓包的,所以需要先安装anyproxy:

1
sudo npm install -g anyproxy

通过命令安装anyproxy。

要代理https,还需生成CA证书并添加信任,命令如下:

1
anyproxy-ca

会在当前目录下生成一个rootCA.crt文件,双击这个文件,然后选择系统,如下图:

进入到系统,刚才添加的证书默认是不信任,如图:

image-20230518232430790

双击这个文件,展开信任栏,选择始终信任,如下图:

然后退出保存修改即可。

  1. 启动项目
1
2
cd src/proxy-server
node proxy-server.js

注:一定要进入到proxy-server.js所在的目录后再运行proxy-server.js,否则会出现莫名的错误

  1. 配置系统代理

打开设置,搜索代理:

image-20230518233138014

点击代理,配置如下:

image-20230518233258653

至此,安装配置完成。

测试

以极验为例,浏览器中打开https://gt4.geetest.com/,并且打开控制台,进入network栏。找到加载验证码的请求,并随便复制一个请求参数,比如challenge,如下图:

image-20230518233753024

然后切换到console控制台,输入如下代码:

1
hook.search("e7116cce-9779-4cad-be71-f0117681e781")

执行结果如下:

image-20230518234009822

这样就根据值查找到了需要逆向的入参,点击最后的一个代码位置,进入到相关代码位置,如下:

image-20230518234233992

可以看到challenge是由uuid方法生成。