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.14.0-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5713e27ba7bbe7c8c503354f3555a33e69d5236a02dd34d162156cc85a9b88b5 |
|
MD5 | 675bd01c131e23c0405b1e77f01aec8f |
|
BLAKE2b-256 | f7646fdec394ad9dd9f1c3adc7feb99114c8ea555d35406f8f32501ae5301c1f |
Hashes for lief-0.14.0-cp312-cp312-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17e2809fa52e377d1a5045dbbbdea8bebbaad7f672d6c133287388e7e9942b64 |
|
MD5 | f3e77f660d481677cd6889d93421ed71 |
|
BLAKE2b-256 | 1b193a24b8f576008c7b1709d195221ebed5bbe20e223110b3dfd9c4122f9783 |
Hashes for lief-0.14.0-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4e6ca44bc9d0d314ac73148c64e4f9182c950a2f2024ab9d3d7100635d46261a |
|
MD5 | 69cc1a0b17e678da1057e17f4ca86c44 |
|
BLAKE2b-256 | 865e4026b5a2d85464bb562a5bea29f1db40429e08ff4fb89a4fd05f84ffae49 |
Hashes for lief-0.14.0-cp312-cp312-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46808f2ec6903d8a4a4a4975d664e70c64ca11691bacb391a51029a8cb941e92 |
|
MD5 | 203901e64adfadd7067fcad612fbd805 |
|
BLAKE2b-256 | 8c2fae89cf6d990aefa3aef5f6957f99ead32d951d041385b051a4480a2a1641 |
Hashes for lief-0.14.0-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c49d34c9140a4b77046137ceeeb872f26262447f514ccbf0cc985a91e59e7f69 |
|
MD5 | 43b718a2e305d7667e2bfa89131db0c5 |
|
BLAKE2b-256 | 5b286ab4a06e7fce92088d04ce7c7b7faecaa004bf02ae3a701015be07f8f34d |
Hashes for lief-0.14.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70b53498390e8b95d878598c95bd068f5c86cab415c3869538fbce4cee36a9cc |
|
MD5 | 054b81b7fa16544bcfa52f7b4c73c02b |
|
BLAKE2b-256 | b955923d484cd8cc83198046a62360e1d9026683fdee1f15b70d3c171312ba00 |
Hashes for lief-0.14.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 33f2afdf9f00a8a208d5f32135834fc5f02bd12e8b14f0857cf14d4475ad03bb |
|
MD5 | 108b8ee7da2912efac7d2c716a5bf916 |
|
BLAKE2b-256 | d4fe43d7b631392f26522f2a28bfd2784db10f33e7df6dddff73bdcfe4bd2661 |
Hashes for lief-0.14.0-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba29aabd72e92334d54883d58b108f80465973edaec3e27cb422abbc657bfe17 |
|
MD5 | aef8da48837849ea23449f8ddb513a10 |
|
BLAKE2b-256 | b6f66d1995ae7aa8a8aa1640ced861ed62bb43942d0cdaa475b0a15bea1b7b33 |
Hashes for lief-0.14.0-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b850f38b62ca8a92c7f9803ceac0e79369b732a75e627cba3c2b8f1fa729f643 |
|
MD5 | 52233a30e586030df57f0a52d0a421ff |
|
BLAKE2b-256 | 1c9b87d919535a3f17e4af88232cd27748408b41ffac78ae8ef7077cb4c18f6c |
Hashes for lief-0.14.0-cp311-cp311-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 69df631cd0573388fa6891277d006f8da2fa42a5bbe3acc440b66a7352f6bef3 |
|
MD5 | a856ad1523e920196a27340a819b6e8a |
|
BLAKE2b-256 | b59770b1cd93edef0d37594279197ae647fd86e4ceab17833108e1f3194ab6f2 |
Hashes for lief-0.14.0-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff42aa1f12d3dc8bc5641eb1991269fb92e43bae386559ad576c97ffa09639f2 |
|
MD5 | a8e26e7a32e68201c0c74f9ae6ae2305 |
|
BLAKE2b-256 | e136c367263cbabf55f9a8485482bcdafc8c9f74e186019d261a5cc0c0ad7664 |
Hashes for lief-0.14.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 737bd6fab74e222968936794e09b2bf399417c38a3bc13d6ad70836793e78586 |
|
MD5 | eb5284768c6d28370ae75dc0c5c3ec50 |
|
BLAKE2b-256 | 70051df1a180006c1aa94ea36415c868e2905ba84b7fc4852e7413e8e8d314fc |
Hashes for lief-0.14.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 684c1500fddab8aaf5a4f74cd092ea190c4c837d31c5d087c68a9f175775c2db |
|
MD5 | faf4b9962017ceb6dff96624974266e9 |
|
BLAKE2b-256 | 8002aee5c31998887a1e8e266bd0d638bb4510c31e2631cb8704580a120d7cbd |
Hashes for lief-0.14.0-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b34708c002c119f43998af3c4f219d06de6b66a34aceb298fd8bba8247e57572 |
|
MD5 | 042bd66d7c73c261667e379d75371d49 |
|
BLAKE2b-256 | 7899cc09b32de1db804b9a4412938bea7d77ec0c20ee7ebe72b0ff095431be45 |
Hashes for lief-0.14.0-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51e7adfe1cc574a035b47a280cb5902cec6deb2d78ef0b47c536bdd75dfa6956 |
|
MD5 | a302fc9c11f61bb15884efdb77328f5a |
|
BLAKE2b-256 | 8880ce13bf1050effda4be387e93d6e70f8e9ba8407979ab817c1884e428d918 |
Hashes for lief-0.14.0-cp310-cp310-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d949c53f95132ef0d218e88c3c982610c54426249c95f99b736e5c15bb1b75b |
|
MD5 | 33e8ac59734bb427c5daef830dba9450 |
|
BLAKE2b-256 | afe7c1576d4fa3e03d9f0293dbeafb2d6eb47bf7f9a965c5646da627bb156cc7 |
Hashes for lief-0.14.0-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60be24af0b913a79922a9730302df5f380954a1d7b1c0c7de91b8918e36f0756 |
|
MD5 | 8bdc4a4a7f62504d6d083d0eef83c173 |
|
BLAKE2b-256 | 6c4cec08a362f4f0e3ee054dd9a6ee4dfcecd236d257ac4d55d4ce3d148ce68d |
Hashes for lief-0.14.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b1e9af189e0dcbd6ce9ce67266135ef288c9b8f9a5efe2a47d0d0266288713cf |
|
MD5 | f69edef2147ad14f3d7ef2a36d29091b |
|
BLAKE2b-256 | 668a57ebd961bad664901f75b487d2022ad77a5623739943f2f9c5aaa78d16f9 |
Hashes for lief-0.14.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 583d37400c85dc80299db873d380c0901995ae03606f7de50fd3d0538e7a7860 |
|
MD5 | 2d60f1c2b4c5a11865dcda0eeb4afb1a |
|
BLAKE2b-256 | f00a038141048af843ce31c6128717b10966dff1b9fe13868488082942273d68 |
Hashes for lief-0.14.0-cp39-cp39-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f237042467f41bf0e64b051e780865f9aef958ddec1a358317cc259da2ec2a16 |
|
MD5 | 1c6ccee76cbfd7c0bc170d88f83b6486 |
|
BLAKE2b-256 | 847b06ded5d64cd5addde0279d296ca0a6dbae3e7063144d309912f0e5a7067c |
Hashes for lief-0.14.0-cp39-cp39-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ba07f12c00950554d29495c3aef3740c44243d1c0d80a3f8dadf64c456a32e7 |
|
MD5 | aec6b4e672f6457d9b5f548291178573 |
|
BLAKE2b-256 | acac8cd2c66cc66965bedf455dc816643544d99297d0c8c04eae3b9cd0deb555 |
Hashes for lief-0.14.0-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 110705c186f2ddc13fc2fad0dc9d501742d785b934103fdf56e86a86bcbcac1d |
|
MD5 | a0b4d4ec8c58593cf598dac74cd65ddd |
|
BLAKE2b-256 | a4b706cfb727721c1e5f319c8cc03381c210da890f8955f6ec213a99760a92b8 |
Hashes for lief-0.14.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f89b8e3cc6aa01f50a8ed58d5aea89f6d767df7951fd050659e9617c1b4eb45 |
|
MD5 | 5c79aa10d42db1d35091a58418666372 |
|
BLAKE2b-256 | 2affa35b02bb56ac05050dce41c383d628e7bde9c6ed3a6d3278da41ce889c7a |
Hashes for lief-0.14.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc8647f050728c09645666765de6dcbc681df7b0b6bdcfb4cdbbb96a523d2eaa |
|
MD5 | 037de462c631e22e1ccb7d5ab5c824a7 |
|
BLAKE2b-256 | ceebcc9c7c0367a6452049fb2b8208248d3bf477316c7bb596184cbea75e42d7 |
Hashes for lief-0.14.0-cp38-cp38-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a44d5bd2462c9db68227ed9193243c412ce6153fe6a8e53782ff4210e4606ab |
|
MD5 | d80db89d553cfa8c9c5b1c58fffaf9f8 |
|
BLAKE2b-256 | 44f97ccf05191bc143fe1a5f8c364b26321f6f75c7692aecbcd19cbc6c737b5f |
Hashes for lief-0.14.0-cp38-cp38-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28e847e8410b9101f49af0ae9d06e7cb2d0db64c47442ac4c79abf1b15b2c108 |
|
MD5 | 4ec31766baef2ca03467c820328da465 |
|
BLAKE2b-256 | bd3ef7bd388b1d51f175d18ff688ead951834891bd69b6f865198c21acdaf3d1 |
Hashes for lief-0.14.0-cp38-cp38-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe783a180d63aa3ae19c5f58dc76afc179f40249c4c77d9f70bc557255b4051b |
|
MD5 | 503d3f73d360797936614a31ccc2340e |
|
BLAKE2b-256 | d9f742406db04acb8fe5d08b046a95cf9a1cb31abfaff859fa9cb608c8a230a0 |
Hashes for lief-0.14.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9998bd60d332b50f72fb71d22316b227f9fdbb301c953e8aa003822a80a6ed0a |
|
MD5 | ee6331be5fc9b3524fc11ed320f09f81 |
|
BLAKE2b-256 | 5abed8146d16767b2b0fc0644aa16eba1a82b45e78aa4ece3f2d40b263357f0b |