我需要弄清楚如何仅仅在静态分析中检测混淆的JavaScript。
以下是我需要通过静态分析检测到的一段混淆JavaScript的示例。
eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\b'+e(c)+'\b','g'),k[c])}}return p}('0.1("2");',3,3,'document|write|test'.split('|'),0,{}))
我猜我可以在一定数量的字符内查看关键字符的数量,例如(
,)
和|
。如果可以,最重要的是什么字符?
答案 0 :(得分:1)
您应该计算空白百分比:空格/制表符,新闻栏,评论等。
您还可以分析函数和变量名称以检测非常奇怪的名称,例如。 lrn2fl4ncew,g0034等,绝对不是基于字典的。
第三种可能的方法是检测缺少典型的关键字,例如。 eval,regexp等。在流氓脚本中,这些关键字以各种方式隐藏,以防止轻松检测。
计算关键字符的百分比或只是简短的函数/变量名称是不够的,因为这样你就会从"压缩"中获得许多错误的假设。脚本(没有混淆)。
答案 1 :(得分:0)
只需查找 eval() 函数。如果没有 eval() 方法,则无法对混淆后的 JavaScript 进行反混淆。这是用于检测混淆代码的常用静态分析技术。