某芯片网站js反混淆分析与ast一键还原
@(某芯片网站js反混淆分析与ast一键还原)样品网址:aHR0cHM6Ly93d3cudGkuY29t
打开f12后打开网站,在主页源代码拉到最下面
![在这里插入图片描述](https://img-blog.csdnimg.cn/98279e2633a749b0b4ca8280e1fe235c.png#pic_center)
有一个文件路径都是随机英文的js文件,这次需要反混淆的就是这个js文件,先下载文件到本地
![在这里插入图片描述](https://img-blog.csdnimg.cn/4882c9c6b97c4b79be0c142e90631b32.png?)
格式化后发现代码非常混乱,难以阅读
![在这里插入图片描述](https://img-blog.csdnimg.cn/239864c881ab469d946d23eb38d171a9.png?)
![在这里插入图片描述](https://img-blog.csdnimg.cn/5560dbc3220c4afa92172ac3216f7220.png#pic_center)
函数开始的时候发现是先调用了sX函数,手动调试后发现,这个是定义的0-9的10个数字,这个函数可以先进行还原
![在这里插入图片描述](https://img-blog.csdnimg.cn/94482da3aa23406a9b5c330196306b2e.png?)
还原出数值后,就可以对作用域内的这些数字的变量进行回填
![在这里插入图片描述](https://img-blog.csdnimg.cn/58b38ee44fbf4c109e4d3c11245c8299.png?)
接着调用的就是gX函数,和上面的逻辑一模一样,先计算出二元运算的结果,然后再进行回填
![在这里插入图片描述](https://img-blog.csdnimg.cn/10a33b0157e646d9ace2f4adf72fb0ae.png?)
接下来还是需要手动慢慢调试走一下流程,看看什么地方可以还原了,比较核心的就是字符串的还原,还是和ob混淆类似的思想,需要想办法在环境里面获取到解密函数,然后调用解密
![在这里插入图片描述](https://img-blog.csdnimg.cn/f7b8d7f5598b44608591b4c3dd421f95.png?)
字符串还原后,已经算是还原的七七八八了,还原后会发现有很多废代码,剩下的就是去除一些控制流和删除废代码
![在这里插入图片描述](https://img-blog.csdnimg.cn/897b604e541f4ea7b81d0e390e76573e.png?)
最后把废代码都删除后的结构大概是这样
![在这里插入图片描述](https://img-blog.csdnimg.cn/3d51c7ff46d44dd5bf81facd81dda97e.png?)
函数内部的一些逻辑比一开始容易理解了不少。我是用以往一周的js进行反混淆测试,都可以达到一键解混淆的效果。接下在尝试一下在网页中替换js
![在这里插入图片描述](https://img-blog.csdnimg.cn/d155f359d9284f83870602bf927706b3.png?)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2c680402bf05419e971f7b3c7d265530.png?)
![在这里插入图片描述](https://img-blog.csdnimg.cn/34c9e5633f524f75a57d5bb097b49312.png?)
替换js后,请求体和响应体都是正常的,说明反混淆正确,反混淆工作完成。
接下来就是加密算法的分析,预计算法比较复杂,需要耐心一步一步跟进,希望有生之年可以分析出来吧!!! lightkira 发表于 2022-3-29 17:35
渔歌,小弟想问一下,控制流平坦化一般是怎么做的?怎么才能快速删除废代码?
并没有快速一说,都是先通过手动调试,查找规律与特征,最后才能写代码还原 china-ray 发表于 2022-2-22 08:36
不懂问一下,为什么“样品网址:aHR0cHM6Ly93d3cudGkuY29t”是一串符号,加密的?如何解密?
知道的就知道了,不知道的肯定也看不懂这篇文章了 渔歌牛逼,学到了!! 厉害,大佬牛逼 大佬牛逼的一笔 正好有这方面的需求,谢谢分析 膜拜,大佬厉害 不懂问一下,为什么“样品网址:aHR0cHM6Ly93d3cudGkuY29t”是一串符号,加密的?如何解密? china-ray 发表于 2022-2-22 08:36
不懂问一下,为什么“样品网址:aHR0cHM6Ly93d3cudGkuY29t”是一串符号,加密的?如何解密?
这么简单的加密,都理解不了,那也是没办法了!!! 谢谢分享