5.1 jd补环境
1. 基础补环境(显式)
使用代理, 对环境进行监测, 补全显示环境; (这个应该都会, 不多说)
2. 补环境要点(隐式)
方法
在代理中 加入 debugger断点, 可以知道 检测环境的控制流在哪里
然后跟栈一步步调试,找到检测的点
(加快的方法: 在控制流中 在 判断\call函数调用的地方进行断点)
- document.all(特性和原型链)
- document.all == null --> 需要打断点, 找到 运算结果赋值或比较函数, 手动添加判断
- typeof document.all == undefined --> jd中并没有 找到检测的地方
- document.all.proto == HTMLAllCollection.prototype
- document
body和head中子标签的个数(不同jd网站不同, 同一网站个数也可能变化)
- navigator.plugins 是否存在(目前只会取长度)
- 专门设置报错 ,捕获报错, 检测报错
是否含有 node:internal/ (本地node环境 报错提示中有 node:internal/)–> 需要, 打断点, 找到 运算结果赋值或比较函数, 手动添加判断

- 检测window, 会使用 toString()方法将window转换为字符串, 与在浏览器转换后的字符串进行比较
- 绕过方法:
-
- 对window的toString()方法进行重写, 拦截, 返回自定义字符串
-
- 在比较判断时, 判断是否为检测window, 若检测的是window, 则返回true
-
- 初始化window时, 使用 window = new Window()
-
其他
在跟栈调试过程中 还会发现有其他可以检测的点, 但并没有进行监测,各位师傅们可以尝试分析一下
想要代码, 微信联系
交流微信: s15835001049
1194

被折叠的 条评论
为什么被折叠?



