逆向JS分析实战某违规网站3--还原混淆2

在“逆向JS分析实战某违规网站3–还原混淆1”中,已分析并成功找到目标 js 文件vod.js,并在vod.js中找到了目标代码

_0xeb9911 = _0x43f960 + '/' + _0x2ef354[0x0] + '/' + _0x2ef354[0x1] + '/' + _0x2ef354[0x2] + _0x1f08('‮55', 'Re[3') + _0x2ef354[0x3] + _0x1f08('‫56', 'aGPI') + _0x2ef354[0x4];

从这种不直观的表达式来看,明显就是进行了混淆处理,但是混淆的力度不大,算是意思意思混淆一下。而这章的目标就是还原该表达式。

注意:资源网页的网页源代码 保存在 B.html 中。

对整个js文件中,_0xeb9911涉及到的参数及这些参数的赋值,其实就如下图所示的范围

在这里插入图片描述
把这些代码拷贝进Notepad++中,我们可以看到一个关键的_0x1f08函数,这个函数的作用可以理解为一个解密函数,把传入的参数经过计算后返回对应的明文。当然这个函数也起到了一定的混淆作用,使到逆向人员不能轻松通过明文关键词来找到相关信息。

在这里插入图片描述
在同一个js文件中就能找到这个函数源码

在这里插入图片描述
去分析这个函数代码不是不行,但是很费时和精力,作为一个懒人来说,是不可能做这种事。既然网页都能使用F12了,那就直接让浏览器来运行_0x1f08函数,从而把得到的函数返回结果进行回填即可。

在此之前我们要做些准备工作,vod.js文件的全称是vod.js?v=一串随机数字,所以每次刷新网页,vod.js的全称都是不一样的,但每个vod.js的内容是一样的,而浏览器只会加载最新的vod.js,因此在旧的vod.js加断点是没办法进行调试的。

此时第一步要解决的是什么时候把最新的vod.js加载进来?
我们刷新下网页(此时Fiddler仍旧开着),然后不做其他操作,只观察

在这里插入图片描述

在这里插入图片描述
这时,可以看到vod.js其实是已经加载进来了,说明vod.js生成的时机是比执行(function anonymous(){Function(arguments[0]+"bugger")()})还要早。所以我们要找个比vod.js更早执行的 js 且是固定名称的 js文件。

按照程序都是从上到下执行的特性,符合条件的是 dplayer.min.js 和 tj_vod.js 这两个文件。

在这里插入图片描述
在这里插入图片描述
由上图可看出 tj_vod.js 是个空文件,而 dplayer.min.js 是有内容的,所以我们把参考目标设为 dplayer.min.js 。

第二步在参考js下断点,然后进行调试。
在“预览”的代码是无法下断点的,因此要在“来源”面板的代码下断。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如图所示,我选择在 dplayer.min.js 的第一行代码和最后一行代码下断,以便我们快速调试。

下好断点后,直接刷新网页,可以看到程序在 dplayer.min.js 的第一行代码断下来了,且此时(function anonymous({Function(arguments[0]+"bugger")()})还没执行,“网络”界面中 vod.js 也还没出现。

在这里插入图片描述
在这里插入图片描述
那我们继续执行脚本(F8),可以看到程序去到 dplayer.min.js 第二断点。

在这里插入图片描述

接着点击进入下一个函数调用(F11),此时就去到了dplayer.html?v=1的界面。

在这里插入图片描述

把这代码和 B.html 的网页源代码一对比,我们不难发现源代码也有相同的地方。

在这里插入图片描述
在这里插入图片描述
所以第三步对 B.html 的网页源代码进行修改。
参考dplayer.html?v=1的代码,在 B.html 的网页源代码进行修改。

在这里插入图片描述
那vod.js?v=多少呢?使用跳过下一个函数调用(F10)来继续调试程序,直到 vod.js 出现,并观察出现的vod.js叫什么名字。
在这里插入图片描述
上图明显可以看出,经过几个js文件出现后,vod.js也出现了,那我们就可以直接复制这个vod.js 文件的名称并对 B.html 的网页源代码进行再一步修改。

在这里插入图片描述
在这里插入图片描述
修改并保存 B.html 后,把在dplay.min.js中下的断点去掉,然后在
vod.js?v=0.3507995514310325formatted的第一行代码和第351行代码下断点。

在这里插入图片描述
在这里插入图片描述
接着关闭刚才打开的 js 文件,然后重新刷新网页。

在这里插入图片描述
在这里插入图片描述
可以看到程序在vod.js?v=0.3507995514310325formatted的断点处停下来了。到此调试前的准备工作已完成

下面以此代码为例进行调试。
var _0x2ff936 = _0x1f08('‮45', 'HFRO');
该代码位于第354行,因此把程序运行到第355行,然后即可查看_0x1f08函数返回给 _0x2ff936的值。

在这里插入图片描述
在这里插入图片描述

依次操作,即可得到以下结果:
在这里插入图片描述

然后稍微处理下便可得到下图结果:
在这里插入图片描述
从图中的第24行可看出_0xeb9911的表达式已经还原成我们能看懂的样子,是和抓包得到链接地址是一致的。

到此,就已成功还原_0xeb9911。

总结:
1、对于变化名称的 js 文件,要善于寻找参考 js 文件,然后对网页源代码进行修改,使变化名称的目标 js 文件变成固定名称,从而让我们方便调试目标 JS 文件。
2、这个网页的混淆仍算仁慈,还留有可视字符作为关键词进行搜索,但如果把地址全混淆,关键词便会失去作用。你又会如何入手分析?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脱壳潜行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值