当前位置:首页 > 行业热点 >  > 正文
快看:猿人学2023第二题:加强ob壳混淆
来源:哔哩哔哩  时间:2023-06-29 23:06:16
字号:

题目地址:aHR0cHM6Ly9tYXRjaDIwMjMueXVhbnJlbnh1ZS5jbi90b3BpYy8y


(资料图)

本题的核心代码是经过OB混淆的,可读性很差。不过网站本身也提供了反混淆的工具,所以这道题其实技术难度并不大。

一、OB反混淆

1)通过调试分析,可以很容易知道:该题目的核心代码位于 corejs/ 中,文件中的代码都是经过混淆的;

2)将经过混淆的代码复制到反混淆工具中进行解析。

这一步并不轻松,因为解析过程相当漫长,如果使用猿人学的在线反混淆工具,那么网页会进入假死状态,中途还可能发生网页崩溃。这里我使用的是自己写的离线工具,原理是参考上述的在线反混淆工具,所以效果应该是一样的。

但是意外不期而至,经过20分钟左右,代码在执行 decodeObject 的时候报错了。

一番搜索无果,也没其他办法,所以就调整了下解析流程,暂且将 decodeObject 这一步跳过,继续后面的解析。

顺利完成后面的步骤后,代码缩小了些,但可读性还是很差,于是我将 decodeObject 步骤恢复,并对刚才解析后的代码进行反混淆。

第二次整个流程没再报错。之后,我又将解析后的代码反复解析了两次。

在上述操作中,前两次时间消耗都在半个小时以上,后面越来越快,直到最后代码从30000多行缩减到8000多行,当再次对结果进行反混淆时,基本是秒完的。

二、调试分析

1)用Fiddler对网页中的JS文件进行拦截,替换为我们反混淆后的代码;

2)通过简单调试,可以很容易定位到接口返回成功后的回调函数,在右侧面板中,可以看到接口返回的数据;

3)找到回调函数以后,我们即可着手将回调函数中的内容修改掉,将返回的数据存储到全局变量中,并在5页数据都收集全了以后,求和并输出(至于接口传参,包含page和token,但token具体怎么生成我们不用管,都包含在反混淆后的代码中了)。

三、验证代码

将修改后的代码放在浏览器控制台执行,即可得到最终结果。

标签: