逆向反调试及参数加密

发布时间丨2021-10-15 17:02:21作者丨zhaomeng浏览丨128


爬虫分析常见的反爬虫的方式很多,但是比较有难度,有区分度的技术当属JS逆向分析的参数加密,或者数据加密。本篇博客记录的是博主本人在工作中实际碰到的请求POST参数进行了加密情况,使用的加密方式是base64的方式并且代码中还存在混淆代码的处理。以及反调试。这里的加密是对post请求进行的加密。详细记录本次的破解过程,毕竟时间久了就会忘的,以后也可以温故而知新。

逆向网站毕得医药

1.经过分析发现需要获取的库存信息是通过ajax的方式获取到的,可以在控制台查看到接口,亦可以通过fiddler抓包获取到。控制台查看加密参数如下:

params: eyJ0aW1lc3RhbXAiOjE2MzQyOTA5MTg5MjAsImJkIjoiQkQwMDc5NTE4NyIsIl8iOiJOVGhtWTJNd1pHTmhOMk13WkRBME5qYzRNVGxoTldKbE5ESTFPR1kxT0RBPSIsIl9fIjpbInRpbWVzdGFtcCIsImJkIl19
_xsrf: 2|e0eaf134|51b8b2f345dd2989e90d16c3d50dcf8a|1629690612

2。分析发现加密参数是params,在控制台搜索params资源的信息。在众多的js文件中分析出加密代码在如下的红框中。

3.获取到js源代码就可以进一步分析加密的方式及加密的参数,加密js代码如下图所示:

这里发现参数还是比较多的,并且还需要获取额外的getsign()函数的返回值作为参数。接着断点调试的方式查看每一个参数的及函数返回的值。

4.想要获取最终的结果必须先获取到getsign()的返回值作为参数。进入getsign()函数的js源代码。如下:

发现代码不同于一般的js代码,判断应该是经过混淆处理的,控制台调试a_list以及b_list结果如下:

拿到代码到nodejs下发现运行有问题,经过对代码的分析,发现里面有反调试的定时代码,只要把如下代码去掉就可以了。删除代码如下:

6.获取到getsign()函数的返回值之后就可以当作参数获取base64加密后的参数了,下面就是进入 base64encode(JSON.stringify(post_obj));函数调试的源代码,发现就是一个base64加密方法,需要把这一段的方法函数拿到。

\

7.将如上的函数getsign()和base64加密的函数拿到nodejs环境下运行,部分代码如下:

运行上面的代码结果如下:

nodejs代码比较多就不展示了,需要的朋友可以联系我!

文章原创,未经允许严禁转载!

推荐文章:JS逆向破解详情信息加密