Skip to content

ZJU-ACES-ISE/LibDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

binary_tpl_detection

Dataset url: https://figshare.com/s/4a007e78f29243531b8c

Build Feature Extractor:

环境:

  • Java: Java 11.
  • IntelliJ Idea. (We have found that the extractor artifact works well only under IntelliJ Idea to build the artifact. Tested successful under Windows IntelliJ Idea 2021.2)
  1. 需要Ghidra: 9.1.2版本(/data/share/LibDB_data/目录下有ghidra.jar). 首先将ghidra.jar文件放在 /featureExtractor/bcat_client/lib 目录下.
  2. 用IDEA打开 featureExtractor 目录,等待索引完成,如出错,重新打开项目。
  3. File -> Project Structure -> Project SDK, 选择 Java SDK 11,若没有则选择Download JDK下载即可.
  4. 修改代码: 1)在consumer目录下选择要使用的task,取消该类的注释@Component并保存,检查其他类的@Component并加上注释. 2)使用 apt/brew 命令安装 libmagic 并记下安装目录,修改 LibmagicJnaWrapper.java 里用到的 libmagic 路径。 3)修改并检查其他代码中包含的路径。
  5. File -> Project Structure -> Artifacts -> "+" -> jar -> from modules with dependencies -> Module ("bcat_client") -> Main Class ("/path/to/ClientApplication") -> JAR files from libraries (选择 copy to the output directory and link via manifest) -> Directory for META-INF/MANIFEST.MF: 选择到 bcat_cline 目录下(不要到/src/main/java)-> Apply -> OK。
  6. Build -> Build Artifacts -> build.
  7. 然后jar包就会生成在以下目录: featureExtractor\out\artifacts\bcat_client_jar, 里面包含 bcat_client.jar. 注:修改代码后build -> build artifacts -> rebuild 后再上传jar包使用即可

Run

  1. 上传 bcat_client_jar 目录至服务器/path/to/LibDB/main/torch/,在torch目录下运行以下命令,启动springboot应用程序,应用启动后将自动执行 /consumer 目录下的 Task 组件 java -jar ./processTarget/bcat_client.jar 注:运行的jar包,以调用jar所在的目录为运行时目录。

  2. 创建并启动 conda 环境,安装相关依赖。

conda create -n tpldetection python=3.8 ipykernel
bash
conda activate tpldetection
pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html
pip install -r requirements.txt
  1. 启动 docker milvus ,第一次拉取milvus镜像和启动容器见github上,之后只需使用 docker start <容器id> 启动,(docker ps 查看运行中的容器,docker ps -a 查看所有容器及其id)

Milvus v1.1.1(vector search engine) is necessary for function retrival. It requires docker 19.03 or higher ref: https://milvus.io/docs/v1.1.1/milvus_docker-cpu.md

sudo docker pull milvusdb/milvus:1.1.1-cpu-d061621-330cc6
mkdir -p /home/$USER/milvus/conf
cd /home/$USER/milvus/conf
wget https://raw.githubusercontent.com/milvus-io/milvus/v1.1.1/core/conf/demo/server_config.yaml
sudo docker run -d --name milvus \
-p 19530:19530 \
-p 19121:19121 \
-v /home/$USER/milvus/db:/var/lib/milvus/db \
-v /home/$USER/milvus/conf:/var/lib/milvus/conf \
-v /home/$USER/milvus/logs:/var/lib/milvus/logs \
-v /home/$USER/milvus/wal:/var/lib/milvus/wal \
milvusdb/milvus:1.1.1-cpu-d061621-330cc6
  1. 训练(已有模型,可跳过)

  2. 建立数据库,以及bin2func_num.pkl, funcs_fcg_dir, id2key_dir(可跳过,只需拉取milvus镜像,并复制已构建好的数据库目录即可,其他文件复制过来即可) 顺序运行:

core_fedora_embeddings.py 
build_milvus_database.py
  1. 检测目标 顺序运行:
TaskProcessTargets.java	结果储存在data目录下的detection_results/feature_json目录下
function_vector_channel.py  结果储存在torch目录下tpl_results.json
analyze_results.py		结果储存在torch目录下tpl_version_results.json

About

binary TPL detection

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published