关注微信公众号:爬虫K哥,继续分享爬虫进阶、JS/Android逆向工程等技术干货!声明本文所有内容仅供学习交流。抓拍内容、敏感网址、数据接口均已脱敏处理,严禁用于商业或非法用途。否则,由此产生的一切后果与作者无关。侵权请联系我立即删除!反向目标target:X-ball投资人社区cookie参数acw_sc__v2加密分析主页:aHR0cHM6Ly94dWVxaXUuY29tL3RvZGF5反向参数:Cookie:acw_tc=27608267164066250867189...,热帖是Ajax加载的,很容易找到数据接口。该接口没有其他加密参数,主要是cookie中有一些值,没有cookie是访问不到的。其中,cookie中还有一个acw_sc__v2的值,是JS生成的,其他值都是第一次访问首页获取的,抓包如下:加密搜索我们把cookie清空,打开F12开发者工具,刷新页面,发现会进入反调试,出现无限调试器。顺着调用栈往上走,可以看到在这个方法里面,有一大串混淆代码,拼接起来其实就是debugger,如下图:调试器。应该注意的是,这个网站相当棘手。第一次访问首页,会直接看到混淆后的JS代码。稍后会跳转到正常的HTML页面。如果想在本地替换JS,调试器是通过了,但是以后可能就调试不出来了。有兴趣的朋友可以自己试试。这里K哥直接右击Neverpausehere永远不会停在这里:我们观察这段混淆代码,直接搜索acw_sc__v2,可以看到最后有一个设置cookie的操作,其中x为的值acw_sc__v2:对于参数反转,我们往上调用栈,看看x是怎么来的?这里setTimeout会在时间到的时候执行'\x72\x65\x6c\x6f\x61\x64\x28\x61\x72\x67\x32\x29',控制台输出会发现是reload方法,传入参数为arg2,arg2的值为acw_sc__v2的值,如下图:arg1在header中定义,需要注意的是这个arg1每次刷新都会变化,所以我们需要动态获取拿着吧,我们单独分析关键代码:vararg1='6A6BE0CAF2D2305297951C9A2ADBC2E8D21D48FD';var_0x5e8b26=_0x55f3('0x3','\x6a\x53\x31\x59');var_0x23a392=arg19[_0,'\x50\x67\x35\x34')]();arg2=_0x23a392[_0x55f3('0x1b','\x7a\x35\x4f\x26')](_0x5e8b26);可以看到主要是这个_0x55f3()方法,如果直接deactivate这个方法,本地运行会直接进入死循环,你会发现_0x5e8b26每次都调用相同参数的函数,结果每次都是一样的。所以可以直接写成固定值,arg2的_0x23a392[_0x55f3('0x1b','\x7a\x35\x4f\x26')]其实是用了一个匿名函数,如下图:我们直接跟进这个匿名函数,可以看到里面还调用了很多_0x55f3()方法。我们直接在控制台输出吧,然后直接把结果拿到本地:把结果全部替换后,你会发现会依赖另外一个匿名函数,最后把这两个匿名函数全部推导出来:当然,如果你遇到调用了很多_0x55f3()方法的情况,无法一一替换,需要进一步分析函数中的逻辑,在本地调试,看看为什么会进入死循环。里面有很多if-else语句。肯定是缺少某种环境导致进入else语句,从而导致死循环。直接删除else语句,补充环境,使用if语句等都是允许的。完整代码GitHub关注K哥的爬虫,持续分享爬虫相关代码!欢迎加星!https://github.com/kgepachong/下面只是演示了部分关键代码,不能直接运行!完整代码仓库地址:https://github.com/kgepachong...JavaScript加密代码/*=====================================#@时间:2021-12-29#@作者:微信:K哥笨虫#@FileName:get_acw_sc_v2.js#@Software:PyCharm#==================================*/var_0x5e8b26='3000176000856006061501533003690027800375'vargetAcwScV2=function(arg1){String['prototype']['hexXor']=function(_0x4e08d8){var_0x5a5d3b='';对于(var_0xe89588=0x0;_0xe89588
