Git Product home page Git Product logo

freedom's Introduction

fREedom is a primitive attempt to provide an IDA Pro independent means of extracting disassembly information from executables for use with binnavi (https://github.com/google/binnavi).

WARNING: This software is in its infancy

Background: binnavi is a graphical "binary navigator" useful for reverse engineering software. binnavi does not contain its own disassembler, instead relying upon the capabilities of the commercial disassembler, IDA Pro. binnavi ships with an IDA plugin that extracts required information from an existing IDA database into a set of binnavi compatible, Postgres tables. The amount of work that IDA does on behalf of binnavi is not trivial. There is a reason there are no open source competitors to IDA. Eliminating binnavi's dependency on IDA is not quite as trivial as slapping some glue code on top of a disassembly framework like Capstone (http://www.capstone-engine.org/) and calling it a day. This project takes some small steps in that direction. it is thrown together, not well thought out, and it has a long way to go.

Basic use:

  • Use the provided postgres script to setup the initial postgres database.
  • Configure your postgres instance appropriately (pg_hba.conf ...)
  • python fREedom.py --database=my_binnavi --user=someone --pass=itsasecret --dbhost=127.0.0.1 --binary=foo.exe
  • Launch binnavi to browse foo.exe

What's here:

  • binnavi's postgres script to build the required Postgres database
  • Python scripts to extract from PE32, PE32+, and ELF binaries containing x86 or x86_64 code.

What's not here:

Limitations:

  • fREedom's disassembly engine is not as thorough as IDA's, lacking many of the heuristics that IDA uses to identify code.
  • There is currently no support for know data types and library function signatures. binnavi's type system is complex and not well documented. Substantial effort will be required to process development header files from many platforms in order to incorporate this information into fREedom generated disassemblies.
  • Parsers (cruse at best) are included for only PE32, PE32+, and ELF.
  • Disassembly generators are include for only x86 and x86_64.
  • My python skills are not good.

freedom's People

Contributors

cseagle avatar

Watchers

James Cloos avatar  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.