這篇博客接上一篇的內容,總結一下怎麼運行Joern自帶的一些示例性的script。
按照這裏的介紹:https://joern.io/docs/shell/,當我們在Joern的shell中用loadCpg("cpg.bin")這種方法加載Code Property Graph後,可以直接運行諸如:
cpg.runScript("general/pdg.sc")
這樣的命令,來加載並運行腳本,例如上面這個可以生成Program Dependency Graph。但是當我嘗試這樣運行的時候,發現會報類似這樣的錯:
java.nio.file.NoSuchFileException: Script [/tmp/sl_scripts8771297126732976873/scripts/general/pdg.sc] was not found.
這個似乎也很好理解啊,我也沒在哪看見過有pdg.sc這個文件的。
仔細看了看,發現了原因,如果按照這裏的介紹:https://joern.io/docs/installing/,從binary直接安裝,就壓根不會有scripts文件夾,需要選擇:Building from Source Code這種方式,按照網頁中的步驟安裝好以後,可以看到出現了一個scripts文件夾。
但如果再次運行上面的命令,還是報一樣的錯。試了試改成絕對路徑,例如:
cpg.runScript("/home/yu/Projects/JoernSource/joern/scripts/graph/pdg.sc")
大家注意改成自己對應的目錄。發現這樣就可以正常運行這個script了,嘗試了一下其他的script,發現都可以正常運行。(另外需要指出的一個小問題是,官網教程中的路徑基本都是錯的,例如要生成CFG,官網說要運行:cpg.runScript("general/cfgToDot.sc"),但實際上這個cfgToDot.sc是在這個目錄scripts/graph下,不得不說,這些官網的文檔,質量都太差了。)