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 machobotExample 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:
Metadata
Release files for machobot 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| machobot-0.1.5.tar.gz | 6.5 kB | Without provenance | Details |
Release files / machobot-0.1.5.tar.gz
| Download URL | machobot-0.1.5.tar.gz |
|---|---|
| Size | 6.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f1f1a26a7551c113b2a421d88ed935e3e1e0f4e1b24c8b96bf5ca5b1dbb505c4
|
|
BLAKE2b-256 checksum How to use checksums |
8a4419de619226c3f3962858f4b4913753c635e97d7c1b32364b31360949ca48
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for machobot 0.1.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.