From e5253b6a6b7fc331e8fe91d6a6da54bea04a5d02 Mon Sep 17 00:00:00 2001 From: luzhisheng Date: Fri, 18 Mar 2022 18:06:02 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zy-补环境框架/补环境.md | 19 ------------------ zy-补环境框架/补环境1.md | 43 ++++++++++++++++++++++++++++++++++++++++ zy-补环境框架/补环境2.md | 16 +++++++++++++++ 3 files changed, 59 insertions(+), 19 deletions(-) delete mode 100644 zy-补环境框架/补环境.md create mode 100644 zy-补环境框架/补环境1.md create mode 100644 zy-补环境框架/补环境2.md diff --git a/zy-补环境框架/补环境.md b/zy-补环境框架/补环境.md deleted file mode 100644 index 9c0323a..0000000 --- a/zy-补环境框架/补环境.md +++ /dev/null @@ -1,19 +0,0 @@ -## 补环境 - -1.调试环境 - -2.在环境框架中直接运行某js文件,补修改原js文件 - -## 自己写一个浏览器 - - 1.BOM 浏览器实现的代码历史记录浏览器版本信息之类的 - 2.DOM 根据id取元素 - 3.网络请求 xhr jsonp - jsonp_3213123({ayf:1}) - 4.跨窗口worker - -目的: 运行环境 - -难点:如何找到缺少的那些环境,如何很好的实现环境代码 - -伪造:我给你啥,你能正确返回啥可以了 diff --git a/zy-补环境框架/补环境1.md b/zy-补环境框架/补环境1.md new file mode 100644 index 0000000..fec0ad8 --- /dev/null +++ b/zy-补环境框架/补环境1.md @@ -0,0 +1,43 @@ +## 补环境 + +1.调试环境 + +2.在环境框架中直接运行某js文件,补修改原js文件 + +## 自己写一个浏览器 + + 1.BOM 浏览器实现的代码历史记录浏览器版本信息之类的 + 2.DOM 根据id取元素 + 3.网络请求 xhr jsonp + jsonp_3213123({ayf:1}) + 4.跨窗口worker + +目的: 运行环境 + +难点:如何找到缺少的那些环境,如何很好的实现环境代码 + +伪造:我给你啥,你能正确返回啥可以了 + +# vm2 纯净的v8环境 + +https://github.com/patriksimek/vm2 + + var fs = require('fs'); + const {VM} = require('vm2'); + const vm = new VM(); + var data = fs.readFileSync('./src/code.js', 'utf8') + vm.run(data) + +调试沙盒代码 + + const {VM, VMScript} = require('vm2'); + const fs = require('fs'); + // 运行的code代码 + const file = `${__dirname}/code.js`; + + // 需要补的window环境 + const windowfile = `${__dirname}/window.js`; + const vm = new VM(); + const script = new VMScript(fs.readFileSync(windowfile)+fs.readFileSync(file), "我正在调试的代码"); + vm.run(script); + diff --git a/zy-补环境框架/补环境2.md b/zy-补环境框架/补环境2.md new file mode 100644 index 0000000..98dbb64 --- /dev/null +++ b/zy-补环境框架/补环境2.md @@ -0,0 +1,16 @@ +## 如何更加好的补环境 + + https://github.com/jsdom/jsdom + +jsdom 是许多 web 标准的纯 JavaScript 实现,特别是 WHATWG DOM和HTML标准,用于 Node.js。一般来说,该项目的目标是模拟足够多的 Web 浏览器子集,以用于测试和抓取真实世界的 Web 应用程序。 + + +## 框架 + + 调试框架要有封装的思想,功能单一,可扩展性强, + js调试框架 监控所有的环境 + 代理,在自己伪造的环境代理,任意代理,包座代理不会被检测,某些对象不能完美被伪造 + 利用谷歌开源浏览器,进行修改内核代码 + + 代码如果被检测 + tostring,node \ No newline at end of file