本文主要是介绍猿人学第十六题——webpack逆向初体验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
抓包分析,发现请求接口后跟着一个m值,一看就是加密的。
跟栈分析,能够跟到生成m的位置。
一个方法种传入了btoa和p_s两个参数,btoa可以用base64进行改写
跟进前面的方法,t[e(528)] = function(e, t) ,该方法其实最后返回的值就是btoa(p_s) ,将p_s传入btoa方法进行加密,p_s为时间戳。我们把btoa方法单独抠出来算完成了大半步。
括住btoa,可以跟到window[u(208)]这个方法内,u(208) = btoa 直接把这个大方法抠出来,改写成function jiami(e) {....}
把缺少的u也给补上,跟进u方法,可以发现u = l ,l 方法是在一个列表当中取值,将_0x34e7这个列表也给补上。
缺失window直接补上window = global,之后还会爆缺少window.md5,这个方法重新自己写了一个md5加密,直接扣下来,把缺少的n和_0x4c28列表补上,方法和上面的u相同。这里有个坑,在这个列表的下面定义了一个t=368,刚开始还不知道这是啥,然后加密出来的数值一直错误,最后单步跟到这才发现,定义了一个t值,接着又定义了一个方法,这个方法内我们可以看到push和shift两个函数,这两个函数分别为向列表添加和删除列表第一个元素,所以导致这个列表一直在变化,一定要把这个方法补上。
最后发现还是参数错误,直接搜try看看是不是做了什么小手脚,这有个n.g方法,直接扣下来补在上面就行,最后验证生成的参数,请求成功。
兄弟们请求的时候记得带上sessionid。
其实webpack还有另外一种更加简单的方法。找出加载器和每一个加密互相调用的方法,改写方法名称加上一个自执行即可,这里就不演示了,我自己最后抠出来总是会堆栈溢出
这篇关于猿人学第十六题——webpack逆向初体验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!