美团滑块-[h5Fingerprint] 加密分析
美团滑块-[h5Fingerprint] 加密分析
文章仅为学习交流,如有侵权请联系删除
定位加密
- 搜索关键字定位
- 打上断点后触发
h5Fingerprint: (0,c.getFingerPrint)(t)
- 跟进查看
- 传入参数是请求URL
- 执行
Rohr_Opt.reload(e)
- 继续跟进
- 进到
default.js
- 这个JS进行了一层OB混淆,有兴趣的可以先解混淆再分析会清爽一点
- 全扣下来进行补环境
JS分析
- 整体检测环境点不算难但比较多,特别是后面的
behavior
环境,调用了很多环境 - 打好代理,给每个对象返回都套上代理监控,不会写代理监控函数的可以看看我前面的文章。
- 运行两个window下对象找不到、简单定义一下就行
var Rohr_Opt = {geo: false }, rohr = {};
- 然后入口函数上面定义了之后跟原调用一样就行
- 有个比较麻烦的点
- 创建了很多span标签然后填入text
- 然后append body 中计算offset
- 标签太多了,一个个设置不太现实,并且还得计算offset值
- 可以省事点直接返回结果,这里你如果正常监控,打印日子都能打印好一会。。。
- 实际测试这里的环境只会影响最后结果长度,不会影响使用,也就是说不处理这里结果会短很多、但可以正常使用。
- 长度对比
- 混淆的JS根据offsetHeight或者offsetWidth报错定位函数位置。
- 后面正常补就行,没啥特别难发现的点,依旧体力活。
- 贴一些检测点
- 取插件名
- 画图取toData
- 其它就没啥了
总结
- 难点就上面说的一个、大量创建标签填入问题然后判断offset
- 简单处理就直接函数头部返回正确结果
- 不想处理就忽略,就是结果会短一大截
- 画图部分如果没有处理混淆的话就要根据日子一步步在浏览器同步执行拿到toData,或者在浏览器断下找正确toData。
- 不过根据其它案例的经验最后的toData一般不会严格验证值,不同浏览器、不同环境、结果都不一样,一般只要有值就行。
- 想折腾的最好先ast解OB混淆,补环境的时候能省点力气。
- 最后结果验证
- 正常返回