声明:此代码仅供个人测试和学习目的使用,不得用于商业用途。使用此代码的风险由用户自行承担,作者不承担任何法律责任。通过使用此代码,即表示您接受并同意此声明。
1.入口定位:
首先抓包分析,发现请求头中带有我们需要逆向的参数
载荷和响应数据都没有什么需要注意的。
直接全局搜索试试呢?
运气很好,全局能搜索到
断住了,控制台输出看看
发现和目标一致,继续深入,找到生成值的函数
终于,找到生成值的函数了
进入函数内部看看
2.逆向分析
发现是一个webpack,我们可以通过webpack找到加载器扣核心代码再补环境
先找到核心代码的调度模块,经过发现是1514模块
怎么找到调度1514模块的调度器呢?直接全局搜索1514,被调度器包裹的就是loder
找到loder了,找到模块了,现在直接补环境就行了
webpack核心思路
首先找到调度器loder------》再找到加密函数所在的模块-----》调度器调用此模块------》调用成功后调用加密的函数------》传入加密函数的参数-----》生成逆向值
我们使用调度器调度了1514的函数然后发现D函数是生成值的函数,所以我们 尝试使用webpack的D函数去生成一个值
发现竟然能出值?不过不用想肯定是一个假值。因为我们还没开始做任何补环境的操作
如果你想测试一下算法是否是一个假值,可以将随机的数都搞成固定的。可能是时间戳?
也可能是random方法。比如:
把获取时间戳的函数置空或者返回一个固定数字,发现结果一样的再变化。再试试random
发现random返回固定数字后,生成的值是一样的了。同样的方法试试我们生成的值
明显不一样,所以是一个假值。这也是一种测试的方法,大家可以学习一下
3.补环境开始
首先挂一个proxy代理之后,发现webpackChunkheifetz非常干扰我们,我们可以加个条件把它去掉
这下只有这个--ZH--了,
补完之后,直接加个if判断把它去掉,避免干扰我们
最后window对象也算是补完了,但依然是一个假值,我们继续补别的环境
补完navigator之后值发生了变化但依然是假值
把几个能补的都补上之后,发现依然有毛病,
看看document有个toString,想想是不是检测tostring返回值了呢?,我们把document的toString 给尝试补上
讲所有对象都加上代理之后,报了getElementById的错误,我们去mdn上面搜一下,看看是函数还是什么,最后补成这样,就能过检测了
剩余的部分就直接缺啥补啥就行了。