Coder Social home page Coder Social logo

cimes-isi / deceiving-dnn-based-binary-matching Goto Github PK

View Code? Open in Web Editor NEW

This project forked from wwkenwong/deceiving-dnn-based-binary-matching

0.0 0.0 0.0 144 KB

Deceiving Deep Neural Networks-Based Binary Code Matching with Adversarial Programs

Shell 0.12% Python 84.53% TeX 15.35%

deceiving-dnn-based-binary-matching's Introduction

Artifact for the submission of Deceiving Deep Neural Networks-based Binary Code Matching with Adversarial Programs

Implementation details

Please check here

System requirement

For Uroboros and basic components:

For binaryAI:

  • IDA Pro with idapython and decompiler support installed.

For NCC's inst2vec re-training (optional):

  • GPU with atleast >8GB for inst2vec model retraining and augmentation

Installing requirements for Uroboros

sudo apt-get update
sudo apt-get -y install gcc gperf bison libtool gcc-multilib python python-dev python-pip gawk build-essential libc6-i386 lib32z1 lib32ncurses5 lib32bz2-1.0 libbz2-1.0:i386 wget git tar gcc-4.8 gcc-4.8-multilib

Installing requirements for attacking ncc

  • Use the requirements.txt from Neural Code Comprehension: A Learnable Representation of Code Semantics's repository (here) to install the python dependencies

Installing requirements for attacking binaryAI

  • Use the requirements.txt of binaryAI (here) to install the python dependencies
  • Make sure you have installed IDA Pro version > 7.1 for the support of IDA Pro microcode API
  • Obtain the access key of binaryAI from here
  • And paste it to the inside the ida_binaryai_linux.py

Evaluation steps :

  1. Create a folder called uroboro_testing
  2. Build coreutils and copy to uroboro_testing

Option

The framework will take in 2 argument

  1. <seed_program> : The name of the binary under the uroboro_testing folder
  2. <function_name> : Name of the function obtained from Objdump/IDA Pro

Running attack for ncc

python3 ./ncc_harness.py -binary_seed <seed_program> -function_name <function_name>

Running attack for asm2vec

python3 ./harness.py -binary_seed <seed_program> -function_name <function_name>

Running attack for binaryAI

python3 ./ida_harness.py -binary_seed <seed_program> -function_name <function_name>

You can see the mutated folders under ./uroboro_testing/function_container_<function_name>_<seed_program>. The presents of bypassed.txt inside the folder indicate a successful attack.

deceiving-dnn-based-binary-matching's People

Contributors

wwkenwong avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.