mirror of
https://github.com/bnmgh1/NodeSandbox.git
synced 2025-04-12 03:36:56 +08:00
修复bug
This commit is contained in:
parent
2c92c5ef1b
commit
ba6569f4cd
118
README.md
118
README.md
@ -1,96 +1,88 @@
|
|||||||
# 前言
|
# node食用手册
|
||||||
|
|
||||||
这里不讲框架, 介绍看食用手册.md.
|
- 我修改了vm源码, 这样我们使用vm时会少一些检测点. 所以我们是用vm来补环境的. 当然也会被穿透, 也需要我们去修改源码来解决这些问题
|
||||||
|
|
||||||
# 为啥开源这个框架?
|
- 框架套了jsdom, 换其他库请自行封装然后dump代码进行替换...
|
||||||
|
|
||||||
## 起因
|
- [my_api](#my_api)
|
||||||
|
- [介绍](#介绍)
|
||||||
|
- [API大全](#API大全)
|
||||||
|
|
||||||
去年的时候, 心血来潮. 我决定和不不开一个补环境框架设计的课. 内容是关于修改node源码+js框架相结合的补环境框架(主要是优化+过一些棘手的检测点)
|
- [cbb_wf](#cbb_wf)
|
||||||
|
- [介绍](#介绍)
|
||||||
讲课之前, 我基于上一版自己写的框架基础上, 重构优化了一遍, 才有了现在开源的这版.
|
|
||||||
|
|
||||||
## 经过
|
|
||||||
|
|
||||||
抱着试试水的态度, 我简单在群里宣传了一下.
|
|
||||||
|
|
||||||
### 事件1
|
|
||||||
|
|
||||||
接下来, 圈内“红”人 “王某某” 找到了我. 他说没钱, 买课能不能分期付款. 我说有钱了一次性给就好了, 就没催过他给钱(没催就没给).
|
|
||||||
|
|
||||||
真心想学习的人, 我不会拒之门外 (之前的心态)
|
|
||||||
|
|
||||||
结果我发现这人是真不学啊, 后面框架代码发到网盘后, 马上就被他泄露出去了.
|
|
||||||
|
|
||||||
借用小刚的一句歌词来表达当时的心情, “怎么会温柔体贴 换来绝望的体验 无语也无言”
|
|
||||||
|
|
||||||
但毕竟课程代码发到网盘里, 泄露只是迟早的事, 是没法控制的. (我这样安慰自己)
|
|
||||||
|
|
||||||
- **补充**:
|
|
||||||
name: 王某某
|
|
||||||
|
|
||||||
网名: 一招半式、走江湖
|
|
||||||
|
|
||||||
这个人一开始拿着px3代码(没”红“之前)问我要不要, 美名其曰”交个朋友“, 我没要, 就没怎么跟这个人打交道了
|
|
||||||
|
|
||||||
|
|
||||||
### 事件2
|
## my_api
|
||||||
|
|
||||||
前面说到开源的框架是基于上一版自己写的框架重构的. 这个框架我是放在github的私人仓库里.
|
### 介绍
|
||||||
|
|
||||||
当时身边有这么一个人, 他技术不咋好, 蛮想学技术的. (偶尔聊聊认识也快一年了, 感觉人品还行吧) 脑子一热, 我拉他成为项目的Collaborator.
|
my_api是我内置的一个对象, 存放了一些非常实用的api.
|
||||||
|
|
||||||
我让他先看看代码, 晚些时候又给他开了个会议, 简单讲了框架的设计思路、原理啥的, 然后让他有不懂的在问... 他确实也在试着写, 效果不是很好就是了
|
在vm沙箱里, 它还会存放window属性的get、set函数, 例如window_get_document
|
||||||
|
|
||||||
|
此外还会存放一些关于jsdom套壳的函数, 代理对象的封装函数等等(js层面实现)
|
||||||
|
|
||||||
再后来, 我发现我私人仓库的代码被“王某某”泄露了.
|
它还拥有2个重要的属性(ctr、pt), 是我在js层面给它添加的.
|
||||||
|
|
||||||
(当时真的是被这个人的手眼通天惊讶到了, 放在私人仓库的代码都能被他拿到, 歪日)
|
### API大全
|
||||||
|
|
||||||
**后面也找到了泄露的人, 他拿着框架跟“王某某”换了其他的成品.**
|
- clearMemory: 让v8引擎主动清一次内存
|
||||||
|
- defineIstrusted: 给事件对象添加Istrusted属性的get函数.
|
||||||
|
- 示例: my_api.defineIstrusted(event), 回调到cbb_wf.event_get_isTrusted函数.
|
||||||
|
- defineProperty: 重写属性描述符, 即使是configurable为false 也能强行修改然后delete掉. 暂时不支持传入get set, 只能修改成value.
|
||||||
|
mode我详细解释下, 在v8底层READ_ONLY(writable)是1, DONT_ENUM(enumerable)是2, DONT_DELETE(configurable)是4, 所以1|2|4 = 7, mode即7, 也就是所有描述符为false.
|
||||||
|
0就代表所有描述符都为true.
|
||||||
|
- 示例: my_api.defineProperty(xxx, "xxx", {value: 1, mode: 0})
|
||||||
|
- setImmutableProto: 修改对象的__proto__将会报错, window、location等
|
||||||
|
- isProxy: 判断对象是否是代理
|
||||||
|
- setUndetectable: 将一个对象的type强行设置为undefined
|
||||||
|
- getContext: 获取这个对象所在上下文的全局对象(window), 区分上下文用
|
||||||
|
- newDocument: 创建document对象
|
||||||
|
- newLocation: 创建location对象
|
||||||
|
- init: 初始化浏览器环境, 给构造函数设置原型对象, 给window定义一些属性(document, location等属性的get set函数), console置空套壳
|
||||||
|
- initWorker: 初始化worker环境
|
||||||
|
|
||||||
代码一旦流通到“王某某”手里, 那跟开源就没区别了. 他拿着这些代码, 去交换自己的人情. 利用人情再得到其他大佬手里的代码, 可以说玩的一手好“操作”.
|
### 其他
|
||||||
|
|
||||||
- **补充**:
|
- stack_intercept: 当my_api.stack_intercept 存在时, 底层会拦截堆栈走到该回调里
|
||||||
name: 陈某某
|
|
||||||
|
|
||||||
网名: 林
|
|
||||||
|
|
||||||
## 结果
|
- ctr: 存放window对象下的所有构造函数, 以便后续node进行初始化, 为这些构造函数设置原型对象,
|
||||||
|
然后定义到window里(Object.defineProperty(window, "Document", {value: my_api.ctr.Document, 描述符忽略}))
|
||||||
|
|
||||||
关于这两件事, 我也给出了和解条件: 经济赔偿. 这样我也挽回了损失, 他还可以继续他的骚“操作”
|
- pt: node底层初始化一些不拥有constructor的原型对象(window.speechSynthesis.__proto__), 并定义在my_api.pt下.
|
||||||
|
|
||||||
一番交涉下来, ”王某某“的认错态度还行, 主动承认了这些事
|
## cbb_wf
|
||||||
|
|
||||||
我提出建议, 让”王某某“和”陈某某“一起平摊经济赔偿. ”王某某“说”一人做事一人担“, 不用找”陈某某“ (他看起来很有担当的样子, 差点连我都要感动了)
|
### 介绍
|
||||||
|
|
||||||
于是我给了他3个月时间让他凑钱. 没想到初步的同意竟只是”缓兵之计“, 后续再找他的时候, 等来的就只有各种已读不回了.
|
cbb_wf会存放一些全局使用的函数, 例如Document_createElement、Node_appendChild等等函数, 这些函数是我们需要补环境的函数.
|
||||||
|
|
||||||
ps: 就这种烂人, 还有人和他一块“同流合污”
|
以及map的封装函数, 比如获取属性值, 设置属性值等等.
|
||||||
|
|
||||||
接下来, 我只好跟”陈某某“进行交涉了. 他一开始的态度还行, 也愿意进行经济赔偿.
|
### 其他
|
||||||
|
|
||||||
直到我提出让他去银行贷款分期, 就百般不愿意了. 利率我可以接受平摊, 但不可能要我每个月去收钱的. 欸, 说到底也是没想赔偿的
|
- myToString: 当cbb_wf.myToString 存在时, 底层会拦截函数toString走到该回调里.
|
||||||
|
|
||||||
再后来也不知道“王某某”给他灌了什么迷魂汤, 直接装死不回我了, 接着他就开始删好友退群.
|
## 作者有话说
|
||||||
|
|
||||||
退圈就想了事? **这tm不是欺负老实人嘛?!**
|
- 开源的只有空架子, 没有任何产品作为例子, 感兴趣的大佬可以研究看看. ps: 不要问我怎么补辣, 代码里都有例子
|
||||||
|
|
||||||
既然闹到这一步, 那就都别混咯
|
- node暂时就编译了windows版本, 其他版本未编译...
|
||||||
|
|
||||||
## 贴几个图
|
- 2024-08-17 修复了构造函数名称和原型对象名称不一致导致没挂上原型对象的bug
|
||||||
|
|
||||||

|
# 推广
|
||||||
|
|
||||||

|
这个是不不写的滑块, 反爬力度很大.
|
||||||
|
|
||||||

|
悬赏如下:
|
||||||
|
|
||||||
|
https://gldong.top/#/
|
||||||
|
|
||||||

|
python纯算法还原加密
|
||||||
|
|
||||||

|
且3并发请求坚持半小时成功率80%以上
|
||||||
|
|
||||||

|
第一个完成的人,可以得6000元
|
||||||
|
|
||||||
## 结语
|
时效:2024-3-14到2024-4-14
|
||||||
|
|
||||||
**若要人不知, 除非己莫为**
|
|
||||||
|
96
瓜.md
Normal file
96
瓜.md
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
# 前言
|
||||||
|
|
||||||
|
这里不讲框架, 介绍看食用手册.md.
|
||||||
|
|
||||||
|
# 为啥开源这个框架?
|
||||||
|
|
||||||
|
## 起因
|
||||||
|
|
||||||
|
去年的时候, 心血来潮. 我决定和不不开一个补环境框架设计的课. 内容是关于修改node源码+js框架相结合的补环境框架(主要是优化+过一些棘手的检测点)
|
||||||
|
|
||||||
|
讲课之前, 我基于上一版自己写的框架基础上, 重构优化了一遍, 才有了现在开源的这版.
|
||||||
|
|
||||||
|
## 经过
|
||||||
|
|
||||||
|
抱着试试水的态度, 我简单在群里宣传了一下.
|
||||||
|
|
||||||
|
### 事件1
|
||||||
|
|
||||||
|
接下来, 圈内“红”人 “王某某” 找到了我. 他说没钱, 买课能不能分期付款. 我说有钱了一次性给就好了, 就没催过他给钱(没催就没给).
|
||||||
|
|
||||||
|
真心想学习的人, 我不会拒之门外 (之前的心态)
|
||||||
|
|
||||||
|
结果我发现这人是真不学啊, 后面框架代码发到网盘后, 马上就被他泄露出去了.
|
||||||
|
|
||||||
|
借用小刚的一句歌词来表达当时的心情, “怎么会温柔体贴 换来绝望的体验 无语也无言”
|
||||||
|
|
||||||
|
但毕竟课程代码发到网盘里, 泄露只是迟早的事, 是没法控制的. (我这样安慰自己)
|
||||||
|
|
||||||
|
- **补充**:
|
||||||
|
name: 王某某
|
||||||
|
|
||||||
|
网名: 一招半式、走江湖
|
||||||
|
|
||||||
|
这个人一开始拿着px3代码(没”红“之前)问我要不要, 美名其曰”交个朋友“, 我没要, 就没怎么跟这个人打交道了
|
||||||
|
|
||||||
|
|
||||||
|
### 事件2
|
||||||
|
|
||||||
|
前面说到开源的框架是基于上一版自己写的框架重构的. 这个框架我是放在github的私人仓库里.
|
||||||
|
|
||||||
|
当时身边有这么一个人, 他技术不咋好, 蛮想学技术的. (偶尔聊聊认识也快一年了, 感觉人品还行吧) 脑子一热, 我拉他成为项目的Collaborator.
|
||||||
|
|
||||||
|
我让他先看看代码, 晚些时候又给他开了个会议, 简单讲了框架的设计思路、原理啥的, 然后让他有不懂的在问... 他确实也在试着写, 效果不是很好就是了
|
||||||
|
|
||||||
|
再后来, 我发现我私人仓库的代码被“王某某”泄露了.
|
||||||
|
|
||||||
|
(当时真的是被这个人的手眼通天惊讶到了, 放在私人仓库的代码都能被他拿到, 歪日)
|
||||||
|
|
||||||
|
**后面也找到了泄露的人, 他拿着框架跟“王某某”换了其他的成品.**
|
||||||
|
|
||||||
|
代码一旦流通到“王某某”手里, 那跟开源就没区别了. 他拿着这些代码, 去交换自己的人情. 利用人情再得到其他大佬手里的代码, 可以说玩的一手好“操作”.
|
||||||
|
|
||||||
|
- **补充**:
|
||||||
|
name: 陈某某
|
||||||
|
|
||||||
|
网名: 林
|
||||||
|
|
||||||
|
## 结果
|
||||||
|
|
||||||
|
关于这两件事, 我也给出了和解条件: 经济赔偿. 这样我也挽回了损失, 他还可以继续他的骚“操作”
|
||||||
|
|
||||||
|
一番交涉下来, ”王某某“的认错态度还行, 主动承认了这些事
|
||||||
|
|
||||||
|
我提出建议, 让”王某某“和”陈某某“一起平摊经济赔偿. ”王某某“说”一人做事一人担“, 不用找”陈某某“ (他看起来很有担当的样子, 差点连我都要感动了)
|
||||||
|
|
||||||
|
于是我给了他3个月时间让他凑钱. 没想到初步的同意竟只是”缓兵之计“, 后续再找他的时候, 等来的就只有各种已读不回了.
|
||||||
|
|
||||||
|
ps: 就这种烂人, 还有人和他一块“同流合污”
|
||||||
|
|
||||||
|
接下来, 我只好跟”陈某某“进行交涉了. 他一开始的态度还行, 也愿意进行经济赔偿.
|
||||||
|
|
||||||
|
直到我提出让他去银行贷款分期, 就百般不愿意了. 利率我可以接受平摊, 但不可能要我每个月去收钱的. 欸, 说到底也是没想赔偿的
|
||||||
|
|
||||||
|
再后来也不知道“王某某”给他灌了什么迷魂汤, 直接装死不回我了, 接着他就开始删好友退群.
|
||||||
|
|
||||||
|
退圈就想了事? **这tm不是欺负老实人嘛?!**
|
||||||
|
|
||||||
|
既然闹到这一步, 那就都别混咯
|
||||||
|
|
||||||
|
## 贴几个图
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 结语
|
||||||
|
|
||||||
|
**若要人不知, 除非己莫为**
|
86
食用手册.md
86
食用手册.md
@ -1,86 +0,0 @@
|
|||||||
# node食用手册
|
|
||||||
|
|
||||||
- 我修改了vm源码, 这样我们使用vm时会少一些检测点. 所以我们是用vm来补环境的. 当然也会被穿透, 也需要我们去修改源码来解决这些问题
|
|
||||||
|
|
||||||
- 框架套了jsdom, 换其他库请自行封装然后dump代码进行替换...
|
|
||||||
|
|
||||||
- [my_api](#my_api)
|
|
||||||
- [介绍](#介绍)
|
|
||||||
- [API大全](#API大全)
|
|
||||||
|
|
||||||
- [cbb_wf](#cbb_wf)
|
|
||||||
- [介绍](#介绍)
|
|
||||||
|
|
||||||
|
|
||||||
## my_api
|
|
||||||
|
|
||||||
### 介绍
|
|
||||||
|
|
||||||
my_api是我内置的一个对象, 存放了一些非常实用的api.
|
|
||||||
|
|
||||||
在vm沙箱里, 它还会存放window属性的get、set函数, 例如window_get_document
|
|
||||||
|
|
||||||
此外还会存放一些关于jsdom套壳的函数, 代理对象的封装函数等等(js层面实现)
|
|
||||||
|
|
||||||
它还拥有2个重要的属性(ctr、pt), 是我在js层面给它添加的.
|
|
||||||
|
|
||||||
### API大全
|
|
||||||
|
|
||||||
- clearMemory: 让v8引擎主动清一次内存
|
|
||||||
- defineIstrusted: 给事件对象添加Istrusted属性的get函数.
|
|
||||||
- 示例: my_api.defineIstrusted(event), 回调到cbb_wf.event_get_isTrusted函数.
|
|
||||||
- defineProperty: 重写属性描述符, 即使是configurable为false 也能强行修改然后delete掉. 暂时不支持传入get set, 只能修改成value.
|
|
||||||
mode我详细解释下, 在v8底层READ_ONLY(writable)是1, DONT_ENUM(enumerable)是2, DONT_DELETE(configurable)是4, 所以1|2|4 = 7, mode即7, 也就是所有描述符为false.
|
|
||||||
0就代表所有描述符都为true.
|
|
||||||
- 示例: my_api.defineProperty(xxx, "xxx", {value: 1, mode: 0})
|
|
||||||
- setImmutableProto: 修改对象的__proto__将会报错, window、location等
|
|
||||||
- isProxy: 判断对象是否是代理
|
|
||||||
- setUndetectable: 将一个对象的type强行设置为undefined
|
|
||||||
- getContext: 获取这个对象所在上下文的全局对象(window), 区分上下文用
|
|
||||||
- newDocument: 创建document对象
|
|
||||||
- newLocation: 创建location对象
|
|
||||||
- init: 初始化浏览器环境, 给构造函数设置原型对象, 给window定义一些属性(document, location等属性的get set函数), console置空套壳
|
|
||||||
- initWorker: 初始化worker环境
|
|
||||||
|
|
||||||
### 其他
|
|
||||||
|
|
||||||
- stack_intercept: 当my_api.stack_intercept 存在时, 底层会拦截堆栈走到该回调里
|
|
||||||
|
|
||||||
- ctr: 存放window对象下的所有构造函数, 以便后续node进行初始化, 为这些构造函数设置原型对象,
|
|
||||||
然后定义到window里(Object.defineProperty(window, "Document", {value: my_api.ctr.Document, 描述符忽略}))
|
|
||||||
|
|
||||||
- pt: node底层初始化一些不拥有constructor的原型对象(window.speechSynthesis.__proto__), 并定义在my_api.pt下.
|
|
||||||
|
|
||||||
## cbb_wf
|
|
||||||
|
|
||||||
### 介绍
|
|
||||||
|
|
||||||
cbb_wf会存放一些全局使用的函数, 例如Document_createElement、Node_appendChild等等函数, 这些函数是我们需要补环境的函数.
|
|
||||||
|
|
||||||
以及map的封装函数, 比如获取属性值, 设置属性值等等.
|
|
||||||
|
|
||||||
### 其他
|
|
||||||
|
|
||||||
- myToString: 当cbb_wf.myToString 存在时, 底层会拦截函数toString走到该回调里.
|
|
||||||
|
|
||||||
## 作者有话说
|
|
||||||
|
|
||||||
- 开源的只有空架子, 没有任何产品作为例子, 感兴趣的大佬可以研究看看. ps: 不要问我怎么补辣, 代码里都有例子
|
|
||||||
|
|
||||||
- node暂时就编译了windows版本, 其他版本未编译...
|
|
||||||
|
|
||||||
# 推广
|
|
||||||
|
|
||||||
这个是不不写的滑块, 反爬力度很大.
|
|
||||||
|
|
||||||
悬赏如下:
|
|
||||||
|
|
||||||
https://gldong.top/#/
|
|
||||||
|
|
||||||
python纯算法还原加密
|
|
||||||
|
|
||||||
且3并发请求坚持半小时成功率80%以上
|
|
||||||
|
|
||||||
第一个完成的人,可以得6000元
|
|
||||||
|
|
||||||
时效:2024-3-14到2024-4-14
|
|
Loading…
x
Reference in New Issue
Block a user