5

我是 Rhino 解析器的新手。我可以在 javascript 代码中使用这个 rhino 解析器来提取任何 html 文件中 javascript 代码的抽象语法树吗?如果是这样,我应该开始这个。这是为了分析代码的 AST 以计算 javascript 中使用的关键字和单词之间的比率,识别常见的解密方案,并计算某些类函数调用的出现次数,例如 fromCharCode() , eval() 和一些常用于解密和执行驱动下载漏洞的字符串函数。

4

1 回答 1

3

据我所知,您无法在 Rhino 中从 JavaScript 访问 AST。不过,我会看一下Esprima解析器。它是一个用 JavaScript 编写的完整的 JavaScript 解析器,它有一个用于进行代码分析的简单 API。

这是一个计算关键字与标识符比率的简单示例:

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;
于 2012-05-29T15:27:59.413 回答