一、抓包找数据
如上图,我们需要的数据在第一个externalService接口,
其butelSign值为加密生成,
且butelSign无法在js中直接搜索到,可以得知其做了混淆或者是非铭文传输,但目测其可能是个md5加密。
二、寻找butelSign值生成的方法
首先查看调用栈,如下图,看起来较为简单,
猜测1:requestsExtApi
我们首先可以看到有个名为requestsExtApi的调用栈,可以在此下一个断点
猜测2:getMenuContentList
我们还可以有个名为getMenuContentList的调用栈,点进来发现它有个data,这里可以下一个断点。
注意:这个函数虽然名为requestExtApi,但我们要以调用栈停留的地方为主。
调试(耐心分析)
经过以上分析我们已经下了两个断点,现在可以进行刷新调试了。
发现断点直接断在了requestsExtApi断点的位置,
注意不要着急放断点,滑轮向上看看,butelSign已经生成
再向上看,如下图,参数生成的地方就这两个了,区别就是它有没有走第二个箭头的地方,打断点刷新调试。
可以看到断点停留在了这里,url值就是我们需要的接口值,当我们查验值的时候发现执行了这个函数后,data被添加了butelSign值,这里就是butelSign生成入口了
进入加密函数后,我们发现是个混淆,打上断点,慢慢调试
最终它进入了这个getSign方法
进入getSign方法,打断点,我们发现他先是定义了一堆函数,最后有三个return的地方,这三个地方都可以打断点。
经过调试,它走了最后一个return方法,最后我们只需要看getSign函数中每一步做了什么生成了参数中的未知值
三、加密逻辑分析
比较简单我直接复现了
仅供学习交流