海口建站程序,郑州做网站公司有哪些,5118关键词工具,猪价格网1.初始JSVMP
JSVMP是JavaScript Virtual Machine Protection的缩写#xff0c;是一种前端代码虚拟化保护技术。它的核心思想是在JavaScript代码保护过程中引入代码虚拟化#xff0c;将目标代码转换成自定义的字节码#xff0c;这些字节码只有特殊的解释器才能识…1.初始JSVMP
JSVMP是JavaScript Virtual Machine Protection的缩写是一种前端代码虚拟化保护技术。它的核心思想是在JavaScript代码保护过程中引入代码虚拟化将目标代码转换成自定义的字节码这些字节码只有特殊的解释器才能识别从而隐藏目标代码的关键逻辑。JSVMP的保护流程大致如下服务器端读取JavaScript代码进行词法分析、语法分析生成AST语法树然后生成私有指令最后生成对应私有解释器并将私有指令加密与私有解释器发送给浏览器。在执行时一边解释一边执行。目前JSVMP的逆向方法主要有三种RPC远程调用、补环境、日志断点还原算
2.如何用jsvmp实现下面代码
console.log(2*58);1.什么是栈
栈stack是一种类似数组的数据结构 栈的特点:
属于有序集合遵从后进先出LIFO原则最早进入栈中元素的位置叫做栈底最后进入的叫做栈顶新元素靠近栈顶旧元素靠近栈底
2.实现过程
1.先计算 2* 5 10
2.在计算 10 8 18; 3.console.log(18); //打印栈顶元素即可
3.设计指令
入栈操作 push 指令为 1 操作运算符 op * 指令为 2 操作运算符 op 指令为 3 函数调用 console.log 指令为 4
2.手动生成指令集
第一步 2 和 5 分别入栈 入栈指令为1
1 2 1 5
第二步需要用到 op *因此这里需要 指令 2
1 2 1 5 2
第三步 8入栈
1 2 1 5 2 1 8
第四步 需要用到 op 因此这里需要 指令 3
1 2 1 5 2 1 8 3
第五步 调用打印函数
1 2 1 5 2 1 8 3 4
function vmFunc(instList)
{function vm(pc,stack){stack stack || [];let left,right,top;console.log(instList[9])while(1){let inst instList[pc]; //元素已取完退出循环if(inst undefined){break;}switch(inst){case 1:stack.push(instList[pc]); //入栈pc指针 1break;case 2://操作运算符 op *right stack.pop();left stack.pop();stack.push(left * right);break;case 3://操作运算符 op right stack.pop();left stack.pop();stack.push(left right);break; case 4://函数调用 console.log top stack.pop();console.log(top);break;default:throw {};}}}vm(0);
}vmFunc([1,2,1,5,2,1,8,3,4])学习是漫长的事情,坚持一定很酷!