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.1-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e131d6158a085f8a72124136816fefc29405c725cd3695ce22a904e471f0f815 |
|
MD5 | 711c5f904ce670143b7eed948968b907 |
|
BLAKE2b-256 | c674885e015fe2c458a57399082082bb8a0f5876dfd59d110de98daa7f5da177 |
Hashes for lief-0.14.1-cp312-cp312-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08bad88083f696915f8dcda4042a3bfc514e17462924ec8984085838b2261921 |
|
MD5 | 7da8a53323d26e5c55b632374d045049 |
|
BLAKE2b-256 | 705e4dfd0e1f7ca4d4f8b5271cdd9392ad023c02c51c26cc1486e4240c70aa53 |
Hashes for lief-0.14.1-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 497b88f9c9aaae999766ba188744ee35c5f38b4b64016f7dbb7037e9bf325382 |
|
MD5 | a056ebb066174b5146099821ac8f078e |
|
BLAKE2b-256 | 527ed4f2f83b22f273757c482e129132c30978ec17a2ace2de5e2eb5c3c8ddc3 |
Hashes for lief-0.14.1-cp312-cp312-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50795b51884b76a78c481d6d069d992561c217180bd81cf12554180389eff0a3 |
|
MD5 | bca7fbf5b0d4d8f0a73e2578f45b01b1 |
|
BLAKE2b-256 | 5f177d8031452788312cdc8fb85afc95aaabe160a11987254055489d4d080bbc |
Hashes for lief-0.14.1-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7f7a55db2fcf269569f9e9fa5ea752620396de17bd9d29fc8b29e176975ecdb |
|
MD5 | f378563d96e42a3d85de9f147bc3a911 |
|
BLAKE2b-256 | ac1d4daf7a0cef18547c70e8d49849d3cea2e51fb00342feef5c6328fea04f57 |
Hashes for lief-0.14.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6df40e3750b8b26f88a6b28ac01db7338cdb6158f28363c755bf36452ce20d28 |
|
MD5 | c5286ce1bba3027294cf3c8c899eb7de |
|
BLAKE2b-256 | d484678ce8cfd0fcd7f577948c58c299c00362c47e73edff15c399a5ab522902 |
Hashes for lief-0.14.1-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24f687244e14d4a8307430babc5c712a1dd4e519172886ad4aeb9825f88f7569 |
|
MD5 | 5dddb1a43c59660bf018537be4ceed34 |
|
BLAKE2b-256 | 8eac24163962eef96d0fd0b7827cc336403197ef823387bdce29d999d96f9c24 |
Hashes for lief-0.14.1-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 473e9a37beef8db8bab1a777271aa49cce44dfe35af65cb8fad576377518c0bd |
|
MD5 | 4c86183c733412ca309a4d45b201c106 |
|
BLAKE2b-256 | e3d3e839813dc9c4a63d20ad3688b0a837b39bc69d9437873a1488095f8d7660 |
Hashes for lief-0.14.1-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd481bfdfef04e8be4d200bca771d0d9394d9146c6cd403f9e58c80c4196a24e |
|
MD5 | 155eba5191529ba4fbfd24b7019224c3 |
|
BLAKE2b-256 | b8c3fa6682db5dc68eb65ea654a79a0abcb615ad4da14f67490b8af9e52ce9ec |
Hashes for lief-0.14.1-cp311-cp311-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c202ed13b641db2e1f8a24743fb0c85595b32ea92cc3c517d3f7a9977e16dcb4 |
|
MD5 | 5f95b3af51c1e5f4c171419c1b71e3f5 |
|
BLAKE2b-256 | f45e0f55a48f351dfa8348a543e5a8207c1dfa3e96f14fe011600c3876b85ed4 |
Hashes for lief-0.14.1-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f3c40eadff07a4c8fa74f1e268f9fa70b68f39b6795a00cd82160ca6782d5c3 |
|
MD5 | a7608e77d2b1dbbcb45f2c4d2ee103ab |
|
BLAKE2b-256 | 21e05a28c40485d64a7ea549b28a639b0cdb49e52e88702f4099a82c8a93e3c8 |
Hashes for lief-0.14.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ca365c704c6b6b1ce631b92fea2eddaf93d66c897a0ec4ab51e9ab9e3345920 |
|
MD5 | 6fbada9ddeb514cf1449e024cc2c4577 |
|
BLAKE2b-256 | d4e2e314e0999aa70c0297128ef977ad7400c2bf9d5f1f6b31b5af7ce8c52d1d |
Hashes for lief-0.14.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c321234b50997c217107c09e69f53518c37fac637f8735c968c258dd4c748fb2 |
|
MD5 | 4c8ab79ef8731ac219c83a2b746eb6e2 |
|
BLAKE2b-256 | fb198ec86dfdd9ee6b59b768222c6727bd2115e6f4336417e7f676b93d9ed0c1 |
Hashes for lief-0.14.1-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ca0220189698599df30b8044f43fb1fc7ba919fb9ef6047c892f9faee16393a |
|
MD5 | 4e0f7f38c61926cb76eebd87a621d8fc |
|
BLAKE2b-256 | d0d472c12ef2d42edd1005a448d396de6c4593eedc76b1755af20a031b0cf7fa |
Hashes for lief-0.14.1-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26134815adecfd7f15dfbdf12cc64df25bcf3d0db917cf115fc3b296d09be496 |
|
MD5 | d8dd366817abc2a69e19acf9e285fd7e |
|
BLAKE2b-256 | 747f08a88eec7436cda7d5b5b4f64a97be321d5e8c2f144b1eaea4a83985e0e7 |
Hashes for lief-0.14.1-cp310-cp310-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d22f804eee7f1b4a4b37e7a3d35e2003c4c054f3450d40389e54c8ac9fc2a5db |
|
MD5 | 04c4e2a375962734ca56bc056d52efc8 |
|
BLAKE2b-256 | fa61dfc9b771c895c216e60052c82b7e6ca8c3b332117c3db21f03df5b340b4f |
Hashes for lief-0.14.1-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bcc06f24f64fa6f20372d625ce60c40a7a6f669e11bdd02c2f0b8c5c6d09a5ee |
|
MD5 | 407f56b4dd36776162b5ce5de5a91864 |
|
BLAKE2b-256 | b5e7aa259307d8c7d6dcb437b1f4865ccad7b4589c8149ae9e4177ea1f1920aa |
Hashes for lief-0.14.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7a9a94882f9af110fb01b4558a58941d2352b9a4ae3fef15570a3fab921ff462 |
|
MD5 | 3b0ce9e193159bf36c56ce951c6430f2 |
|
BLAKE2b-256 | b3831337d279941f89da2b2474c6faf36b18235421ab2958997272456d3e4104 |
Hashes for lief-0.14.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2db3eb282a35daf51f89c6509226668a08fb6a6d1f507dd549dd9f077585db11 |
|
MD5 | f7e247213cfe760345f723488916703e |
|
BLAKE2b-256 | 135bc0f839d52c606f02cdaf201974a376b1bda5dc17732e2ece473f8f1bff39 |
Hashes for lief-0.14.1-cp39-cp39-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1c15bd3e5b15da6dcc0ba75d5549f15bfbf9214c0d8e3938f85877a40c352d9 |
|
MD5 | 6b52c903e13fff1143b66f98afda10e1 |
|
BLAKE2b-256 | 5ccb42789cd0b715183a59575c25ad00d63db22d8ccbf608cb3dc0a1c733bc13 |
Hashes for lief-0.14.1-cp39-cp39-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66deb1b26de43acb2fd0b2fc5e6be70093eaaa93797332cc4613e163164c77e7 |
|
MD5 | c0003ee1454d138d659fc72c62003001 |
|
BLAKE2b-256 | 2829d222ce8e809d55c38c8a1d6b284c5a5ec68b1fd81f9643ac5787cbfc15ca |
Hashes for lief-0.14.1-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 33d062340c709c1a33539d221ea3cb764cbb8d7c9ee8aae28bf9797bc8715a0b |
|
MD5 | 635dfc5411a27e898f289a3413a0a522 |
|
BLAKE2b-256 | 0d6b2c319c7c39a59076f0c54ec3427b25a43a5f026241353aebab8b997d845c |
Hashes for lief-0.14.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | abb15e4de34e70661fd35e87e2634abf0ae57a8c8ac78d02ad4259f5a5817e26 |
|
MD5 | b60fa8b4a16e814f7184358ec7e32957 |
|
BLAKE2b-256 | 93be92399d9bedc9a63c90899d02644f37ca15fa010a682e0bfadcf176167528 |
Hashes for lief-0.14.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a35ceeee74bb9bb4c7171f4bca814576a3aa6dec16a0a9469e5743db0a9ba0c |
|
MD5 | 4df47071885881ba802ba637e58e4b7f |
|
BLAKE2b-256 | b337a3bee3d1dbfacf3cf3c96407d8d2ebb9312dbf4ac44f0797d4c07c142069 |
Hashes for lief-0.14.1-cp38-cp38-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a5c7732a3ce53b306c8180ab64fdfb36d8cd9df91aedd9e2b4dad9faf47492b |
|
MD5 | e811fa26ff5f82f50c048ef85f396b60 |
|
BLAKE2b-256 | fbdc29764d43339ee7b14c0601b6cdf22ad7ebe1b851c0767e40415dd01bd805 |
Hashes for lief-0.14.1-cp38-cp38-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 016e4fac91303466024154dd3c4b599e8b7c52882f72038b62a2be386d98c8f9 |
|
MD5 | 97bacb0e64331ccf744e12e75e37b737 |
|
BLAKE2b-256 | e4a1458417f961a70df13e75c18990fdf2a1d551f9eaafd7c63d334ee0098284 |
Hashes for lief-0.14.1-cp38-cp38-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4e76eeb48ca2925c6ca6034d408582615f2faa855f9bb11482e7acbdecc4803 |
|
MD5 | cfa7b753bd63bc173b4cc4a4383710fc |
|
BLAKE2b-256 | 06fd56b4aa9d2656088761c0c74f9cd0c61538014f5b7878c12ef1762b08e8a9 |
Hashes for lief-0.14.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df650fa05ca131e4dfeb42c77985e1eb239730af9944bc0aadb1dfac8576e0e8 |
|
MD5 | 9d09fcc4898418b5885c6f3c5d2852dd |
|
BLAKE2b-256 | df3115177e70935a6a8f2fca7ab7ef6e648bebfa3d308673f725ad73a276ce9e |