【JS逆向】魔改Node JS补环境框架
【JS逆向】魔改Node JS补环境框架
- 前言
- 魔改Node Js补环境框架
- 内置模块wanfeng
- 内置对象Utils
- node框架使用说明
- js框架简介
- 注意事项
- 警告
- 赞助
- 结束语
前言
由于JS沙箱定义非常多的构造函数以及prototype时,会导致初始化JS耗时太久。所以将定义这块内置到了Node中,并且很好的解决了方法toString检测,而真正的方法逻辑依旧使用JS实现,所以其实只是在底层定义了一套壳而已。
项目地址:https://github.com/bnmgh1/node-sandbox.git
魔改Node Js补环境框架
内置模块wanfeng
内置模块wanfeng, 模块里面存放的是构造函数, 是未初始化的, 也就是原型对象以及链都没有设置.
var undefined_obj = new wanfeng.xtd;
这样就可以得到一个type为undefined的对象了,感谢泰迪大佬提供的代码。
ps:我实现的有bug,蓝瘦
内置对象Utils
Utils对象里的方法都是做初始化用的, 使用参考util目录下的init_env.js文件,
这里就不赘述了,使用Utils对象初始化对象之前,先定义一个globalMy对象,否则会报错.Error_get_stack: 报错堆栈获取的时候会在这里被拦截,然后再返回堆栈字符串出去。(感谢陈不不大佬给予的帮助)
newWindow newDocument newLocation 是返回一个对象,定义好属性的对象,不过原型以及链没设置,需要手动设置下.
实现可以看init_env.js globalMy.newWindow, 初始化 window location document.
node框架使用说明
以window对象为例, window 获取 window对象时, 会走到 globalMy.window_get_window 这个方法里,我们在这里写方法逻辑。
以document对象为例, document 调用 createElement方法时, 会走到 globalMy.Document_createElement 这个方法里,因为是原型链上的方法,所以是Document
还是以document为例, document 获取 location对象时, 会走到 globalMy.document_get_location 这个方法里, 因为location是直接属于document对象下的。
ps : 核心就是在node底层定义了一层拦截器, 然后最终又走到我们定义的js方法里完成调用. 底层定义的方法不需要考虑toString检测. 而且node设置属性比js的defineProperty快很多.
js框架简介
因为之前自己写的沙箱太垃圾, 所以没有和node框架做结合. 不过node框架初始化也快, 干脆就直接用jsdom了, 偷懒了.
创建节点对象时, 我会定义一个壳对象来映射jsdom对象达到过检测的目的. 我实现的没有很优雅, 够用就行了
注意事项
框架默认重写Promise, 如果需要用自带的, 请在初始化之前备份这个对象, 然后替换~
不要代理任何对象,代理对象调用方法时会直接报错,和浏览器一样的机制。建议在方法调用时打印,像我的js框架一样。
node无法使用正常的vm2模块, 改用vm模块了.所以暂时应该只能起服务调用.(不建议用execjs调, 真的很蠢…)
如果直接用node环境的话, 应该就能用python库调用了, 没去试. 因为node环境检测太多了, 不想用.
非构造函数的原型对象, 就实现了个别, 比如WindowProperties这种的原型对象.
如果遇到方法没有定义的话, node会挂掉噢…
警告
此代码开源仅供学习使用, 如有影响请联系作者删除. 请勿用于非法用途, 否则法律后果自负. 最后请不要利用信息差用此框架去获利.
赞助
我、陈不不大佬、泰迪大佬一起合作的星球 : https://t.zsxq.com/06bIUvBEM
结束语
水篇文章而已啦,用项目里的 node.exe 运行 main.js就可以了。
已经有3份例子了,具体是什么安全产品就不说了。
有啥bug或者更好的思路联系作者 q/v :1491025307
【JS逆向】魔改Node JS补环境框架相关推荐
- JS逆向、破解、反混淆、反浏览器指纹——JS补环境框架
JS逆向的主要思路一般有这几种 1,利用AST反混淆,因为用的就是AST混淆的,所以理论上应该都能用AST再返回去.但是实际操作好像不容易. 2,跟值,一步一步找到加密方法和密钥.现在很多混淆方法,把 ...
- 【深入浅出Node.js系列十一】Node.js开发框架Express4.x
为什么80%的码农都做不了架构师?>>> #0 系列目录# 深入浅出Node.js系列 [深入浅出Node.js系列一]什么是Node.js [深入浅出Node.js系列二]N ...
- node.js入门系列(一)--Node.js简介
什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是一 ...
- linux安装Node.js(详细)Node.js安装教程
linux安装Node.js(详细)Node.js安装教程 文章目录 linux安装Node.js(详细)Node.js安装教程 1:下载 2:解压 3:移动目录 1:创建目录 2:移动目录并重命名 ...
- Node.js 是什么?Node.js与JavaScript的区别是什么?
node.js是什么?Node.js是一个Javascript运行环境(runtime).Node.js与JavaScript的区别是什么?本质: Javascript是一种web前端语言,主 ...
- Node.js(一、Node.js基础、模块加载机制、包等)
Node.js(一.Node.js基础.模块加载机制.包等) 1.Node.js基础 1.1.Node是什么 1.2.Node环境安装失败解决方法 1.2.1.Node环境搭建 1.2.2.错误代码2 ...
- Node.js简介——为什么要学习node.js
目录 什么是node.js 为什么要学习node.js node.js特点 什么是node.js Node.js简称Node,是一个可以使JavaScript运行在服务器端的开发平台. (1)Node ...
- 【Node.js】2.开发Node.js选择哪个IDE 开发工具呢
安装完Node.js之后,就要为它选择一个有利的IDE用于开发. 相比较了多个IDE之后,定位在webstrom和sublime上. 有一个简单的比较: webstorm功能很丰富,前端开发工具的集大 ...
- node.js事件驱动_了解Node.js事件驱动架构
node.js事件驱动 by Samer Buna 通过Samer Buna 了解Node.js事件驱动架构 (Understanding Node.js Event-Driven Architect ...
最新文章
- PE文件和COFF文件格式分析——导出表的应用——通过导出表隐性加载DLL
- 图片转字符 android,转字符图app下载-转字符图 安卓版v2.4-PC6安卓网
- golang中的strings.Repeat
- oracle:自定义函数
- android log耗性能吗,一个高性能的Android日志库
- nested exception is java.lang.ClassNotFoundException: Interceptor
- 【C++深度剖析教程16】智能指针的分析
- oracle 怎么创建类型,ORACLE—002:Create之创建类型
- 关于微信浏览器H5 React,Vue工程化项目input无法自动聚焦疑难杂症排查
- matlab做信号实验需要安装那些模块_无人机基于Matlab/Simulink的模型开发(连载一)...
- vegan稀释曲线 基因丰度_R语言 vegan包计算物种累计曲线
- double-talk检测算法分类
- 在.NET中调用Oracle9i存储过程经验总结
- [转]Magento2开发教程 - 如何向数据库添加新表
- 【月伴流星】GhostW7_SP1_U_x64_V2013.07_OEM通用纯净、装机、美化版(三版齐发)
- jQuery动画入门--顺序执行
- 计算机 64虚拟内存设置方法,计算机虚拟内存怎样设置
- 数据结构——哈夫曼树及其应用
- net-java-php-python-宠物销售系统计算机毕业设计程序
- 【JMeter】JMeter怎么实现接口关联?
热门文章
- sqlalchemy 学习笔记(全)
- 2022/9/12(cf·div4#817)https://codeforces.com/contest/1722
- Android studio自己导入的图片在ImageView中找不到
- JavaScript——防止手机中网页放大和缩小
- Python定义字典,写联系人及电话号码,查找……
- gitee码云完整使用教程部署与克隆-用git命令
- 一步转移概率矩阵的实现
- uniapp 下拉刷新、上拉加载更多、最常见的节流场景
- 【社区治理】币车社区规范V1.0版本
- DC-3靶机渗透详细教程(附靶机链接)