js逆向之药智新闻加密
发布时间丨2021-12-21 11:40:34作者丨zhaomeng浏览丨24
爬虫逆向之药智网站的最新文章信息(公司需要采集新闻类的咨询信息,因此任务就给到了我,说前同事有采集过,我去看了下以前的代码,发现已经不能用了,以前是直接获取源代码的数据,但是经过分析现在已经不能在源代码里获取任何数据了。),都是经过了加密的,但并不是一些常见的加密算法,而是网站自定义的加密js函数。之前写过一篇也是详情信息加密的,这篇同样也是,但是他们的最大的区别在于难度系数不一样。上一篇的详情逆向的破解过程相对简单,获取加密参数在控制台搜索,查找到相应的js代码,逐步进行js源码的分析、添加断点、调试、解析出加密函数。本篇文章的逆向难点在于,无法通过常规的加密关键词的搜索获取到js源码。那么就基本进行不下去了吗?那肯定不是的!本篇文章将会详细的分析逆向的过程!写本篇文章之前还没有看到过如此详细的逆向过程。
网址:药智新闻
第一步:网站页面的分析,发现是通过ajax的方式获取的,本来还很开心,结果发现给我返回的一串字母,按照经验就基本确认是经过加密的数据。
第二步:按照一般的做法是不是就得复制'data'参数搜索了,但是搜索结果可能不会让人满意,因为data这个字段实在是太多了,你要是有非常多的时间可以逐一点开分析。因此第一种方式排除,第二种的方法就是使用控制台的事件监听器断点的方式,选择XHR因为我们上面分析了是通过xhr进行数据加载的,每次点击页面加载更多就会触发。
点击加载按钮就会进入下面的js文件中,这样就可以分析页面的部分参数了,我最初是下了如下的断点进行尝试的:
这边经过调试发现了经过加密的data参数就在这个js文件中,但是这边并没有我需要的对源文件的解密的过程,继续调试下去直到出现如下图:这时找到的js代码就是对原内容进行解密的地方。(起初一开始也没看出来,经过多次的反复调试,才发现的)
第三步:继续调试添加断点往下调试就会发现参数e就是我最终需要的数据,因为破解的关键就在于最后他的数据肯定是需要被解析出来的(我一开始是盲调试,直到调试到上图的部分,往下走到2911行,发现e参数就是解析后的内容,我也才真正找到了解密的js代码。)然后就接着断点调试函数decryptResponse()这个函数,断点调试再次进入如下图:分析下断点,调试,分析参数。(input就是加密的数据作为的参数)
如上代码添加调试,就可以解密出详情信息了,调试过程如下图:
最终的调试结果如下output:
第四步:到这里就基本确认了解密的js方法,js逆向完成了一大半,下面就是将解密的js代码进行二次分析修改,以便于每次都可以调用解密函数,也可以自己深入研究一下js的解密使用python还原,我这边主要就是使用nodejs去调用我自己还原出来的js代码。
这里就直接贴上我改写后的解密js代码:
第五步:运行结果如下:
修改返回结果为json格式:
全部逆向破解完成,文章原创不易,转载请标明出处!
破解如有不妥之处,请网站及时与我联系,将删除文章!