欢迎光临散文网 会员登陆 & 注册

猿人学2023第三题:加密痕迹明显的vmp

2023-07-01 00:29 作者:半吊子伯爵  | 我要投稿

过一关,斩六将(本文方法适用于1~6题)。但大家最好不要依赖于这种讨巧的方法,否则会失去“体会不同混淆方式”的机会。

一、困境

        这道题的代码经过混淆后,调试起来非常困难,就像加了很多无效的花指令。很多事件都会走同一段代码,其中的变量在不同事件回调中担任不同的角色,所以,即便定位到发起请求的地方,也很难顺藤摸瓜找到前后的逻辑代码。

        不仅不容易找出token的生成方式,同时,接口响应后的回调函数也很难找到。

01

二、思路

        经过一番思考,感觉从混淆后的代码上面很难有所突破。所以,最终考虑:当服务器返回响应数据时,想办法将数据拦截下来进行使用。

        具体的操作:

        1)首先修改 XMLHttpRequest 原型链上的 open 方法,当方法被调用时,在open中可以通过 this 获取到当前的 XMLHttpRequest 对象;

        2)在 XMLHttpRequest 对象上绑定 onreadystatechange 事件,我们知道,在一个请求中,readyState 有五个状态值,即0、1、2、3、4,当 readyState 值为4时,代表已经拿到全部的响应数据。所以,我们在 onreadystatechange 的回调函数中进行判断,当事件对象中的 readyState 值为4,我们就将 responseText 属性中的数据梳理出来,以便后面求和。

02

三、破局

        按照上述思路完成的代码如下:

        值得一提的是,这里有个小坑,因为页码应该会被用来和时间戳做拼接,然后参与计算token值,所以这里的页码(即call函数的传参)必须是字符串,否则,会导致token计算错误。

03


猿人学2023第三题:加密痕迹明显的vmp的评论 (共 条)

分享到微博请遵守国家法律