这篇博客接上一篇的内容,总结一下怎么运行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下,不得不说,这些官网的文档,质量都太差了。)