JSVMP分析

JSVMP分析

1.jsvmp**:JS虚拟机**就是将js源代码首先编译为字节码,得到的这种字节码就变成只有操作码(opcode)和操作数(Operands),这是其中一个前端代码的保护技术。

一、jsvmp技术的优点

跨平台兼容性:jsvmp技术可以在不同的操作系统和硬件平台上运行,因为它是基于软件的虚拟机。
性能优化:jsvmp技术可以对JS代码进行优化,提高执行效率。
安全性:jsvmp技术提供了一种隔离JS代码的方法,可以防止恶意代码的攻击。
提供丰富的API:jsvmp技术可以提供丰富的API,使得JS代码可以访问更多的系统资源。

二、jsvmp技术的缺点

性能损失:由于jsvmp技术需要将JS代码编译成二进制指令集,并模拟执行这些指令,因此会带来一定的性能损失。
资源消耗:jsvmp技术需要消耗大量的系统资源,如内存和CPU。
调试困难:由于jsvmp技术将JS代码编译成二进制指令集,因此调试起来更加困难。

三、案例研究

下面是一个使用jsvmp技术实现JS代码加密和解密的示例代码:

// 加密函数
function encrypt(code) {
    var vm = new V8(); // 创建V8虚拟机
    vm.set('x', code); // 将要加密的代码保存到变量x中
    vm.set('y', 'x-s'); // 将要解密的密钥保存到变量y中
    vm.run('while (y--) x = String.fromCharCode(x.charCodeAt(0) ^ y); return x;'); // 执行加密算法
    return vm.get('x'); // 返回加密后的结果
}

// 解密函数
function decrypt(code) {
    var vm = new V8(); // 创建V8虚拟机
    vm.set('x', code); // 将要解密的代码保存到变量x中
    vm.set('y', 'x-s'); // 将要加密的密钥保存到变量y中
    vm.run('while (y--) x = String.fromCharCode((x.charCodeAt(0) ^ y) ^ -y); return x;'); // 执行解密算法
    return vm.get('x'); // 返回解密后的结果
}

三.猿人学新春案例

https://match.yuanrenxue.cn/match/21

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

只到找到

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

右键选中该js文件,然后点击override content

增加入下内容,获取加密函数

_eval = eval;
eval = function(str) {
    if (str.length > 1000){
        console.log(str);
        debugger;
    }
    return _eval
}

获取随机数

Math.random_ = Math.random;
randList = [];
Math.random = function() {
    let ret = Math.random_();
    randList.push(ret);
    return randList;
}

生成固定时间的数组

datalist = [];
Date.prototype.valueOf = function () {
    let ret = Date.now();
    datalist.push(ret);
    return ret;
}

将生成的数组复制到js代码中,在执行时原网站代码已经固定不变

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值