赞
踩
最近一直在做关于图神经网络试验的复现,但是开源的代码真的是少之又少,说起我和joern的爱恨离愁还真是有很长时间了
最近开始对于图神经网络开始初步进行研究,结合之前所做的漏洞检测相关方向,结合趋势决定做使用图神经网络应用漏洞检测问题,通过阅读国内外论文,总结该问题上解决的基本步骤,以及不同论文中在个步骤中采取的不同措施。
总而言之,分为以下三步
对于joern的安装,我参考了以下文章,特此感谢
[https://blog.csdn.net/jlu_wangqi/article/details/109412399](https://blog.csdn.net/jlu_wangqi/article/details/109412399)
[https://blog.csdn.net/water_likly/article/details/88415127](https://blog.csdn.net/water_likly/article/details/88415127)
[https://blog.csdn.net/u013648063/article/details/106811275](https://blog.csdn.net/u013648063/article/details/106811275)
[https://blog.csdn.net/water_likly/article/details/89378623?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4.pc_relevant_default&utm_relevant_index=](https://blog.csdn.net/water_likly/article/details/89378623?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-4.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-4.pc_relevant_default&utm_relevant_index=5)
[https://blog.csdn.net/m0_37924639/article/details/78783592](https://blog.csdn.net/m0_37924639/article/details/78783592)
[https://blog.csdn.net/God_Jn/article/details/103238013](https://blog.csdn.net/God_Jn/article/details/103238013)
**主要通过第一二文章做,最后选择第三篇中的方法**
关于joern-cli的安装我直接参考的joern官方安装文档,这我一看不有手就行,但是三个问题限制了我
problem one :网速的问题,三条语句一点问题没有,但是到了最后一条的时候开始下载文件,我看速度告诉我要好几天,那一刻我是崩溃的,真无语!!!!
answer one :当时已经到了深夜里,真是难以入睡,我准备相信我的电脑,我就一直开着让它下载,我想我这么帅一旦晚上网速暴涨呢,我果断睡了,果不其然第二天早上没有下载下来,我决定找别人帮我下列但是我下什么呢,我打开了joern-install.sh,把里边的网址拿了出来,https://github.com/ShiftLeftSecurity/joern/releases/latest/download/joern-cli.zip,找我的好朋友上github上下载下来,一看是joern-cli的压缩包,我可高兴坏了,感觉有了希望,但是后来才发现官方网站给出了所有joern-cli各版本的压缩包以及所有文件的网址
problemr two :我通过以下文章的启发开始使用joern-cli,我心想这不一解压就行了吗,然后直接按照他说的方法我运行就可以了呗。然而不这么顺利,我一在解压文件夹下运行/joern,就直接报错java有问题诶,一大堆主类然后lang什么有问题的,当时忘记截图了
https://blog.csdn.net/u013648063/article/details/112311392?spm=1001.2014.3001.5502
https://blog.csdn.net/qq_36281420/article/details/114526209
https://blog.csdn.net/u013648063/article/details/106970131
answer two :在./joern前加sudo。最终我认为是jdk版本的问题后来感觉换到11.04linux比较稳妥,可以上orcle官网注册下载
problemr three :最后在下面这篇文章的指导下,改成自己的代码如下,费劲巴拉的导出了几张图片
https://blog.csdn.net/u013648063/article/details/112311392?spm=1001.2014.3001.5502
sudo ./joern-parse / home/code/
sudo ./joern-export cpg.bin --repr pdg --out /home/joern-cli/pdg
dot -Tpng -o test1.png ./pdg/1-pdg.dot
AST
CPG
PDG
CFG
answer three :导出图的时候已经除夕当天了,过年解决了工作的问题,嘿嘿嘿
由于见识到了joern的威力,所以这个论文复现的活一致拖到了开学,最近两天再复现文章的时候遇到了种种问题
配置环境:环境要求如下,对于joern来说,直接把之前下好的joern-cli压缩包放入joern文件夹下即可,同时使用anaconda建立虚拟环境GNN,然后对于Python库可以使用pip ininstall 一切。
note:
**tip1:**除了gensim库的版本要求为3.8.1以外,其他库版本无要求,pip就行,用高版本的gensim也可以就是需要修改一些代码中的参数名比较麻烦,
**tip2:**在windows下配环境的时候遇到过安装torch_sparse和torch_geometic报错的问题,详见文章
调整代码:
problem one 详见文章
problem two 由于joern版本问题在 devign-master\src\prepare\cpg_generator
需修改输出文件夹参数,并且由于java与joern版本适配问题需添加执行sudo,故修改joern_parse函数为
def joern_parse(joern_path, input_path, output_path, file_name):
out_file = file_name + ".bin"
joern_parse_call = subprocess.run([sudo,"./" + joern_path + "joern-parse", input_path, "--out", output_path + out_file],
stdout=subprocess.PIPE, text=True, check=True)
print(str(joern_parse_call))
return out_file
此时我并未注意危险的来临,一顿操作也让代码运行了起来,没想到埋下了很大隐患
清早起来拥抱太阳,满满的正能量,我想通过自己的想法复现那篇文章,想通过生成图后的节点和边提取入手,但是让我发现了一个问题。那就是当执行python main.py -c
时虽然成功调用了joern,但是产生了一些报错,同时提示文件not process。
我发现是graph-for-funcs.sc文件产生报错
java版本不是问题的根源
graph-for-funcs.sc 和 joern-cli的适配问题是问题的根源,同时两者适配性很强
joern-cli更新极快,可能每天都在更新
该graph-for-funcs.sc 代码下,joern-cli 1.0.170比较适用,但是我们现在使用官方文档方法默认下载最新版本。
最后我上joern-cli的各版本下载网站查看joern-cli 1.0.170,同时查看devign开源代码中文件graph-for-funcs.sc更新时间
joern-cli 1.0.170
graph-for-funcs.sc更新时间
发现graph-for-funcs.sc更新时间在joern-cli 1.0.170发布后两天,作者应该是基于joern-cli 1.0.170做的graph-for-funcs.sc,故下载joern-cli 1.0.170压缩包解压放入代码的joern文件夹下运行,解决问题。并且在后续无意中我发现了一个更好玩的事情详见文章
如果大家实操过程存在问题或者有什么想和博主交流的,可以关注博主公众号
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。