本文主要是介绍混淆目的与jsvmp简述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
同步跟值,核心找来源,在断点处看到了要跟的值,向上看.上面也没有定义.是arguments传进来的就一定向上找堆栈.
异步同理,容易跟丢,在凭空产生的位置下断点,然后step调试进异步,看微队列里执行.
特殊跟值技巧:
1.看到了一个含有密文的内容a,是一个构造函数A的实例化对象.通过a的构造函数找到接口.
2.数组 [1937774191, 1226093241, 388252375, 3666478592, 2842636476, 372324522, 3817729613, 2969243214]是SM3.
3.函数名为:hex_md5,直接执行,去跟正常的md5进行对比
4.代码:很有可能是加密库rc4加密的,用rc4对其进行测试
o’toString’;
d0[‘RC4’][‘decrypt’](y, d1, {});
d0[‘enc’][‘Utf8’]‘parse’;
5.axios特征,一般情况大概率找请求拦截器.
6. $.ajax 找jquery beforesend
7. (!function(){*******})(“xxxxxxxxxxxxxx”) 可能是jsvmp a = n() b = n() c= n() 是webpack
8.大数组+数组移位+解密函数 ob或者是类ob的混淆.
混淆的基础与目的:
增加代码的阅读难度和调试难度,增加对抗的强度.
主要方法,把一段代码变得难以理解,用肉眼难以看出.
1.变量名与变量不可视
abcd 混淆 eval(String.fromCharCode(‘xxx’)+ ‘=200’
2.控制流平坦化,调试难度和观看难度会加大.
下列二者是等价的
a = 10;
b = 50;
c = 100;
d = a+b+c;
while (1) {if (_ip === 1) {b = 50;_ip++};if (_ip === 0) {a = 10;_ip++};if (_ip === 3) {d = a + b + c;break;};if (_ip === 2) {c = 100;_ip++};
}
3.花指令,通常指的是增加一些无意义的低耗能运算在逻辑中,增加调试复杂度
a = 10;
b = 50;
e = 212651
c = b * 2 - b;
f = 654165
d = a+b+c+e-f-11;
delete e
delete f
4.死代码,
指不运行的代码,p函数什么用也没有,但是打断点的时候可能会打到无意义的代码
a = 10;
b = 50;
p = function(){
a = 10;
b = 50;
c = 100;
d = a+b+c;
}
c = 100;
d = a+b+c;cdelete d
5.三目表达式干扰
6.代码压缩成一行+格式化检测(toString)
jsvmp,上述方法上下文的顺序没有被干扰 js代码虚拟保护方案.
常见的jsvmp实现方法:自己写了一段代码解释器,用来解释自己的代码,这个自己的代码,可以是密文,也可以是所谓的明文.
执行栈, 寄存器 , 全局变量管.
主要是用自己的一套逻辑来设置.
这篇关于混淆目的与jsvmp简述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!