Library to instrument executable formats
Project description
About
The purpose of this project is to provide a cross platform library that can parse, modify and abstract ELF, PE and MachO formats.
Main features:
Parsing: LIEF can parse ELF, PE, MachO, OAT, DEX, VDEX, ART and provides an user-friendly API to access to format internals.
Modify: LIEF enables to modify some parts of these formats
Abstract: Three formats have common features like sections, symbols, entry point… LIEF factors them.
API: LIEF can be used in C, C++ and Python
Downloads / Install
First, make sure to have an updated version of setuptools:
$ pip install setuptools --upgrade
To install the latest version (release):
$ pip install lief
To install nightly build:
$ pip install [--user] --index-url https://lief.s3-website.fr-par.scw.cloud/latest lief
Getting started
Python
import lief
# ELF
binary = lief.parse("/usr/bin/ls")
print(binary)
# PE
binary = lief.parse("C:\\Windows\\explorer.exe")
print(binary)
# Mach-O
binary = lief.parse("/usr/bin/ls")
print(binary)
C++
#include <LIEF/LIEF.hpp>
int main(int argc, char** argv) {
// ELF
try {
std::unique_ptr<LIEF::ELF::Binary> elf = LIEF::ELF::Parser::parse("/bin/ls");
std::cout << *elf << std::endl;
} catch (const LIEF::exception& err) {
std::cerr << err.what() << std::endl;
}
// PE
try {
std::unique_ptr<LIEF::PE::Binary> pe = LIEF::PE::Parser::parse("C:\\Windows\\explorer.exe");
std::cout << *pe << std::endl;
} catch (const LIEF::exception& err) {
std::cerr << err.what() << std::endl;
}
// Mach-O
try {
std::unique_ptr<LIEF::MachO::FatBinary> macho = LIEF::MachO::Parser::parse("/bin/ls");
std::cout << *macho << std::endl;
} catch (const LIEF::exception& err) {
std::cerr << err.what() << std::endl;
}
return 0;
}
C (Limited API)
#include <LIEF/LIEF.h>
int main(int argc, char** argv) {
Elf_Binary_t* elf = elf_parse("/usr/bin/ls");
Elf_Section_t** sections = elf->sections;
for (size_t i = 0; sections[i] != NULL; ++i) {
printf("%s\n", sections[i]->name);
}
elf_binary_destroy(elf);
return 0;
}
Documentation
Contact
Mail: contact at lief.re
Gitter: lief-project
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 Distributions
Built Distributions
Hashes for lief-0.13.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31825961aa778481e483dcb081a40daec3dfa78ca8b2a4acefc32040ce4886ad |
|
MD5 | 9fdb79151209a8b021aee89f0938601a |
|
BLAKE2b-256 | df231ef3f49c5db0602ca6f9f797dbe3675d8de857bd55fbf0f43658f60e0cf1 |
Hashes for lief-0.13.0-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07986f0991e1f942d4a277e4b15fe37dbc5b2a54c3baf2a58e719d9b258ce810 |
|
MD5 | 484c1e019da3c2180bcc39746ce929f6 |
|
BLAKE2b-256 | d29d5ce14d6e6b864b2a016ae8be4cb60e37a37cc7a8f5c0b43bfda2d5629df3 |
Hashes for lief-0.13.0-cp311-cp311-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cacf8097970ddd5bbb82a6ad5c02f0423767300a3457d84566643cf3c4d7a69f |
|
MD5 | 67bdde988e358bdcd695e17cbcdf49f4 |
|
BLAKE2b-256 | 55a3335985dcd537da7dbf8df1bbf7a960cad42992bf5f3e0e4c030e43c2470e |
Hashes for lief-0.13.0-cp311-cp311-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 41ad87a7233927fef40c6b7e60684b962e623ef21d28be3528c9bd943be710b7 |
|
MD5 | ee46011bc3dab07b8a2a1abacf658460 |
|
BLAKE2b-256 | 054e75165c6ad0d87608aed3c55caa9f93ece63bb77acdefa0a31deca020fcdc |
Hashes for lief-0.13.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9daf09130edf02ca47b76f0b98390aa618b3d3bbc9c0588250b738ef50f4a539 |
|
MD5 | 36f7765f777a3b064432499e4a5fb806 |
|
BLAKE2b-256 | c1f4b2eea8da8b3649224e0fb097e9ad796d9ac05a9b297f912d9a4f5d055543 |
Hashes for lief-0.13.0-cp311-cp311-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8740abb2c0fb38a5040f4559a3766b724228a97155e92aa8cc8fa01bef1cea83 |
|
MD5 | 1978b9706998ab2f62d0ecf26140f5f5 |
|
BLAKE2b-256 | 0027928875c493c45de8fce4a30c65da8e39c1e3e6e782a511dc8543ddc886fc |
Hashes for lief-0.13.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f562a07f6fc4dc7958943fe840755932ffaf10da500ab1a537004ab61f6d3de |
|
MD5 | c992208ed5f18f9f8e6a72166919ac53 |
|
BLAKE2b-256 | da5ee0ee17fb8ea291205c94e37abf984c7f6b49148b3b9c3ae6f66f8f8f443a |
Hashes for lief-0.13.0-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c74fe1684f859a041408d6fc4c6262686bfb74d64afe38f7373c173fd144ac5 |
|
MD5 | dbf745249c76b9b31a17f2e85f479f65 |
|
BLAKE2b-256 | 6c3a801915f2c67789b2212b1aacc0475eb6972eadd6f303bc8243053938c93c |
Hashes for lief-0.13.0-cp310-cp310-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c072929606f621697c9da2fabefccf8dac47a4283b8988ae9b3f6ca332352d66 |
|
MD5 | e1075d24d68755378607c91cbc7854d6 |
|
BLAKE2b-256 | 42ddb81296b74704133878509ad3381bbf27150390f68bbf02a65c5901314804 |
Hashes for lief-0.13.0-cp310-cp310-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0740eb7b2093ed82570315d614671ad69cc21a062d73e9213a263eec7c11dc3a |
|
MD5 | b1d71a58779acf0e2076aa5cab6be7b0 |
|
BLAKE2b-256 | c3aaaa247089e9e7fbebb304cce63e0bfc771c19ea2f5a3d0b2277b117e26c8c |
Hashes for lief-0.13.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c49aa1e573ddf7d9946d9779b5f4edad782976368c15094c6a815533fc1b50fd |
|
MD5 | d2c29764bedac2eb72bb64bb26516096 |
|
BLAKE2b-256 | 46b11d141d830a0d5bb0fc893668186b75901fdd6015fc01ecd9ff29b0404e39 |
Hashes for lief-0.13.0-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e573bf1e37cd580ef87243d0dc48d5c56d535b84a8c91b9fa28f9631643cdc51 |
|
MD5 | 49b6f6f13e64e2f38583ac68337f9ace |
|
BLAKE2b-256 | 09adf2b2a98caad655ee0a9948c35fb2142b9e0ca437f2f339eb5c22a0328b1d |
Hashes for lief-0.13.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70b08135413abe034e11c7c931de29be3e1902dde717c0681623da4fa18a3714 |
|
MD5 | c85fc5424bedf884c56b181e1596ddac |
|
BLAKE2b-256 | dfe04987e64e868dc4471f610268805a95ae73deed045cf0b8d2d9d197c02573 |
Hashes for lief-0.13.0-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28e15c164f49e66a6a876a12662414592f43444175d4fa9aad8d55654f4515af |
|
MD5 | 311e8a131c63f36d990b25a8cc514ca1 |
|
BLAKE2b-256 | bc76300308af64a7f59bdecd2cb9fc89cc35f7355369acf459858f8c10aabc98 |
Hashes for lief-0.13.0-cp39-cp39-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 456e162c5cf518b34763f1a3c849a4af0a16d6b603729930064679b2756e8710 |
|
MD5 | d9f560b55801407920a80111ce822599 |
|
BLAKE2b-256 | ff2f608a549ec9de0cd649d3cc2790cd1c2f44a5dfcc1cfbcb671ff77a24080c |
Hashes for lief-0.13.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f453f70c3c19f1d24008ae7d2aee4de3b2d73d095b99db78a062288c7ff6232b |
|
MD5 | 79d58c9db17038b71394580529af34b0 |
|
BLAKE2b-256 | 6e52736a49e4444ff5eed775d86d9c8a0a8180e5f265fe8e164268a635d068fa |
Hashes for lief-0.13.0-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15c3e128d8c4ef9ba0f2d890003836e874ab285c5c09139df73fa4aef8abe70d |
|
MD5 | 48c9915fae7997cfb254e20b6028f447 |
|
BLAKE2b-256 | 7f6dff1280cff2c3eaca4beb10307b3b476002a505216e455a46ffa166d02e41 |
Hashes for lief-0.13.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e15fabc5c86ebad7300c8eed1dcecb0a20e9fd4669b304192625edbb34b6e7f3 |
|
MD5 | e20831f2b4ad3d049ef1d723407f2911 |
|
BLAKE2b-256 | 0fbd2e039580dd48f32a6d6d5bafda9d508100c161c0cf10bc03c8bd0a43df18 |
Hashes for lief-0.13.0-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1b292730658941035ea997de0fd6bd65393c660fe3a2afb53d737e6c4a156e4 |
|
MD5 | d586fdd645b529eae6f0e6fdd21a20e7 |
|
BLAKE2b-256 | e6db05be52801549dfc702c865efe24692052ebe717fc90f26c08d4f72cb2d04 |
Hashes for lief-0.13.0-cp38-cp38-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 379201222ba63ac62399eabe7c97de0bbe5736f2f72c000cc224ebe6724b4bab |
|
MD5 | c7bb301e0c8e4ba464441112e61ece4c |
|
BLAKE2b-256 | ea90982a6df7dc423e2ea5e73ae304780ad21af457ac52300956ff1cb996295c |
Hashes for lief-0.13.0-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c91e389604f4689d1de712b003d0df2ff9d3f47fd71e1bd4f1b36692a34ed97d |
|
MD5 | 16ea4b1740fc2b2c8aa5e17dbf20a312 |
|
BLAKE2b-256 | 3a3c68be3cc67033dd233303e2e162904a2abdd56088577b23714ecaae92f357 |