浏览器内存漫游
所谓浏览器内存漫游就是通过内存中变量级别的抓包监控,把浏览器中js加载过程中的变量值全部存储下来,从而达到可以随意检索浏览器内存中的数据。
有了浏览器内存漫游,就可以通过某个接口的变量的值反查变量生成的地方,从而快速定位接口参数,这在JS逆向这一块非常方便。
在JS逆向之Fiddler编程猫插件使用一文中提到过一种浏览器内存漫游的方案,那就是使用Fiddler+编程猫插件,然而编程猫插件只支持windows平台,而且两个软件配置起来有点麻烦。这里介绍一个新的库:https://github.com/JSREI/ast-hook-for-js-RE,这个工具跨平台,并且配置简单。
安装配置
以mac环境为例,其它环境大同小异。
- 克隆项目到本地文件夹
1 | git clone https://github.com/CC11001100/ast-hook-for-js-RE.git |
- 安装依赖
进入项目文件夹,并安装依赖
1 | cd ast-hook-for-js-RE |
- 安装anyproxy并安装证书
由于ast-hook-for-js是依赖于anyproxy抓包的,所以需要先安装anyproxy:
1 | sudo npm install -g anyproxy |
通过命令安装anyproxy。
要代理https,还需生成CA证书并添加信任,命令如下:
1 | anyproxy-ca |
会在当前目录下生成一个rootCA.crt文件,双击这个文件,然后选择系统,如下图:

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

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

然后退出保存修改即可。
- 启动项目
1 | cd src/proxy-server |
注:一定要进入到proxy-server.js所在的目录后再运行proxy-server.js,否则会出现莫名的错误。
- 配置系统代理
打开设置,搜索代理:

点击代理,配置如下:

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

然后切换到console控制台,输入如下代码:
1 | hook.search("e7116cce-9779-4cad-be71-f0117681e781") |
执行结果如下:

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

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