Romain Thomas
266f989e52
Enable support for modifying section-less ELF binaries
2022-04-03 19:34:44 +02:00
Romain Thomas
baa023b914
Remove exceptions
2022-04-01 05:38:30 +02:00
Adrian Haensler
9331982bfe
support update of auxiliary symbol versions and adding new SymbolVersionAuxRequirements
2022-02-25 05:08:44 +01:00
Romain Thomas
50986fcaf1
Use a span interface
2022-02-13 10:39:38 +01:00
Romain Thomas
77328b0071
Bump year
2022-02-08 21:16:25 +01:00
Romain Thomas
e9782c5927
Clean & modernize LIEF code base
...
This commit (obviously non-atomic) cleans LIEF's code base by:
- Using pointer semantics (`std::unique_ptr<>`)
- Using LEAF boost error in the binary stream
- Reducing the scope of the iterators (`it_section`, ...)
- Removing `Structures.hpp` from the public headers
- etc
2022-02-05 06:09:06 +01:00
rthomas
a615adbee4
This commit cleans and modernizes the code base of LIEF.
...
Among the changes:
- It removes the ``and, or, not`` keywords
- It updates the Documentation
- It moves the internal structures in the ``details::`` namespace
2022-01-27 20:18:54 +01:00
Nicolas Iooss
bb7faf3e72
Support setting ELF header identity from bytes
...
The following Python code currently fails with Python 3.9:
import lief
elf = lief.ELF.Binary("test", lief.ELF.ELF_CLASS.CLASS32)
elf.header.identity = bytes.fromhex("7f454c46010101000000000000000000")
The reported error is:
TypeError: b'\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00' is not supported!
It is possible to use `.decode()` to convert the bytes to string, or to
use `list(...)` to convert them to a list of integers. Both these
solutions work, but they are not as elegant as directly using `bytes`.
Modify the `identity` setter to support bytes. As `Header::identity_t`
is directly an array of `uint8_t`, casting it from `py::bytes` is
straightforward.
2022-01-24 23:18:20 +01:00
Romain Thomas
72ebe0d89e
Refector the ELF builder
2022-01-22 13:23:52 +01:00
Jasper Lievisse Adriaanse
5a4c94cbba
Fix a few small textual mistakes
2021-06-22 17:50:57 +02:00
Romain Thomas
009306cedd
Update section_from_{offset,va} to enable skipping SHT_NOBITS
2021-06-13 06:56:32 +02:00
Romain Thomas
1d63c60ee8
Add missing functions
2021-05-31 05:34:18 +02:00
Romain Thomas
672d73f1cb
Add crashpad note
2021-05-30 20:38:30 +02:00
Romain Thomas
d9303f682c
Enable to add object relocations
2021-05-30 20:17:13 +02:00
Romain Thomas
06aa75c085
Fix error
2021-03-29 08:00:46 +02:00
fanquake
e83f812e5d
add RISC-V machine type
...
Similar to #486 , add the RISCV machine type to the ELF_ARCH enums.
EM_RISCV 243 RISC-V
2021-03-29 07:07:20 +02:00
Romain Thomas
6720ed2385
Update copyright
2021-01-16 18:17:17 +01:00
Romain Thomas
13222b6974
Fix #515
2021-01-04 09:56:19 +01:00
Meir Komet
9dd641d380
added ELF enums for Android relocations and special compiler sections
2020-12-12 00:48:32 -08:00
rthomas
3b7c8fb203
Clean ELF headers
2020-11-20 06:42:23 +01:00
rthomas
8a72f4310e
Update documentation & python bindings
2020-11-18 13:07:21 +01:00
Meir Komet
1851382170
added eBPF file support (compiled to ELF, via new llvm support)
2020-11-07 15:46:28 +01:00
rthomas
081ec5c0e9
Add DF_1_PIE enum
2020-09-23 13:33:42 +02:00
rthomas
5f26216f90
Resolve #455
2020-08-27 09:59:59 +02:00
rthomas
0ade59de75
Add PT_GNU_PROPERTY
2019-12-06 06:22:01 +01:00
rthomas
934d84ffea
Move to Pybind11 v2.4.3 and fix enum conflicts
2019-11-19 06:41:11 +01:00
Romain Thomas
fa3195b1bd
Add API to check if a section associated with an Off/VA exists
2019-05-28 09:47:33 +02:00
Cédric Tessier
9fc3a8a433
Add coredump support in LIEF
2019-04-18 07:17:46 +02:00
Romain Thomas
b26abae9a9
Fix #285
2019-03-25 20:38:28 +01:00
dm
3833e0be9c
Add min_size parameters to Binary::strings function
2019-01-15 07:41:50 +01:00
Romain Thomas
8d7ec26a93
Add ELF ABI Version
2018-12-30 20:27:53 +01:00
Romain Thomas
35b3d039f7
Only relocate section if the original one was not empty.
...
We also introduce ELF API for overlay:
* lief.ELF.Binary.eof_offset
* lief.ELF.Binary.has_overlay
* lief.ELF.Binary.overlay
2018-12-13 09:32:54 +01:00
Romain Thomas
b5a08463ad
Expose API to list functions found in a binary
2018-09-12 14:44:18 +02:00
Romain Thomas
02f4851c9f
Return string located in the .rodata section
...
New API: lief.ELF.Binary.strings / LIEF::ELF::Binary::strings()
2018-07-27 10:56:41 +02:00
Romain Thomas
c6779702b1
Expose Python API to remove ELF static symbols
2018-07-23 13:23:04 +02:00
Romain Thomas
918438c6be
Enable to remove sections using the abstract layer
2018-07-09 15:08:39 +02:00
Romain Thomas
957384cd36
Add ELF dtor functions
2018-06-28 16:49:55 +02:00
Romain Thomas
67d924a220
Add constructor functions in the abstract layer
...
New API:
* LIEF::ELF::Binary::get_relocation
* LIEF::Binary::ctor_functions
2018-06-19 15:27:35 +02:00
Romain Thomas
a9f3cb8f9b
Enable to add relocation associated with symbol
...
Resolve #184
2018-06-19 09:59:29 +02:00
Romain Thomas
cd1cc457cf
Resolve #119 and enhance ELF Python bindings
2018-06-08 10:48:33 +02:00
Romain Thomas
163cd3bcc9
Expose ELF relocation info
2018-06-06 14:13:07 +02:00
yd0b0N
0bbeaa81e9
Add applies_to field to Relocation
...
The field contains a pointer to the Section object
the OBJECT Relocation applies to.
2018-05-03 07:34:46 +02:00
yd0b0N
08b514191f
Add support for PPC32/64 relocations
2018-05-02 15:15:33 +02:00
Romain Thomas
3b17aba10e
Refactor some parts of the Architecture:
...
* JSON visitor are located in the format namespace
* Visitor are *real* visitor
* Visitable class has been renamed to Object
* Due to a bug in Visual Studio 2015, we move to VS2017
2018-03-13 16:49:02 +01:00
Romain Thomas
df3d269e23
Enhance ELF symbols
2018-03-07 12:51:28 +01:00
Romain Thomas
a40da3e3b4
Enable to export and create dynamic symbols
...
New API:
* Binary::{has_dynamic_symbol, has_static_symbol}
* Binary::{get_dynamic_symbol, get_static_symbol}
* Binary::add_exported_function
* Binary::export_symbol
* Symbol::visibility
* SymbolVersion::local / SymbolVersion::global
Resolve #112
2018-02-28 16:18:33 +01:00
Romain Thomas
d13db18214
Support the '.note.android.ident' section
2018-02-28 15:45:46 +01:00
Romain Thomas
1c722d9ff2
Add new ELF relocations
2017-11-25 11:42:00 +01:00
Romain Thomas
aa70e07791
Handle Python BytesIO, TextIO for LIEF' parsers
...
Resolve : #49
2017-11-01 16:44:39 +01:00
Romain Thomas
d421f12e32
Update doc for symbols
2017-10-30 15:34:53 +01:00