【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

  1. Utils对象里的方法都是做初始化用的, 使用参考util目录下的init_env.js文件,
    这里就不赘述了,使用Utils对象初始化对象之前,先定义一个globalMy对象,否则会报错.

  2. Error_get_stack: 报错堆栈获取的时候会在这里被拦截,然后再返回堆栈字符串出去。(感谢陈不不大佬给予的帮助)

  3. newWindow newDocument newLocation 是返回一个对象,定义好属性的对象,不过原型以及链没设置,需要手动设置下.
    实现可以看init_env.js globalMy.newWindow, 初始化 window location document.

node框架使用说明

  1. 以window对象为例, window 获取 window对象时, 会走到 globalMy.window_get_window 这个方法里,我们在这里写方法逻辑。

  2. 以document对象为例, document 调用 createElement方法时, 会走到 globalMy.Document_createElement 这个方法里,因为是原型链上的方法,所以是Document

  3. 还是以document为例, document 获取 location对象时, 会走到 globalMy.document_get_location 这个方法里, 因为location是直接属于document对象下的。

ps : 核心就是在node底层定义了一层拦截器, 然后最终又走到我们定义的js方法里完成调用. 底层定义的方法不需要考虑toString检测. 而且node设置属性比js的defineProperty快很多.

js框架简介

  1. 因为之前自己写的沙箱太垃圾, 所以没有和node框架做结合. 不过node框架初始化也快, 干脆就直接用jsdom了, 偷懒了.

  2. 创建节点对象时, 我会定义一个壳对象来映射jsdom对象达到过检测的目的. 我实现的没有很优雅, 够用就行了

注意事项

  1. 框架默认重写Promise, 如果需要用自带的, 请在初始化之前备份这个对象, 然后替换~

  2. 不要代理任何对象,代理对象调用方法时会直接报错,和浏览器一样的机制。建议在方法调用时打印,像我的js框架一样。

  3. node无法使用正常的vm2模块, 改用vm模块了.所以暂时应该只能起服务调用.(不建议用execjs调, 真的很蠢…)

  4. 如果直接用node环境的话, 应该就能用python库调用了, 没去试. 因为node环境检测太多了, 不想用.

  5. 非构造函数的原型对象, 就实现了个别, 比如WindowProperties这种的原型对象.

  6. 如果遇到方法没有定义的话, node会挂掉噢…

警告

此代码开源仅供学习使用, 如有影响请联系作者删除. 请勿用于非法用途, 否则法律后果自负. 最后请不要利用信息差用此框架去获利.

赞助

我、陈不不大佬、泰迪大佬一起合作的星球 : https://t.zsxq.com/06bIUvBEM

结束语

水篇文章而已啦,用项目里的 node.exe 运行 main.js就可以了。
已经有3份例子了,具体是什么安全产品就不说了。
有啥bug或者更好的思路联系作者 q/v :1491025307

【JS逆向】魔改Node JS补环境框架相关推荐

  1. JS逆向、破解、反混淆、反浏览器指纹——JS补环境框架

    JS逆向的主要思路一般有这几种 1,利用AST反混淆,因为用的就是AST混淆的,所以理论上应该都能用AST再返回去.但是实际操作好像不容易. 2,跟值,一步一步找到加密方法和密钥.现在很多混淆方法,把 ...

  2. 【深入浅出Node.js系列十一】Node.js开发框架Express4.x

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 深入浅出Node.js系列 [深入浅出Node.js系列一]什么是Node.js [深入浅出Node.js系列二]N ...

  3. node.js入门系列(一)--Node.js简介

    什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是一 ...

  4. linux安装Node.js(详细)Node.js安装教程

    linux安装Node.js(详细)Node.js安装教程 文章目录 linux安装Node.js(详细)Node.js安装教程 1:下载 2:解压 3:移动目录 1:创建目录 2:移动目录并重命名 ...

  5. Node.js 是什么?Node.js与JavaScript的区别是什么?

    node.js是什么?Node.js是一个Javascript运行环境(runtime).Node.js与JavaScript的区别是什么?本质:     Javascript是一种web前端语言,主 ...

  6. 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 ...

  7. Node.js简介——为什么要学习node.js

    目录 什么是node.js 为什么要学习node.js node.js特点 什么是node.js Node.js简称Node,是一个可以使JavaScript运行在服务器端的开发平台. (1)Node ...

  8. 【Node.js】2.开发Node.js选择哪个IDE 开发工具呢

    安装完Node.js之后,就要为它选择一个有利的IDE用于开发. 相比较了多个IDE之后,定位在webstrom和sublime上. 有一个简单的比较: webstorm功能很丰富,前端开发工具的集大 ...

  9. node.js事件驱动_了解Node.js事件驱动架构

    node.js事件驱动 by Samer Buna 通过Samer Buna 了解Node.js事件驱动架构 (Understanding Node.js Event-Driven Architect ...

最新文章

  1. PE文件和COFF文件格式分析——导出表的应用——通过导出表隐性加载DLL
  2. 图片转字符 android,转字符图app下载-转字符图 安卓版v2.4-PC6安卓网
  3. golang中的strings.Repeat
  4. oracle:自定义函数
  5. android log耗性能吗,一个高性能的Android日志库
  6. nested exception is java.lang.ClassNotFoundException: Interceptor
  7. 【C++深度剖析教程16】智能指针的分析
  8. oracle 怎么创建类型,ORACLE—002:Create之创建类型
  9. 关于微信浏览器H5 React,Vue工程化项目input无法自动聚焦疑难杂症排查
  10. matlab做信号实验需要安装那些模块_无人机基于Matlab/Simulink的模型开发(连载一)...
  11. vegan稀释曲线 基因丰度_R语言 vegan包计算物种累计曲线
  12. double-talk检测算法分类
  13. 在.NET中调用Oracle9i存储过程经验总结
  14. [转]Magento2开发教程 - 如何向数据库添加新表
  15. 【月伴流星】GhostW7_SP1_U_x64_V2013.07_OEM通用纯净、装机、美化版(三版齐发)
  16. jQuery动画入门--顺序执行
  17. 计算机 64虚拟内存设置方法,计算机虚拟内存怎样设置
  18. 数据结构——哈夫曼树及其应用
  19. net-java-php-python-宠物销售系统计算机毕业设计程序
  20. 【JMeter】JMeter怎么实现接口关联?

热门文章

  1. sqlalchemy 学习笔记(全)
  2. 2022/9/12(cf·div4#817)https://codeforces.com/contest/1722
  3. Android studio自己导入的图片在ImageView中找不到
  4. JavaScript——防止手机中网页放大和缩小
  5. Python定义字典,写联系人及电话号码,查找……
  6. gitee码云完整使用教程部署与克隆-用git命令
  7. 一步转移概率矩阵的实现
  8. uniapp 下拉刷新、上拉加载更多、最常见的节流场景
  9. 【社区治理】币车社区规范V1.0版本
  10. DC-3靶机渗透详细教程(附靶机链接)