2012-05-29 60 views
5

我是Rhino解析器的新手。我可以在JavaScript代碼中使用此犀牛分析器來提取任何html文件中的JavaScript代碼的抽象語法樹。如果是的話,我應該開始這個。這是用於分析代碼的AST,用於計算javascript中使用的關鍵字和單詞之間的比率,以識別常見的解密方案,並計算某些類的函數調用的發生,例如fromCharCode() ,eval()和一些字符串函數,這些函數通常用於解密 以及執行下載驅動漏洞利用。在javascript代碼中使用Rhino解析器來解析javascript中的字符串

+0

供參考:在[犀牛1.7R3](添加了一個AST API https://developer.mozilla.org/en-US/ docs/New_in_Rhino_1.7R3) – McDowell

回答

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; 
+0

這個解析器非常好,上面的代碼爲我工作謝謝。你能否提供這個解析器的教程,以便我可以在javscript中提取網頁的javascript代碼的AST – user1335906

+0

我還沒有做太多的工作,所以我沒有這方面的經驗。 'parse'函數雖然返回AST,所以它不應該太難。文檔位於http://esprima.org/doc/index.html,作者的博客(http://ariya.ofilabs.com/)有一些如何使用它的例子。希望那些幫助。 –