我对Rhino解析器还很陌生。我能否在JavaScript代码中使用此Rhino解析器来提取任何HTML文件中JavaScript代码的抽象语法树?如果可以,我该如何开始呢?这是为了分析代码的AST,计算JavaScript中关键字和单词使用比例,以识别常见的解密方案,并计算某些函数调用类别的出现次数,例如fromCharCode()、eval()和一些常用于驱动下载攻击的字符串函数。
我对Rhino解析器还很陌生。我能否在JavaScript代码中使用此Rhino解析器来提取任何HTML文件中JavaScript代码的抽象语法树?如果可以,我该如何开始呢?这是为了分析代码的AST,计算JavaScript中关键字和单词使用比例,以识别常见的解密方案,并计算某些函数调用类别的出现次数,例如fromCharCode()、eval()和一些常用于驱动下载攻击的字符串函数。
var tokens = esprima.parse(script, { tokens: true }).tokens;
var identifierCount = 0;
var keywordCount = 0;
tokens.forEach(function (token) {
if (token.type === 'Keyword') {
keywordCount++;
}
else if (token.type === 'Identifier') {
identifierCount++;
}
});
var ratio = keywordCount / identifierCount;
parse
函数会返回 AST,所以应该不会太难。文档在 http://esprima.org/doc/index.html,作者的博客(http://ariya.ofilabs.com/)上也有一些如何使用它的示例。希望这些能有所帮助。 - Matthew Crumley