Skip to main content
https://travis-ci.org/rodionovd/machobot.svg?branch=master Code Climate

A Python toolbox for Mach-O files analysis. Heavily relies on macholib.

Installation

For usage

$ [sudo] pip install machobot

For development

$ pip install nose macholib
$ git clone https://github.com/rodionovd/machobot.git machobot
$ cd ./machobot
$ nosetests # run the test suite

Usage

  • As a command-line util:

    $ inject_dylib ./target "@rpath/mylib.dylib"
  • As a Python module:

    import machobot

    Example usage:

    import machobot.dylib as dylib
    
    dylib.insert_load_command("output.a", "@executable_path/../../libk.dylib")

Modules

dylib

insert_load_command (target_path, library_install_name)

Inserts a new LC_LOAD_DYLIB load command into the target Mach-O header.

Argument

Description

target_path

A path to the target Mach-O executable file. This file will be overwritten.

library_install_name

An install name for the library to inject. This string is used as a part of the load command.

Return value

Returns True if everything is OK. Otherwise rises an exception.

macho_dependencies_list (target_path, header_magic=None)

Generates a list of libraries the given Mach-O file depends on.

In that list a single library is represented by its “install path”: for some libraries it would be a full file path, and for others it would be a relative path (sometimes with dyld templates like @executable_path or @rpath in it).

Note: I don’t know any reason why would some architectures of a fat Mach-O depend on certain libraries while others don’t, but it’s technically possible. So that’s why you may want to specify the header_magic value for a particular header.

Argument

Description

target_path

A path to the target Mach-O executable file.

header_magic

Mach-O MAGIC value for a header you want to inspect. If this argument is not provided, the function returns a list of the first header’s dependencies.

Return value

An object with two properties: weak and strong that hold lists of weak and strong dependencies respectively.

See machobot/tests/test_dylib.py for usage examples.


Found an issue? Submit an issue! :shipit:

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

machobot-0.1.5.tar.gz (6.5 kB view details)

Uploaded Source

File details

Details for the file machobot-0.1.5.tar.gz.

File metadata

  • Download URL: machobot-0.1.5.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for machobot-0.1.5.tar.gz
Algorithm Hash digest
SHA256 f1f1a26a7551c113b2a421d88ed935e3e1e0f4e1b24c8b96bf5ca5b1dbb505c4
MD5 cbd4f2ee2e4e0b8d5dbcc71648c0ae93
BLAKE2b-256 8a4419de619226c3f3962858f4b4913753c635e97d7c1b32364b31360949ca48

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.5 This release

1 file

0.1.4

1 file

0.1.2

1 file

0.1.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page