阿里系bx_et加密分析
文章仅为学习研究,如有侵权请联系删除
调用分析
- 以阿里的滑块验证为例分析
- 调用位置很好找、全局搜索即可

- 存在
window.etSign
对象就执行window.etSign("GET" === e.type ? e.url + "?" + a : e.url)
- 否则就默认
"nosgn"
- 实际就是对
url+params
加密 - 全局搜索
window.etSign
找赋值
- 没有赋值,就可以猜测是加密脚本执行后创建的
- 先断在调用处

- 跟进到了
et_f.js
中
- 全扣补环境
JS执行分析
- 跟
bx_ua
很像,也是switch
控制流 - 但是没有
bx_ua
混淆那么严重 - 如果手补(不使用jsdom)过
bx_ua
的环境补这个将非常简单、直接拿bx_ua
的环境再随便补几下就能过 - 补的时候最好保存原型链的写法
- 返回什么类型的接口就创建什么函数对象,子对象就
call(this)
父对象 - 这样才能监控到完整的调用链
- 监控属性要健全,比如

- 一些读原型链的调用才能被监控
- 用的比较多的
getOwnPropertyDescriptor, hasOwnProperty, has
都是常用的属性判断方法 - 原型链补法加健全的监控代理补起来并不算难,但比较耗时间
- 最近分析
x5sec
我又重补bx_ua
的时候也坐了几个小时才出值,后面对比环境数组和调试分析又耗了几个小时。。。 - 贴一些比较难找的环境
String.prototype.charAt.value = 2;
这个是调试出来判断点。。。
- 这里是检测
toString

webgl
和2d
不通环境值不一样、按部就班补就行- 补的时候在浏览器创建个相同的对象跟着一步步调用看返回值


2d
补完会有个toDataURL
返回值拿浏览器值也行,随便写一个也行,只判断了是否有值
document.all
随便返回长度的对象都行
- 插件也可以随便补,模拟一下就行了

bx-et
多了个crypto
和open


- 其它也好像也没什么比较难找的环境,打好监控代理都能获取到
- 主要是细心加熬时间
出值
- 生成结果

- 有人问为什么不做
纯算
, 什么叫纯算
, 算法? - 还是
js
以外的语言算法,那为什么不使用js
做运算,是不是也符合纯算
了 - 以上面补环境为例,是不是就等于
js算法
+ 一些无关紧要的环境代码 - 不要太小看js的性能了,上面是套了一层js vm又有一些框架初始化也是毫秒级,如果是使用其它语言比如python来执行js那肯定会有一定的性能问题,光是启动引擎都是耗时大头
- 真想快就起个node http server,把加密运算单独出来,node + js算法 是不是也变相等于纯算了,速度只会更快
- 应该更关注于结果,中间只是学习的过程