常见的JS混淆及处理办法

1,变量名混淆

文本增添属性的过程中有很多操作空间

原始代码:

s=['age','job']
function xx(){};

xx.prototype[s[0]]=15
xx.prototype[s[1]]='teacher'

a=new xx()

将属性名经过base64加密,并对函数名xx,,数组名s,经过混淆处理 

c03xb_=['YWdl','am9i']
function c03xb(k){
    return atob(k)
}
function _c03xb(){};
// xx.prototype.age=16
_c03xb.prototype[c03xb(c03xb_[0])]=16
_c03xb.prototype[c03xb(c03xb_[1])]='teacher'
a=new _c03xb();

处理方式,在a处打上断点,鼠标放在属性名上,可以看出原来的值 。

2.字符串混淆

字符串混淆的方法, 通常情况下是取字母的阿斯克码,例如

'a'.charCodeAt()
// 结果为97
String.fromCharCode(97)
// 结果为'a'

将变量名age的字母分别用阿斯克来代替,改为数组97,103,101 

c03xb_=[97,103,101]
function c03xb(k){
    a=[]
    k.forEach(function(value,index){
        a+=String.fromCharCode(value)
        
    })
    return a
}
function _c03xb(){};
// xx.prototype.age=16
_c03xb.prototype[c03xb(c03xb_)]=16

a=new _c03xb();

处理方法也是一样的。

3.JSFUCK混淆

使用常见的六个字符构建

取JSFUCK混淆的内容

将整体内容复制到代码段——然后控制台注入hook——然后运行代码——打印a即可。

eval = function(a){debugger;}

应对方法:Hook eval即可

4.AAencode混淆

找出最后一个小括号,括起来的内容,删除并加上.toString()

Hook一下

Function.prototype.constructor = function(a){debugger;}

然后看一下a

想要获取内容

Function(a)()

5.JJ混淆 

 方法一:复制代码,去掉最后的(),改成.toString() 然后去浏览器控制台打印

方法二:

Function.prototype.constructor = function(a){debugger;}
Function(a)()

 

6.代码逻辑混淆

控制平坦流 

 原始代码:

function example(value){
    if(value>10){
        return '大于10'
    }else if (value<5){
        return '小于5';
    }else{
        return '介于5和10之间'
    }
}
console.log(example(7))

扁平化后

function example(value) {
    let state;
    while (true) {
        switch (state) {
            case 'done':
                return state.message;
            case 'greaterThan10':
                state = { message: '大于10' };
                break;
            case 'lessThan5':
                state = { message: '小于5' };
                break;
            case 'between5And10':
                state = { message: '介于5和10之间' };
                break;
            default:
                if (value > 10) {
                    state = 'greaterThan10';
                } else if (value < 5) {
                    state = 'lessThan5';
                } else {
                    state = 'between5And10';
                }
                break;
        }
    }
}

console.log(example(7)); // 将输出: 介于5和10之间

实在不行,直接让AI帮我们处理!

7.eval混淆

执行代码,全部挤在eval()里面 

复制eval里面的自运行函数,在控制台打印

复制打印出来的值,在pycharm中进行格式化处理。

猜你喜欢

转载自blog.csdn.net/m0_57265868/article/details/140633026