目的:恶意JS代码篇幅太长,而且if结构迭代嵌套switch…case结构,遂有了想要去动态调试的目的,大概看了下恶意代码,一眼看过去我竟然还没看到它调用什么run方法啊,exec方法之类的,而且之前也从来没有调试过JS代码,大家都说语言是相同的,但是吧,对于未知的东西,还是保留了一份畏惧,不过还好,这次之后我就会动态调试JS代码啦
----------------------------------------------------------------------分割线--------------------------------------------------------------------------------------
【10.30更新】
最近在看GandCrabV5.0.3的JS脚本,发现作者对于混淆的JS脚本还原简单说了一句,但是对于不是很懂JS调试的人来说,还是不知道如何还原JS脚本,之前那是在混淆的基础上调试的,这次就简单说一下利用sublime工具辅助,快速帮助还原JS代码。
sublime上有一个插件JSformat,首先ctrl+shift+P,输入install,接着就能看到Package Control:Install Package这一行,选择这一行安装,如下图所示:
如果安装失败,请自己手动安装
这个我就不多说了,请百度,如成功了就在输入框中搜索JSformat并点击安装,只要是类似工具就可以。
之后将混淆的JS代码拷贝过来,在右下角处选择JavaScript,部分var等就变得高亮显示了
然后按下ctrl+alt+F就可以将混淆的JS代码格式化高亮显示,再将它拷贝到以下<script>code</script>框架中,在最后关键的地方下断点就可以看到解密之后的JS代码了,我放一张前后对比的图吧,让大家感受下方法对了是多么重要,我被折磨了许久,不知道怎么还原JS代码。现在把方法教给大家了。
混淆:
还原:
----------------------------------------------------------------------10.30--以上为补充内容--------------------------------------------------------------------
1、JS的介绍
JavaScript 是脚本语言
JavaScript 是一种轻量级的编程语言。
JavaScript 是可插入 HTML 页面的编程代码。
JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。
2、我们以html网页的形式载入到浏览器中,借助chrome动态调试
<!DOCTYPE html>
<html>
<body>
<p>
Hello World
</p>
<script>
这里放JS代码
</script>
</body>
</html>
3、保存为html文件后,打开浏览器,按下F12,使用开发者工具调试,如图:
4、下好断点以后,按F5刷新页面,重新载入页面时就会停留到断点处,下断点要注意,一定要下在代码一定会执行的地方,否则你刷新N遍也不会断下来。
5、使用F10单步步过,F11单步执行,一边执行一边观察JS代码中各变量的值,查看是否有执行拼接的函数,拼接恶意的字符串。