【JS逆向系列】某乎x96参数3.0版本与jsvmp进阶

前言

距离上一次的某乎jsvmp也过了好一段时间,现在也从2.0的版本升级到了3.0的版本

【JS逆向系列】某乎x96参数3.0版本与jsvmp进阶插图
【JS逆向系列】某乎x96参数3.0版本与jsvmp进阶插图1
自然的,算法也就发生了一些改变。最明显最直接可见的变化就是长度边长了,并且相同的入参,输出结果并不相同。那么这篇文章就在原来2.0的基础上【JS逆向系列】某乎x96参数与jsvmp初体验,来分析一下3.0版本变难了多少,算法又要怎么还原出来。

初看js代码

至于参数如何查找这篇文章就跳过了,相关内容可以查看前一篇,这篇从【__g._encrypt】开始。两个版本的入口是相同的,都是从【__g._encrypt】进入到jsvmp内部代码,入参也都是一个md5结果的16进制字符串。

某乎的jsvmp与其他的略有不同,一般的jsvmp是堆栈式的,而某乎的这个是寄存器式的。也是也之前一样,是有vm的初始化,这次3.0的对象是【l】对象

【JS逆向系列】某乎x96参数3.0版本与jsvmp进阶插图2

结构上和之前还是很想的,不过多了不少参数,有几个关键的参数需要注意

参数 映射含义
this.c 通用寄存器
this.s pc寄存器
this.S 栈帧
this.i 数组缓存
this.Q 跳转标志位
this.G 操作码数组
this.D 字符串数组
this.w 控制流出口
this.g 异常跳转
this.a 时间检测参数
this.e 3字节操作码
this.T 控制流入口
this.U 时间检测参数
this.M 常量虚假指令

以上的仅仅是我个人的理解,不一定正确,仅供参考。

补环境方案

还是和之前一样,首先试试能不能通过补环境得出相同的结果,首先在网页上拿一组样本。
【JS逆向系列】某乎x96参数3.0版本与jsvmp进阶插图3
这里入参是【a63da42088bd8d635961ede065daeb51】结果是【RiO+y9AqW9KuaS+8vShliRMUs8LvryJRSxJinhVvmy+JvR5Xel5Uv5psmxAcilNl】,按照之前的办法,就是补环境使得到相同的结果,但是对于3.0版本就会出现问题。这里发现,相同的入参,多次执行,结果是不一样的。

【JS逆向系列】某乎x96参数3.0版本与jsvmp进阶插图4
这就不好办了,那么即使补环境出来的结果,也不知道是不是对的。一般这种情况下,就是计算涉及到的随机数或者时间。而这里就是包含的随机数,所以需要hook随机数的返回

 复制代码 隐藏代码
Math.random = function(){
    return 0.50
};

输入这段代码后再执行加密函数,此时就发现结果都是一样的了

【JS逆向系列】某乎x96参数3.0版本与jsvmp进阶插图5
那么此时就得到了一组样本,当随机数恒定返回0.5时。入参【a63da42088bd8d635961ede065daeb51】的正确结果为【t=V/NpKQqHpejG8nmTuCzIrXW+JszxwLVVyuy+8S0ak=pe1N4BRA6Qxz+LDn+Xyj】,那么接下在就真正可以开始补环境了。

首先安装依赖库

本站资源来自互联网收集,仅提供信息发布
一旦您浏览本站,即表示您已接受以下条约:
1.使用辅助可能会违反游戏协议,甚至违法,用户有权决定使用,并自行承担风险;
2.本站辅助严禁用于任何形式的商业用途,若被恶意贩卖,利益与本站无关;
3.本站为非营利性网站,但为了分担服务器等运营费用,收费均为赞助,没有任何利益收益。
死神科技 » 【JS逆向系列】某乎x96参数3.0版本与jsvmp进阶

死神科技,因为专业,所以领先。

网站首页 24小时自动发卡
在线客服
24小时在线客服
阿里云自动发卡,购卡进群售后
12:01
您好,有任何疑问请与我们联系!

选择聊天工具: