这里写目录标题

  • 前言
    • 一、什么是内存漫游?
    • 二、功能列表
  • 三、本程序实现原理及流程
  • 四、安装
    • node版本要求
    • 启动项目
    • 杂项

前言

浏览Github中发现的一个好项目ast-hook-for-js-RE
项目github地址:https://github.com/CC11001100/ast-hook-for-js-RE。
一个非常好的项目,大家可以多给作者star支持一下。
Github需要科学上网,所以在这里克隆了一下仓库到国内。
链接:https://gitee.com/wangpeng35023502/ast-hook-for-js-RE

一、什么是内存漫游?

作者的话:
简单的说,这是一个浏览器端的内存漫游解决方案,借助此工具你可以随意检索浏览器内存中的数据(标题党警告一次),
默认看到这个项目的人都是会点逆向的, 所以可以简单理解为这是一个浏览器版本的objection,
这里的浏览器特指Chrome浏览器, 事实上在写代码的时候我也并没有考虑兼容其它的浏览器。

二、功能列表

本项目刚刚立项,内存漫游功能并不是特别完善(其实只有一个功能…),目前已开发的功能:

  • 变量级抓包监控,根据加密参数秒秒钟定位到加密逻辑的代码位置(追加密逻辑代码位置的通杀方案)

计划开发的功能:

  • 基础的定位功能的兼容性一直在搞咋也搞不完,上面那条就当我吹牛笔了…
  • 目前 TODO v0.3 功能点:
    • script hook plugins,通过script设置innerHTML动态插入到页面中的逻辑也能够Hook到
    • eval hook plugins想办法能够直接定位到jsvm中,现在只能知道是在eval中,但跳不到vm中
    • cache的逻辑优化
    • 想办法对定位doc请求url中的加密参数能够起到一定的帮助作用(也许应该把另一个还未完全开源的hook项目直接合并进来?)

三、本程序实现原理及流程

划回来!请务必不要跳过此部分,在使用本程序之前,希望你能够对其原理有一个大致的了解,知其然知其所以然。

本程序的运行原理非常简单,所有的功能都是基于AST Hook构建的,其大致流程:

  1. 访问目标网站时设置浏览器走我们自定义的代理服务器,这个代理服务器要支持能够使用代码处理请求,这里选择的是anyproxy。
  2. 在代理服务器这里,对请求做处理,对于JavaScript响应和HTML响应里的JS代码,使用AST实时处理,注入Hook逻辑。
  3. Hook逻辑就是所有涉及到变量改动的地方都经过我们的Hook方法,以此实现页面上所有的变量值变动都可以捕获到,你可以把这理解为内存中变量级别的抓包监控
  4. 抓到的变量会被保存到一个变量数据库中,然后当你访问页面请求了带加密参数的请求之后,从Chrome开发者工具的Network中把那个加密参数复制出来,
    切换到console调用本工具提供的api在变量数据库中搜索一下,就能搜索到存储这个字符串的变量及变量所在的代码位置,
    单击代码位置可以自动切换到Source面板并自动定位到变量位置。
  5. 然后在此处打断点往前找加密逻辑抠出来就好了,如果有多个加密参数或者加密参数为多个地方拼接生成,无脑重复此步骤即可。

注:不要尝试去搜索AST Hook相关的资料,这只是一个我瞎编的词…感兴趣请自行阅读项目源码。

四、安装

node版本要求

注:笔者在编码时使用到了较高版本的语法,因此请更新的您的node版本至少到14.0.0+,建议更新到最新的LTS版本。

首先将项目push到本地

git clone https://gitee.com/wangpeng35023502/ast-hook-for-js-RE

解压到本地,安装所需依赖,分别是anyproxy,需自行安装

npm install anyproxy

启动项目

需要启动两个本地Server,anyproxy的代理Server监听在本地10086端口,运行这个文件即可:

src/proxy-server/proxy-server.js

要用anyproxy抓取https请求需要信任它的证书,在运行这个文件之前,先用anyproxy ca选项启动,访问它的web管理界面:

http://localhost:8002/

然后下载证书信任即可:

再将下载的证书放进受信任的证书即可,可自行百度。

api-server监听在本地10010端口,运行这个文件即可:

src/api-server/api-server.js

然后在浏览器中将代理设置为10086端口即可,这里推荐使用便携版Chrome搭建单独的调试环境,并搭配Proxy SwitchyOmega或类似的插件作为代理路由辅助:
https://chrome.google.com/webstore/detail/padekgcemlokbadohgkifijomclgjgif

杂项

因为用AST实时处理JS文件太慢了,所以设置了个缓存,缓存目录默认为:

src/proxy-server/js-file-cache

其它IDE请自行搜索如何设置。

OK,至此已经安装完毕。


怎么使用呢?下一篇文章会写具体的使用方法。

ast-hook-for-js-RE 浏览器内存漫游相关推荐

  1. 转载:实用 FRIDA 进阶 --- objection :内存漫游、hook anywhere、抓包

    转载:实用FRIDA进阶:内存漫游.hook anywhere.抓包:https://www.anquanke.com/post/id/197657 frida github 地址:https://g ...

  2. :实用 FRIDA 进阶 --- objection :内存漫游、hook anywhere、抓包

    转载:实用FRIDA进阶:内存漫游.hook anywhere.抓包:https://www.anquanke.com/post/id/197657 frida github 地址:https://g ...

  3. 实用frida进阶:内存漫游、hook anywhere、抓包

    目录 1 内存漫游 1.1 获取基本信息 1.2 提取内存信息 1.3 内存堆搜索与执行 1.4 启动activity或service 2 Frida hook anywhere 2.1 object ...

  4. 前端面试题全面整理-带解析 涵盖CSS、JS、浏览器、Vue、React、移动web、前端性能、算法、Node...

    来源 | https://www.html.cn/interview/13950.html 本篇文章整理总结了一些前端面试题,涵盖面很广,并且面的都是知名大厂,所以这些题还是很有代表性的,都掌握以后一 ...

  5. css、js、浏览器、vue、react、移动web、前端性能、算法、node前端面试题

    前端面试题全面整理-带解析 涵盖(css.js.浏览器.vue.react.移动web.前端性能.算法.node) 前言 上期整理了一些vue面试题,本期整理总结这些前端面试题,涵盖面很广,并且面的都 ...

  6. vue中引用js_从JS中的内存管理说起 —— JS中的弱引用

    点击上方"蓝字"关注本公众号 写在前面 在所有的编程语言中,我们声明一个变量时,需要系统为我们分配一块内存.当我们不再需要这个变量时,需要将内存进行回收(这个过程称之为垃圾回收). ...

  7. 狗和披萨:使用TensorFlow.js在浏览器中实现计算机视觉

    目录 起点 托管说明 MobileNet v1 运行物体识别 终点线 下一步是什么?绒毛动物? 下载TensorFlowJS示例-6.1 MB TensorFlow + JavaScript.现在,最 ...

  8. 使用TensorFlow.js在浏览器中进行深度学习入门

    目录 设置TensorFlow.js 创建训练数据 检查点 定义神经网络模型 训练AI 测试结果 终点线 内存使用注意事项 下一步是什么?狗和披萨? 下载TensorFlowJS示例-6.1 MB T ...

  9. 前端浏览器内存监控方式

    内存问题的外在表现 页面出现延迟加载或者经常性暂停 页面持续性出现糟糕的性能 页面性能随时间延长越来越差 监控内存的方式 1. 浏览器的任务管理器 创建一个html页面,通过点击按钮,创建一个大型数组 ...

最新文章

  1. java集合:LinkedList
  2. iOS框架介绍之coreImage
  3. 网络爬虫--22.【CrawlSpider实战】实现微信小程序社区爬虫
  4. LeetCode 668. 乘法表中第k小的数(二分查找)
  5. 自定义filter中配置不被过滤的资源
  6. 双显卡只用独显好吗_双动力洗衣机好吗
  7. 云服务器选ssd还是hdd_云服务器应该怎么选择?
  8. 马克思知识点总结(一)
  9. 计算C(n,0)+C(n,1)+...+C(n,m)--Problem B. Harvest of Apples
  10. 拓端tecdat|R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样
  11. 两路共享LSTM时序数据预测实战+界面可视化应用
  12. 排名前5位的免费Java电子书
  13. mtk刷机/启动流程学习笔记
  14. Java项目:ssm实验室设备管理系统
  15. 三星S5P6818开发板 (ARM Cortex-A53架构)
  16. java转Js原生,Java到JavaScript的转换
  17. GPRS 区分2g/3g/4g网络
  18. Node之使用os模块获取操作系统信息
  19. ios系统安装包下载_iOS 屏蔽系统升级,描述文件版本已复活,无需越狱,请速度下载!...
  20. uni-app 微信小程序 分享功能 传参 接收 与 调试

热门文章

  1. 旧文备份:热电偶/热电偶分度表生成
  2. C/C++校园导航图的实现
  3. Linux lsblk和df命令区别
  4. 这支研自985药学教授的祛痘神器,刷爆了大学朋友圈
  5. 2023河北大学计算机考研信息汇总
  6. 凯立德货车导航H655强劲配置 护航货运大展身手
  7. 高频电子线路仿真-高频小信号谐振放大器
  8. swig: error while loading shared libraries: libpcre.so.1: cannot open shared object file 亲测解决方法
  9. sumo之定义车辆和路由
  10. Elasticsearch之分析(analysis)和分析器(analyzer)。