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 << '\n';
} catch (const LIEF::exception& err) {
std::cerr << err.what() << '\n';
}
// PE
try {
std::unique_ptr<LIEF::PE::Binary> pe = LIEF::PE::Parser::parse("C:\\Windows\\explorer.exe");
std::cout << *pe << '\n';
} catch (const LIEF::exception& err) {
std::cerr << err.what() << '\n';
}
// Mach-O
try {
std::unique_ptr<LIEF::MachO::FatBinary> macho = LIEF::MachO::Parser::parse("/bin/ls");
std::cout << *macho << '\n';
} catch (const LIEF::exception& err) {
std::cerr << err.what() << '\n';
}
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.15.0-cp313-cp313-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8300d3776cd7970a0764c0a346376e1971ee511aa9d6bb00e2a90ff571336785 |
|
MD5 | eb94ba19687f61f383a2c134ed97200a |
|
BLAKE2b-256 | 7cca2fba13f38bead5a8d18216d14479b20f1f4d98231fe10a407615fd8e07f0 |
Hashes for lief-0.15.0-cp313-cp313-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7ed483deece8e8866616d10accb7853c2e63cc269de79bda4c6fead67614381 |
|
MD5 | 030ca541dc4551a9c09de6bbf3996417 |
|
BLAKE2b-256 | 563e230e87d48541f8c03c82009975ed9afcb76770559f8b55a18a762aca1085 |
Hashes for lief-0.15.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d575d56b930d922d8999c63bf63384d49ab4d982dfa2bc4ac83c8b23f6cd84e |
|
MD5 | 21009a6dafe1c7e580e7dcc3852e7501 |
|
BLAKE2b-256 | 261ab1292c2380a3568648bb87414d9c039e9c57987c1ac8aa57620c9de3faec |
Hashes for lief-0.15.0-cp313-cp313-manylinux_2_33_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d79ea5fcb68f546cb44f5a442f6862f8eb7765ba365b9d741eef9477d0b7223c |
|
MD5 | 60db9d9726a22f1ba26b05bd9b5c4abb |
|
BLAKE2b-256 | b0afd76d36b705047a04f794b3a34221fd6e0601a209f74c65d525544312aa12 |
Hashes for lief-0.15.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56d41c57a21d1ca82ab2e1f3cf47c2b7b9c536125f12dfa07e83be7bf7367c12 |
|
MD5 | 0a3dbca0e32d838b5165efd37f70d2a1 |
|
BLAKE2b-256 | 65e6ec955fc84a594740689f79b7e55895fa14d4a8dd3a1b1bdc80565be1d7d6 |
Hashes for lief-0.15.0-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c1dd1992781a47dd00a3ee6a4539d2b8e174ab437028e537718116a871b1f9f |
|
MD5 | 77cb294cf3761661be59365be77c9010 |
|
BLAKE2b-256 | f2b3101b2ae1649f1200732e460cd77118d5b9e92fc99b3f8d55f7cf7332d688 |
Hashes for lief-0.15.0-cp312-cp312-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 767f0b138e5c27eae6983c195db68d687e76a7213b51a73d6557f89ab363bd54 |
|
MD5 | a3b3e55c2eb23cbdeb2b17644df4b99d |
|
BLAKE2b-256 | 9aae071f8127cac99637b1562a6b0147e3ca565019c5b52932d2fb97792f501c |
Hashes for lief-0.15.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 75e1d473abbddcdf7ebef3ce95e84f3b63b3dc281bfa2ffcaafcf4c889922b25 |
|
MD5 | af912de4102be50b42969191e1997137 |
|
BLAKE2b-256 | 4779a2bfbb029948e628e813b817be5f670133c84149bdc106e9959c7bb239a1 |
Hashes for lief-0.15.0-cp312-cp312-manylinux_2_33_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e1e7f65f8e7e2379d7ac416e84901b3cde2e88c8dea0e7bff883ceb81988028 |
|
MD5 | 5572c3120455c226383254d9abcfaaea |
|
BLAKE2b-256 | 6bff707d6b7372cb38aef1a1b90ec917e7a4e4264f4fa07dd9ea45ac1727d08b |
Hashes for lief-0.15.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ad6f4565ab68b81bf0d4cd50226ca60a63a74f71d29f80cb11a0d74022f77466 |
|
MD5 | 33aba93dda4ea630495833b4de3969a2 |
|
BLAKE2b-256 | 4ccb6e52326fd15b3dc3e0e2bec0e657230d56146ac0690bfb7bc414bb4d08e2 |
Hashes for lief-0.15.0-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d008aa92dfea1c2718e71bbf930be3f004364941a4e6746537c1a640278176a |
|
MD5 | f1af10edff6effa2695bf5e59562ec26 |
|
BLAKE2b-256 | 9b82869f6eeb9cc7e82f1f8772c6bb540f477525d4dc1fa7bc3b082fc74c2cef |
Hashes for lief-0.15.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 855410442aa80558f0ebe641f01a381b84d641f58f3eb66adc473d5f7f0e3bf6 |
|
MD5 | e4e5c3773e8dd65a8bbac8edea856879 |
|
BLAKE2b-256 | 5e6b9264045d67bcf2c657b1eef71490df500dc62027784fff96111060193749 |
Hashes for lief-0.15.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0762d3ae5e9c2a9438890345f5ff23d1fe1eacfbb3bc8ba396eeb408b32edee |
|
MD5 | 116fddf39f4ec017d09a3b8342fbe80d |
|
BLAKE2b-256 | 824632d886eb78f53f79335817b004e3b2d664eae471c650751f2bdbeaaaa144 |
Hashes for lief-0.15.0-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a87a860761a49eff29ac395a4b73e0194083199cb2d3bd449d58116a58a4500 |
|
MD5 | 48e82ccfc2ca439cd70f8c52414efb74 |
|
BLAKE2b-256 | a788834c2e05b835fd6bc0d08028ccc5e74a177d44e33f40545ecc972f3a99e7 |
Hashes for lief-0.15.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a791bd6463ff13825bcf7001de6ee1699014d275df82c36805aca14c6f7830e7 |
|
MD5 | 03bc2dab4b0e31e490eb6b4be1027986 |
|
BLAKE2b-256 | f70b83124422c2d61069214bcd96fe91e0a2fc4bdf9480c313f45eac3bb4f454 |
Hashes for lief-0.15.0-cp311-cp311-manylinux_2_33_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f8048c27eb72a335595c51038e1441565a001c6ebbe346aa29e35a1564845694 |
|
MD5 | 69fd38760e439aeb7932c8e0d2f33304 |
|
BLAKE2b-256 | e0d5373dee2527db2bbae22d8930209f591ccae3bdc8b6d77cb755b59c314ca2 |
Hashes for lief-0.15.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d696511db9df2e1020c42f598ed782b013de8e2b1492ab4b366c8ebd19440124 |
|
MD5 | f943f923fec74e94a94c0decdc3f7340 |
|
BLAKE2b-256 | b04be262b533daba6cf1a2f34842f3f18e5133dd8aed9e52e7e6c2d9ba1072cc |
Hashes for lief-0.15.0-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2222bc819d1cb2b1e9675743fd0a5ff5f6c90bc614cc7ac015db7f8230074e46 |
|
MD5 | 818e0fd562313af202a019df0fab181e |
|
BLAKE2b-256 | bac0874c9acd07ad90d1ee2bccd6fe144373ddf3f504d043e075bccf8e6cb84a |
Hashes for lief-0.15.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 454ff7ae11cb56cb7a2314aa3478ec2ffc3e8f10ca4f5745e7cf63ab5a9dc46d |
|
MD5 | e39b69c89dfa768df8607ede884f5435 |
|
BLAKE2b-256 | 5ec326d12c0100f330579f03e7fccb83b5e4819e5f4abdd3b3ba6fabf0dcc0d3 |
Hashes for lief-0.15.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04eb9e2d3a7ff1f44512714c187dfb28279263c203e277c3e2eea120105719bb |
|
MD5 | f6ad108afa43cf773270a5c199288d84 |
|
BLAKE2b-256 | 14aec4c9e209223388353739d4db824fcb1aef493a353468ac8715846d5848e7 |
Hashes for lief-0.15.0-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c5fb695edd0f23e951573af2073b6e906f880ca5f3b47ce8871c45aa4e23a88 |
|
MD5 | b16afd66b39f8dc915c6aae47b89dd72 |
|
BLAKE2b-256 | fb98feb2b1f666af892471ef2db25c3b45865ebecf81bd840944b19d72e5aeca |
Hashes for lief-0.15.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2b2418ef746cba2664f3c08d4f7df66c09266b3cf56887798b7fbc587f29427 |
|
MD5 | 5496822ab22876c7737c5cef16cf8601 |
|
BLAKE2b-256 | 7e567b7583e9e4c4c136fee5713711bf877d7c94a80de7182b692b4495a9aaf7 |
Hashes for lief-0.15.0-cp310-cp310-manylinux_2_33_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53bf97a90df7eea5a36396f58690977dfc3557fdd3ff127ff52d2d0a8e300025 |
|
MD5 | 2a78c92b759f0fb636afd373a6ffb92d |
|
BLAKE2b-256 | 5ba75bf1266d3fb07158f47992d066e2c6fd8bec6dff6114c4907649e1e9389b |
Hashes for lief-0.15.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b4e186a556df84c7ace99bdf449bb6436119f87288ae56e95b9ff7347db43e0 |
|
MD5 | b7b534227d0a15ff14f9a29738c6f3c5 |
|
BLAKE2b-256 | f262dfb64ba804cca4c861b8a3307c9464c78778c75de0e131c7498c7bb02cdf |
Hashes for lief-0.15.0-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1856e4e226145816ec34b271d4536de0a798f84c762f9f62d24a69a357ce478a |
|
MD5 | 7113d53dea07f84e561921f572fb3009 |
|
BLAKE2b-256 | 54554ad35c58488af54375dc14f8dc881f39c9b53b69008b101369f20b2b3a80 |
Hashes for lief-0.15.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7a36a6f2af97d4d524258f9535ab65907957fb2aeb165082f92f5b218be3b54d |
|
MD5 | 8f5d145391c4b481808450c21e0b9f27 |
|
BLAKE2b-256 | 9e12298a3926f60d0a9a4752412d654a262c9fdea19a47a0718a2cb85189d6dc |
Hashes for lief-0.15.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | de7de5d8c4cc3b60784066a2c2965077489922b4990b0c058f812fc0fa48dbac |
|
MD5 | 029420e703beb2e218af14fed3268360 |
|
BLAKE2b-256 | 50cfc1e4793322a3caadeea847964fbdbf8f526ae26f93384bae11ab994a0c06 |
Hashes for lief-0.15.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 702d74179c5f1ab599af16ea3b439a2aeb68876f795a0a020ca0dfb131489587 |
|
MD5 | bbb955334cff8f90bff49a34907bb33d |
|
BLAKE2b-256 | 81e405b1a7837937fb4bebd28948feff0ba83b03149e8829877d64fe831b1441 |
Hashes for lief-0.15.0-cp39-cp39-manylinux_2_33_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d160e0a002f8d7c2ac0ccd596246bb453a941f7255ec0704561cda5a2d958bf8 |
|
MD5 | dfb6f75239ac7255b6b8bc4e5c068ab9 |
|
BLAKE2b-256 | 4698f6e75a429d25238ede068be507a371c4634a48e9460f6444df02735087cc |
Hashes for lief-0.15.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9fe6d16dae53ed7125ae8fcfee4274a9d63acefc54c87eb36c8d761259dea48 |
|
MD5 | 1d3c4ca6bd1c280c6e7c20b789d4e85e |
|
BLAKE2b-256 | a214b92ac364f4f5b95480f4092cb39d858c958a5fa1cde5bf3ef286241e4a8b |
Hashes for lief-0.15.0-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9ed1f2a23e2cde2eb2029bf9c0cfff5abf5b0006ce9d79db2c10c440ed90a50 |
|
MD5 | 62a828a1e813564dcaa4545e6740c48e |
|
BLAKE2b-256 | b6eb8e13be9b7bff2b1f6b596de2ae2ff6dd49f960383b055e137990fa80cf91 |
Hashes for lief-0.15.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a98cc3b32d2670454ba4915e8e38f2a7799b3201194ccf1c6a8d92d51349bea |
|
MD5 | e6799917846c461ca2e83cfceb66acd3 |
|
BLAKE2b-256 | bfa4946af8aefdde9c0b097cf4942f097346f197c3e5f891776e091a157939d1 |
Hashes for lief-0.15.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3abe29b7ee269126c53f719496c6190510d514b753b6195fded7a4694c1442bf |
|
MD5 | 3c7a762abd9c8f1812f1d2fe2c2bdd99 |
|
BLAKE2b-256 | a3f673e3da8d8c8604fe39f85b39c71b3406e47a130222a3ba26c7c010addf23 |
Hashes for lief-0.15.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9da869169c3d7168dfb8a385dc38a13443a5f8ca75bd1bbae2249f3da4d5aba7 |
|
MD5 | 73ca80286c0aba36a8776a847f166ee5 |
|
BLAKE2b-256 | 6974f3f1e92c94b9d629338b1322c299ec17aa5d4ff74d0a571c3a1c7e842e3d |
Hashes for lief-0.15.0-cp38-cp38-manylinux_2_33_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe49e475a60ce3c4fc3bd4fefdcf3952c16bc0040805973e34872f5d4874ff8d |
|
MD5 | 85d112f3deca10e2f97d0000f5d9a694 |
|
BLAKE2b-256 | cebc2ff6e2cdeeb1bdafde25116bd0acd6431853ac627688f2c0f169515d42a7 |
Hashes for lief-0.15.0-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d6f61e9d73df15efba070b4516892ce18e7465a0089c30c9419d2099dfde0de |
|
MD5 | d5ef17e81c229c909144260eda5f9fdf |
|
BLAKE2b-256 | 5718c76aad5d7313ba8f253a8692a90af89acf450be3e79feddb0fd592993d87 |
Hashes for lief-0.15.0-cp38-cp38-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d61c93695304209d19f2973f0fa0b52dd5abdd595a898de3d9abe211540c155 |
|
MD5 | c6386422331c0c96fa885f0097faabc7 |
|
BLAKE2b-256 | fe3f8e394a480adb9f61cf01996a38ee4e92c23e5572f1661a48d86cf1326a57 |
Hashes for lief-0.15.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8df9c0f94552fecc62338eb3a15f3340353e732e4ca6fd389140e79575582dc |
|
MD5 | e515c9dd86b2a9b70e6926039f5293d3 |
|
BLAKE2b-256 | ac8ca9f24bacb9e7b7d345fc436d14ff87a226bc02442acde9df1436fb0d5ced |