这人啊,真是个矛盾的东西,忙的时候吧总想着什么时候能退休可以去仗剑走天涯,哪怕是在家闲躺着也是舒坦极了,等真到了周末或者每天晚上下班又觉得甚是无聊,总想干点事不然心里闲的慌。
这次极验的学习项目算是整完了,《极验滑块2》中我把整个流程分析全部都写完了,我记得最后我说逆向流程搞完了,但是最后不知道什么原因就是不成功,我一直以为是我把滑块的轨迹生成没写好,一直往那个方向死磕,上周五的时候小李同学搞了一下,被他发现问题所在了,然后就,,,,成了。成功率在百分之90这样。问题出在哪里?其实整个流程包括加密参数的生成是没有问题的,轨迹生成也是没有问题的,就是图片分析出了问题,没分析准,导致得到的X轴的滑块缺口比实际上大了10个单位,越准确的轨迹越不会过了滑块,真的是卧槽了。
我的滑块图片分析是20年逆向数美滑块时不知道从网上哪里拷贝了一份,后来又逆向了某乎的登录滑块都是用的那份代码做分析没问题,导致我心里默认的是这部分不会出问题,看来有些时候不能过分依赖copy代码,我打算完了自己再重新学习一下这部分代码。
OK,进入正题,关于webpack怎么逆向的。以下内容皆来自于我自己本人工作学习中的心得,可能不适用于所有情况,我只是记录一下我自己的浅薄认知而已。
一、如何判断加密代码是webpack?
1.全局搜索,能搜索到加密的那个js文件说明加密就是这个
2.有些是js代码的最开头就有webpack这个单词
二、为什么非要找webpack
其实是不是webpack并不重要,只是我遇到的webpack比较多,所以才这么些,如果不是其实接下来的思路也能套用。
三、分析代码
F12在network中找到目标请求,如果没有加密那就是最爽了。
如果有,
1.在启动器那一列进入调用栈的最后一步,打断点。(或者XHR/断点提取,用URL断住发送请求到最后一步)
2.然后再次请求,观察加密参数是否已生成,在最后一步大概率都是已经生成了。
3.然后在右边到调用栈中跟着网上走,每走一步观察我们所需要的加密参数是否生成
4.找到那个加密参数这一步还未生成,但是下一步就已经存在了的地方。哪这附近肯定就有加密入口
5.找到加密入口,然后逐步分析加密是怎么生成的。自己尝试着分析一遍,能用python还原一遍是最好的选择。
6.如果python还原不了或者总有些隐秘的地方一深入跟着跟着丢了,那就放弃用python还原,直接调用加密的js函数。因为你的技术值不值钱取决于技术的价值,而生产效率也是价值的考量之一。再着python请求+调用javascript加密函数本身上速度比python还原慢不了多少。
这里,关于怎么调用,其实也是有技巧的。我最初搞javascript逆向的时候找到了加密入口,硬扣函数,哪里缺了再接着扣缺了点部分硬补。其实这样大可不必,先观察js文件是不是自执行文件。如果是自执行就爽了,找到加密点,然后把加密对象直接定义到window。如果无法直接定义到window那就重新一一个函数,剔除掉原先函数中的干扰因素,然后再最底下直接调用,爽的要死。
7.第六步中还有个缺陷,就是有些情况例如抖音的_signature参数这种,需要补充大量的环境代码,且还补了也不一定能补全能用的,最后的办法就是启动selenium自动化,然后在浏览器中执行javascript代码,这样也能得到做到一样的效果。
今天就先这到这里吧,有些地方想不起来了。另外,通过这个项目,我发现有两个方面我需要充一下电。一个是机器学习方面,例如以后要自己写图片识别缺口的这种。还原就是AST的还原,不过极验这个还是挺简单的还能凑合着看,下次要是遇到更恶心的就有点难受了。