All Projects → CySHell → Binja4J

CySHell / Binja4J

Licence: other
No description or website provided.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Binja4J

instrumentation
Assorted pintools
Stars: ✭ 24 (+71.43%)
Mutual labels:  binary-analysis, program-analysis
Cwe checker
cwe_checker finds vulnerable patterns in binary executables
Stars: ✭ 372 (+2557.14%)
Mutual labels:  binary-analysis, program-analysis
binary-decompilation
Extracting high level semantic information from binary code
Stars: ✭ 55 (+292.86%)
Mutual labels:  binary-analysis, program-analysis
Hyara
Yara rule making tool (IDA Pro & Binary Ninja & Cutter Plugin)
Stars: ✭ 142 (+914.29%)
Mutual labels:  binaryninja, binaryninja-plugin
Detect It Easy
Program for determining types of files for Windows, Linux and MacOS.
Stars: ✭ 2,982 (+21200%)
Mutual labels:  binary-analysis, program-analysis
Die Engine
DIE engine
Stars: ✭ 648 (+4528.57%)
Mutual labels:  binary-analysis, program-analysis
Falcon
Binary Analysis Framework in Rust
Stars: ✭ 307 (+2092.86%)
Mutual labels:  binary-analysis, program-analysis
dwarf import
This loads DWARF info from an open binary and propagates function names, arguments, and type info
Stars: ✭ 18 (+28.57%)
Mutual labels:  binaryninja, binaryninja-plugin
Triton
Triton is a Dynamic Binary Analysis (DBA) framework. It provides internal components like a Dynamic Symbolic Execution (DSE) engine, a dynamic taint engine, AST representations of the x86, x86-64, ARM32 and AArch64 Instructions Set Architecture (ISA), SMT simplification passes, an SMT solver interface and, the last but not least, Python bindings.
Stars: ✭ 1,934 (+13714.29%)
Mutual labels:  binary-analysis, program-analysis
Bap
Binary Analysis Platform
Stars: ✭ 1,385 (+9792.86%)
Mutual labels:  binary-analysis, program-analysis
Manticore
Symbolic execution tool
Stars: ✭ 2,599 (+18464.29%)
Mutual labels:  binary-analysis, program-analysis
seninja
symbolic execution plugin for binary ninja
Stars: ✭ 123 (+778.57%)
Mutual labels:  binaryninja, binaryninja-plugin
crackerjack
A collection of crackmes
Stars: ✭ 37 (+164.29%)
Mutual labels:  binary-analysis
McNinja
Compile Binary Ninja's MLIL to LLVM, for purposes of analysis, patching, and compiling it back to a binary again.
Stars: ✭ 30 (+114.29%)
Mutual labels:  binaryninja
asm2vec
An unofficial implementation of asm2vec as a standalone python package
Stars: ✭ 127 (+807.14%)
Mutual labels:  binary-analysis
binary viewer
A binary visualization tool to aid with reverse engineering and malware detection similar to Cantor.Dust
Stars: ✭ 55 (+292.86%)
Mutual labels:  binary-analysis
adversarial-code-generation
Source code for the ICLR 2021 work "Generating Adversarial Computer Programs using Optimized Obfuscations"
Stars: ✭ 16 (+14.29%)
Mutual labels:  program-analysis
angr-cli
Repo for various angr ipython features to give it more of a cli feeling
Stars: ✭ 41 (+192.86%)
Mutual labels:  binary-analysis
kar98k public
pwn & ctf tools for windows
Stars: ✭ 24 (+71.43%)
Mutual labels:  binary-analysis
sigkit
Function signature matching and signature generation plugin for Binary Ninja
Stars: ✭ 38 (+171.43%)
Mutual labels:  binary-analysis

Binja4J

This project aims to leverage both the static analysis capabilities of the Binary Ninja platform and the Graph DB capabilities of Neo4j. The combination of these powerful tools will hopefully allow for sophisticated and efficient program analysis algorithms to be developed.

Before the graph is populated, It is possible to utilize a tool that parses any c header file and stores the definition within the graph, and then defines all recognized functions within the BinaryView. Following is a demo of this capability after parsing all windows headers (windows.h): image

Please note that only MEDIUM LEVEL IL (MLIL) exporting is supported, not raw assembly.

REQUIREMENTS:

  • Neo4j database

    • Install Neo4j Desktop: https://neo4j.com/docs/operations-manual/current/installation/neo4j-desktop/index.html
    • Create a local Database:
      1. DB connection details can be edited in Configuration.py

      2. Default credentials for Bin4J are "neo4j" \ "user", default local port is "bolt://localhost:7687"

      3. install the pypy neo4j module: "pip install neo4j"

      4. Create a new DB and install the APOC plugin: image

      5. Start the DB via the Neo4j Desktop application

      6. Locate the import directory of the specific Neo4j DB you've started

        • Update the "path" variable in Configuration.py
  • xxhash : "pip install xxhash"

USAGE

  • Place this repository in your BinaryNinja plugins directory

  • Start the Neo4j DB via the Neo4j Desktop application image

  • Run the Binja4J plugin on any executable

  • Manually run the ExportNeo4j.py python script

  • Enjoy your brand new graph DB

Enriching the Graph

  • Each node and relationship in the graph has a corresponding class in the /extraction_helpers folder
  • Each of the classes has a dictionary composed inside the self.serialize() function
  • Simply add any information you want to enrich the graph with into the "node_attributes" and "relationship_attributes" sub-dictionaries
  • This information will automatically be propegated into the graph

Graph Representation

  • The basic graph representation in the graph DB uses the following Ontology: image

Demo:

image

The following is a demo of following the def\use chain of an argument to a 'memset' function:

image

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].