JS逆向 | 某json.v5还原详解及练手

声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!

目标网站:
aHR0cHM6Ly93d3cuc29qc29uLmNvbS9qc29iZnVzY2F0b3IuaHRtbA==

 点击JS混淆加密,获取加密后的代码,并将代码格式化后,保存到本地js文件中,我这里命名为333.js
图1
 我的分析,主要将代码分成三大段。第一大段为一个大数组,然后经过紧跟的一个立即执行函数,将这段数组进行一定方式的重新排列,可以在下方添加一行,打印下这个数组,检测下,详见下图:
图2
 因此可以不用管它,能运行就行。接下来看第二大段,为一个解密函数,主要用于将一些诸如 _0x44c0(‘0x0’, ‘^Q8d’) 这种的,解密成关键字,这个解密函数类似如下:
图3
 深入分析下这个解密函数,我将它也分成三小段。第一小段先 if 判断该解密函数是否初始化 _0x44c0[‘initialized’] === undefined ,没有则为window变量构造atob函数,atob其实就是base64解码函数。

var _0x271cae = typeof window !== 'undefined' ? window: typeof process === 'object' && typeof require === 'function' && typeof global === 'object' ? global: this;

 看上面这句代码,为JS中的三元运算符,即判断 ? 前的表达式,如果为true,则这段表达式的值为 : 前面的值,否则为 : 后面的值。因为这代码是在浏览器中运行,所以window变量肯定存在,因此可以直接改写这句,并在最开头定义一下window变量

var window = {};  // 这句在最开头定义
var _0x271cae = window;

 第二小段,在构造完atob函数后,下面又定义了一个函数,该函数其实即为解密函数,并将其赋值给了大函数的"rc4"属性,且在其中调用了atob函数

_0x38bb2d = atob(_0x38bb2d);

 但因为它这是在浏览器环境,atob是window的函数,因此可以直接这样调用。但在我们本地,需要修改成如下才能使用

_0x38bb2d = window.atob(_0x38bb2d);

 第三小段,就是在调用rc4,将传入的两个参数解密,得到关键字。同时将解密后的数据,存入到大函数的data属性中,如下图所示,该解密函数至此全部分析完毕。
图4
 最后的第三大段,即为被加密的主要函数。可以看到其中大量调用了解密函数,并且定义了一些关键字如PGNHM等,因此使代码混淆。那么我们调用解密函数,使之还原,就能让代码清晰一些了,说到就做。
图5
 主要思路为:用Python读取原来代码的js文件333.js,然后正则匹配,凡是用到解密函数的地方,直接调用解密函数将其替换,最后重新写入一个新的js文件中。具体操作如下:
 先将第一、二大段修改后的代码,另外复制到一个js文件中,我这里命名为111.js。并在下方构造一个change函数,如下图
图6
然后用Python读取调用,将修改后的代码写入到222.js中。写法可以参照如下:
图7
 替换完成以后,第一、二大段一般就没用了,可以直接删除。替换后的核心代码,见下图。可以看到其中定义了一个对象,然后定义了几个关键字属性,下方又会调用该属性。
图8
 这时候读这段代码,已经没什么难度了,如果还想清晰点,可以继续替换,将那些关键字代表的属性替换就好了,如下
图9
 最后一段if代码,实际就是在判断有没有删除 encode_version = ‘sojson.v5’ 这段代码,完全没用,直接删掉就好了。这样已经全部还原完毕。
 JS逆向就是一个需要耐心的过程,中间需要不断的调试,再加上大量的练习。因此下面再给一个对应的练习网站:

 aHR0cDovL3d3dy5haHRiYS5vcmcuY24v

 简单说下该网站的思路:如果不是第一次访问,需要先清空该网站的cookie,然后重新访问。这时候它会先生成一个cookie,并运行JS,生成一段加密字段。接着携带cookie及该加密字段,访问另一个网址,获取新的cookie。最后拿着新的cookie,重新访问该网站,才能获取网页内容。

 该练手网站详细代码,已上传本人GitHub,可点击此处跳转,欢迎star!但还是希望各位能够先自己练习试一下~

 同时欢迎关注我的公众号“逆向新手”哦,逆向系列将持续更新!
公众号

扫描二维码关注公众号,回复: 8549135 查看本文章
发布了3 篇原创文章 · 获赞 3 · 访问量 41

猜你喜欢

转载自blog.csdn.net/weixin_45216614/article/details/103885314
今日推荐