Python wrapper to manipulate binexport files (protobuf)
Project description
Python-Binexport
python-binexport
is a python module aiming to give a friendly interface to load
and manipulate binexport files.
What is binexport ?
Binexport is a protobuf
format used by Bindiff to extract IDA database and
to process them outside. It gives a very optimizated (in size) representation
of the program.
Dependencies
Python-binexport can load any .BinExport files generated from the supported disassemblers IDA, Ghidra and Binary Ninja.
However to perform the export with binexporter
or from the API ProgramBinexport.from_binary_file()
the IDA plugin must be installed as it is the only supported at the moment. For that it has to be installed first from the github page.
To use the feature python-binexport requires IDA >=7.2 (as it calls the BinExportBinary
IDC function).
[!WARNING] If you export files from python-binexport make sure the IDA Pro binexport plugin is properly installed and works when running it manually before trying to use it from the python library (it can hang if not properly installed).
[!NOTE] The possibility to export files using Ghidra, or Binary Ninja from python-binexport might be supported in the future.
Installation
pip install python-binexport
Python module usage
The main intended usage of python-binexport
is as a python module.
The main entry point is the class ProgramBinExport
which triggers the
loading of the whole file. Here is a snippet to iterate on every expression
of every instruction in the program:
from binexport import ProgramBinExport
p = ProgramBinExport("myprogram.BinExport")
for fun_addr, fun in p.items():
with fun: # Preload all the basic blocks
for bb_addr, bb in fun.items():
for inst_addr, inst in bb.instructions.items():
for operand in inst.operands:
for exp in operand.expressions:
pass # Do whatever at such deep level
Obviously ProgramBinExport
, FunctionBinExport
, InstructionBinExport
and OperandBinExport
all provides various attributes and method to get their type, and multiple other infos.
If the module
idascript
is installed you can directly generate a BinExport file using theProgram.from_binary_file
static method.
Command line usage
The executable script binexporter
provides a very basic utility
to export a BinExport file straight from the command line (without
having to launch IDA etc..). This is basically a wrapper for Program.from_binary_file
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file python_binexport-0.3.6.tar.gz
.
File metadata
- Download URL: python_binexport-0.3.6.tar.gz
- Upload date:
- Size: 20.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f430c366146b53e37e39bd9f91251ca07fff5294fbb822d2b55c6a96cfba8636 |
|
MD5 | 44f51671a930bc5a46ba1257b214c833 |
|
BLAKE2b-256 | ada2f2f239d9d622613a151adc6ff8616c4ba256f8f3a2c1b4a987bbe9996c9c |
File details
Details for the file python_binexport-0.3.6-py3-none-any.whl
.
File metadata
- Download URL: python_binexport-0.3.6-py3-none-any.whl
- Upload date:
- Size: 23.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc5570a8db4097872b2ef379bf1be83e342ca3fb001cb93df0bacd80d3317107 |
|
MD5 | fe65253f4b53725dd8f220a1baee4dc3 |
|
BLAKE2b-256 | 5c61f7746918b7ae96d1ce6ff857af07e89ecbb61d4f944854a06b566e009b2d |