Library to instrument executable formats
Project description
About
The purpose of this project is to provide a cross platform library which 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-project.github.io/packages 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 Distribution
Built Distributions
Hashes for lief-0.12.2-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6673f0d604abcbadc7fd914246c7cbb02b207ee1660786421679cceb0f270fe |
|
MD5 | 838d0bbe57ff1820af707e2688aea963 |
|
BLAKE2b-256 | bbc666c83c7082b462e33b174564b1d5b8a5f333f44cc8f351d7e7b4820af2d8 |
Hashes for lief-0.12.2-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a69a330afbb683518ab85197683c2f7e2a1dda33973043d81b0871a024d2e9da |
|
MD5 | d482889ac96051061dcb18cde541e7f4 |
|
BLAKE2b-256 | e179f00dae29c337db3c1c7bd71e408fc65611d039a0f9b40acab50e9aeec20d |
Hashes for lief-0.12.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e97f109cf4a24ad37d8227b52cf878a58723abe7d88f0f3d5867c02d8ead49b |
|
MD5 | d8db031492f558f3fc2b811b3bf6b3c5 |
|
BLAKE2b-256 | 09b3a6c5b66eb18ffc29d24375d9aa93106ebf1b4c0909e476a36295c2a4f8d5 |
Hashes for lief-0.12.2-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cdadaab4b9ec756e1d1f0324acd6e280ae849d251e66f836da455df592deaf9e |
|
MD5 | 9af5b8f0ea19844471b4bdd3b4192f8f |
|
BLAKE2b-256 | 93d06d0d65e2de6b1a757ed3b7f16239bfac9c99d78b0b48238982918ca5960b |
Hashes for lief-0.12.2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15979ead13ecd53b3755f0a17281238c49bec945f5d3a15e603a3f472d490fe2 |
|
MD5 | ca1e631438202af7fe1d12be43e9b9ca |
|
BLAKE2b-256 | 69b28583c18d6f97d34323b0d8fb27a669d5c53a28d858f4e369b6cb16563ad9 |
Hashes for lief-0.12.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6e8332cc1ac7b59d58de069e0f7754bf98781ed7d894d72044d2a165738bd2d |
|
MD5 | f06dad06e3e49bd3dc4c0f3f6de9f422 |
|
BLAKE2b-256 | d41aa1a20b10d082dbc8b57fc54f69883befd15035674d363c04e4cc558fe396 |
Hashes for lief-0.12.2-cp39-cp39-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73f8e94b9250174e3ccfe6f88c40543e5656f708ff3d631244910dfc4e318935 |
|
MD5 | fa03f463018ee71472a7af9d97b3373a |
|
BLAKE2b-256 | ed2d6cfe59234bfaf6fa6562aa98ffd7338fe984108db62b3913f85aba3aaaad |
Hashes for lief-0.12.2-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 751de35c21ec0d9af7d35dd4372cb4946deeb28d8f168ebc89600494eee7d70a |
|
MD5 | 900788df563ea0810f39fc6d772cb7f0 |
|
BLAKE2b-256 | 483118b53b6b8765933cebb713db2125f38be5c25fd0cbdd6c7b179b2a29cbd5 |
Hashes for lief-0.12.2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59c3fadabb1a500725e7c2864a558e78bdeedab816d55287463a043decaf9842 |
|
MD5 | 0679514aac57092911d3f2bb5403aca5 |
|
BLAKE2b-256 | d1c7b86a5d7bedc811988170e22686dd2601e31054e8f0704479bdd90af31bea |
Hashes for lief-0.12.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 208913a5e67933617c4be7a92b65930ed87e1ed4338a76e8763dc79661e1032f |
|
MD5 | 28e1f5a2544106518dce0df22c5d0d58 |
|
BLAKE2b-256 | 6ca61f3e76f5555b716f98aba61a35daabcadccb06d5c116cb956bceec678428 |
Hashes for lief-0.12.2-cp38-cp38-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b074785a6c570f8d250bba656e473decde6cce3fb0e3d5d22974feed320764d5 |
|
MD5 | 7c31737ed1fbf6cb196dfbdd076a35dd |
|
BLAKE2b-256 | f07d3965083e33115f5f6965caa2b700a92206a3bfe00fcbb95526b8bfb987dd |
Hashes for lief-0.12.2-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 661fbb31946ce7f445c6e956fe81da423586901186c73326bc612e989ca608b7 |
|
MD5 | 5a1980f46bc43fcc9aaa334359c37281 |
|
BLAKE2b-256 | 5f3d8e83515996963d55c9bf060964fefe2b6b372167f6ff58889f9140fbaffc |
Hashes for lief-0.12.2-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d7d36827cef0c26c215ebf1c82e26283acbd56996dc75ff6ceae8dafb373e2c |
|
MD5 | 70638b26b245079d1c79c8d8ced1a0e4 |
|
BLAKE2b-256 | 051f8597ecbcd5bc00fd3c2b7df552e5f7fd23cf50e7fc481d577b6c82258013 |
Hashes for lief-0.12.2-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6518843c7072f8daa02f6ea6e0f3641f041854ce14d370c6eb65c1abc90d9ef7 |
|
MD5 | fb034e07fec97788fe6b1853c2ca5e63 |
|
BLAKE2b-256 | a2bb5cba28918340eabeb82e048aea46162da9c97ac1fd25a1f203f730064074 |
Hashes for lief-0.12.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3686afff06c9ac52965acbf61d79fb9e69b4bfd5c6d617486eceb3cd2ae6ddd0 |
|
MD5 | dd67f4a1d79868aa5519174ca02ba782 |
|
BLAKE2b-256 | c90815282f5941eb96d21a1ce86a6e23c93cbe5e146e6c6bdccef07df839c255 |
Hashes for lief-0.12.2-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa9a04bcb9e7fe2753ccd9e0832d3ef0583f5aa4b4bae9fcb62f695ce1853528 |
|
MD5 | 4069ffbcf8d3243928f0e3020dc53dba |
|
BLAKE2b-256 | 3d50f1e97dd77f17b81e3e759c1d4b5328820afeb5597418b114eb77050b7ae5 |
Hashes for lief-0.12.2-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 073e70e04225a6efa6dd2725b8a39cd3bf1e55b52f7a681ba5849ef16ea33a2f |
|
MD5 | f6bcefafef0c709678798aab82ee4dfc |
|
BLAKE2b-256 | cdaad1a1f1579f82b60a6fa3edfab28cdff1efd3bb305da0ae320a1d27697ed6 |
Hashes for lief-0.12.2-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b25c27b3b2d150634e218e23b9dcc02a570eadf4d839e434e7008f16c85cee7 |
|
MD5 | 681b563447334fb2625ed82b6332cb82 |
|
BLAKE2b-256 | 69cb9e53fd9c13dd8a17b7b0b6ace5f309bdf58e9d7506e23514f797d0e91e60 |
Hashes for lief-0.12.2-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cdd7d72159a97327a3e96f3f6b8a8a824af36ff810e006ea389bc3f4d10269e7 |
|
MD5 | b354708b2ffa56d07d05f1389610171e |
|
BLAKE2b-256 | 41fffcbefdb3377ae4e9ac73fe2a03e6715eafd0c3916bbe42e688f70d3d5147 |
Hashes for lief-0.12.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d99311de2b3be3bba4d4c3b2fdc982cfcc3719b22fcfb79c1ee3cfa712b15dc |
|
MD5 | fa6cbe8081c2bda83a1e4c255f4de33e |
|
BLAKE2b-256 | 6a6ebf4f3b2b74b7b1e26c1f17fc4dc5008cf27cf9d91b1638b5ce12aa11c981 |
Hashes for lief-0.12.2-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 41e6b569d38bc49bbfd418085f686cf4c0f374ba30e4533e715528bef38e9f18 |
|
MD5 | f0b9c330af426e3df3909021b5f76de7 |
|
BLAKE2b-256 | 66d425054503dbec880399369c87a0d53aaaf2bb954be0d2bbf5bacce24961d0 |