李恒道 发表于 2022-10-20 12:52:22

【文艺复兴】JS混淆分析实战某大学Mooc

首先打开f12发现直接无限debugger
跳转到栈顶,发现代码在html里
![图片.png](data/attachment/forum/202210/20/121221vg778omg9ojj1kb4.png)
直接把html复制粘贴到本地
然后把该加密js复制贴到外部一个js文件,改成script src引入方式
我的叫mooc_origin.js
![图片.png](data/attachment/forum/202210/20/121254nr2mlbdmkpbk2ggr.png)
在顶部打一个debugger断点
断下来之后格式化一下
跟一下解密
![图片.png](data/attachment/forum/202210/20/121336a4ze8dddvcje8j4m.png)
发现这里疑似有判断格式化的东西
![图片.png](data/attachment/forum/202210/20/121423ijn7hmhmhmeguahl.png)
如果发现格式化了就进行内存爆破
我们格式化一下试试
不出意料的死了
我们看到他是声明了一个正则然后调用test
我们直接在顶部来个test劫持试试看
该劫持不太推荐,我个人尝试写了一个小函数在下方
```
let test=RegExp.prototype.test
RegExp.prototype.test=function(...args){
    if(this.toString().indexOf(`\\w+ *['|"].+['|"];?`)!==-1){
      return true;
    }
    return test.call(this,...args)
}
```
发现没啥问题了
正常打开
那就在劫持的return true之前打个debugger
然后谁触发了看下是否符合正则就删掉谁改成true
比如
![图片.png](data/attachment/forum/202210/20/122708ma6v6jd7jddkakhj.png)
直接改成true就可以了
这种正则拦截可能会有遗漏,所以最好打个debugger每次触发追一下
没几处
内存爆破的函数删干净了
那我们就开始分析解密字符串了
留下次
# 结语
撒花~
# 函数补充
每次调用test会卡在debugger上,如果结果不等会输出,或者如果你单步卡死在
let origin_result = test.call(this, args);
证明也是内存爆破正则
```javascript
let test = RegExp.prototype.test;
RegExp.prototype.test = function (args) {
args = args + "";
debugger;
let origin_result = test.call(this, args);
args = args + "";
args = args.replaceAll(`\r\n`, "")
args =args.replaceAll(" ","")
let fuck_result = test.call(this, args);
if (fuck_result !== origin_result) {
    console.log('this',this)
    debugger;
}
return origin_result;
};
```

XXXMlin 发表于 2022-10-20 14:12:50

我看不懂但是ggnb

李恒道 发表于 2022-10-20 14:29:59

XXXMlin 发表于 2022-10-20 14:12
我看不懂但是ggnb

谢谢哥哥

ljh2001 发表于 2022-10-20 17:57:40

ggnb!!!
页: [1]
查看完整版本: 【文艺复兴】JS混淆分析实战某大学Mooc