Open m2kar opened 1 year ago
您好,我想请问一下,如果想要用自己的数据进行训练的话, ../../DBs/Dataset-Vulnerability/features/selected_Dataset-Vulnerability.json这个json文件如何生成您知道吗
您好,我想请问一下,如果想要用自己的数据进行训练的话, ../../DBs/Dataset-Vulnerability/features/selected_Dataset-Vulnerability.json这个json文件如何生成您知道吗
是的,换数据要自己生成。
那您知道要如何生成这个json文件吗,我看了一下github的原项目,都没找到生成这个selected_testing_Dataset-1.json的文件
tlif3
@.***
------------------ 原始邮件 ------------------ 发件人: "m2kar/m2kar.github.io" @.>; 发送时间: 2023年6月2日(星期五) 晚上7:27 @.>; @.**@.>; 主题: Re: [m2kar/m2kar.github.io] [实验复现] How Machine Learning Is Solving the Binary Function Similarity Problem (Issue #19)
您好,我想请问一下,如果想要用自己的数据进行训练的话, ../../DBs/Dataset-Vulnerability/features/selected_Dataset-Vulnerability.json这个json文件如何生成您知道吗
是的,换数据要自己生成。
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>
就是在IDA ACFG-features这个步骤中,提到input是 a JSON file with the selected functions (-j) and the name of a folder in output (-o).,然后这个JSON file是如何生成的,我看项目里面好像没有提到,您知道这个程序在哪里吗
就是在IDA ACFG-features这个步骤中,提到input是 a JSON file with the selected functions (-j) and the name of a folder in output (-o).,然后这个JSON file是如何生成的,我看项目里面好像没有提到,您知道这个程序在哪里吗
好像这个select function的json是需要手动编写的,我也没找到怎么生成这个文件。
是这样的,我也没找到
您知道这个json文件里面的内容是如何编写得到的吗
您知道这个json文件里面的内容是如何编写得到的吗
可以参考下这个文件:
0x0 论文信息
标题: How Machine Learning Is Solving the Binary Function Similarity Problem
作者: Andrea Marcelli, Mariano Graziano, Xabier Ugarte-Pedrero, and Yanick Fratantonio, Cisco Systems, Inc.; Mohamad Mansouri and Davide Balzarotti, EURECOM
关键字: 二进制安全
来源: SEC'22
链接: https://www.usenix.org/conference/usenixsecurity22/presentation/marcelli
实验代码: https://github.com/Cisco-Talos/binary_function_similarity
0x0 复现环境
Window
Ubuntu18.04(in WSL)
IDA Pro 7.3 For Windows
capstone 3.0.5
Python 3.8.16
Python 2.7.13
0x01 数据获取
训练所需的数据作者均整理到了Google云盘,并可通过
gdrive_download.py
脚本下载。0x02 数据集处理
数据集处理的步骤包括:
0x02.1 编译
参看代码的
Binaries/Compilation scripts/README.md
部分,本文不详细介绍。0x02.2 生成IDB
配置IDA Pro
首先需要解决IDA Pro的安装问题。作者建议使用IDA Pro 7.3版本进行实验,但由于IDA Pro 7.3 for linux的资源很难找,所以本人在复现的时候使用了Windows版本的IDA Pro,代码可以完美运行。
在此之前需要设置环境变量指定IDA pro的位置。
或者也可以通过WSL调用宿主机的IDA pro
运行生成IDB
环境配置完成后,可通过运行IDA_scripts/generate_idbs.py生成IDB
其中
--db1 --db2 --dbvuln
参数可以任意组合。成功运行结果:
代码解析:
0x02.3 生成代码图数据
通过IDA Pro的扩展插件,基于IDB生成Flow图、ACFG汇编代码和ACFG特征。
安装capstone插件
本步骤需要在IDA pro的python环境中安装运行capstone 3.0.4。但由于ida pro 7.3的Linux版本不好找,因此使用在WSL中调用宿主机的IDA Pro 7.3的方式来运行,这就需要在IDA Pro 7.3的python2.7环境中安装capstone包。作者使用的是Linux环境,安装三方包更容易。
因此本人选择在window下需要额外安装python 2.7 x64,并在该环境中安装capstone。
首先尝试使用pip安装,但由于编译问题导致编译失败。(Windows下,涉及C代码的pypi扩展包编译安装是个大坑)
从项目主页找到了适用于Windows的预编译包,由于3.0.4版本未放出预编译包,因此使用了3.0.5版本。
链接:https://github.com/capstone-engine/capstone/releases/tag/3.0.5
下载其中的msi包,运行,选择python2.7的安装目录即可安装。
安装成功后在ida python中成功import capstone。
生成Flow图
在
IDA_scripts\IDA_flowchart
下执行:运行成功截图:
生成ACFG汇编代码
本步骤可以对选定的函数生成ACFG。包括函数中涉及的基本块、汇编指令、控制流图的边结构等。
运行方式: 在
IDA_Script/IDA_acfg_disam
下运行cli_acfg_disam.py
示例(poweshell):
生成ACFG特征
0x02.4 数据筛选清洗
0x02.5 生成函数对
根据实验组中的编译优化、指令集等异同,组合生成用于训练的函数对。
0x02.6
0x03 复现Asm2Vec & Doc2vec实验
Asm2vec和Doc2vec实现由两个模块构成。第一个模块以ACFG逆向数据为输入,并输出所选函数的随机路径。然后,这些随机路径作为机器学习第二部分的输入。