Giter Site home page Giter Site logo

macholibre's Introduction

macholibre

Description

macholibre is a Mach-O and Universal binary parser. It extracts information such as architectures, load commands, dynamic libraries, symbols, function imports, and tons more. Then it packs all of that information into JSON for ease of analysis and integration.

Dependencies

I tried to make this tool with as little external dependencies as possible, and I think I did pretty well on that front. The only module I import is for parsing CMS signatures. I've configured the setup.py to automatically install it with the module, but you can also install it seperately with pip or manually from github.

  • Python 2.7
    • ctypescrypto
      • ctypescrypto depends on openssl under the hood, on linux it should be installed by default but on other OS's you might have to do this yourself. Anyways, make sure the version you install has CMS capabilities.

How To

Installation

I recommend using pip to install macholibre.

pip install git+https://github.com/aaronst/macholibre.git

OS X USERS: IMPORTANT NOTE

pip will install an old version of the ctypescrypto dependency that crashes on OS X. In order to fix this you'll need to install the current version from github.

pip uninstall ctypescrypto
pip install git+https://github.com/vbwagner/ctypescrypto.git

Usage

As a Module

from macholibre import macholibre

# mach-o file path
path = '/home/aaron/my_macho'

# return json
json_data = macholibre.parse(path)

# write json to file
out_file = open('/home/aaron/macholibre_output.json', 'w')
macholibre.parse(path, f=out_file)

As a Script

python macholibre.py (-r <directory|glob> | <file>) [options]
Options
  • -h: Help
  • -r: Parse directory of glob
  • -o: Specify output file
Note

For single files, make sure you put the filename first, before any options.
Also, globs need to be in quotes and paths need to be absolute.

Examples
Single File
python macholibre.py otool -o otool.json
Glob
python macholibre.py -r "machos/*" -o machos.json

Output Format

macholibre formats all of its output into a JSON blob. Check out app_store.json as an example using the App Store app.

macholibre's People

Contributors

aaronst avatar

Watchers

 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.