Commit Graph

805 Commits

Author SHA1 Message Date
Romain Thomas 69219fdbe7 pe: add setters for iat_value/ilt_value 2026-03-20 16:27:47 +01:00
Romain Thomas d1382c1863 Bootstrap runtime options 2026-03-20 15:40:36 +01:00
Romain Thomas 7ac083bb73 Add contextmanager API for log level 2026-03-19 07:56:02 +01:00
Romain Thomas f986c6dd17 Resolve #1318 2026-03-17 17:11:44 +01:00
Romain Thomas cfdcc42fcd Fix warnings 2026-03-17 17:11:39 +01:00
Romain Thomas 22894bef5b clang-tidy fixes 2026-03-17 16:13:57 +01:00
Romain Thomas e1844d4ecc Add check_layout for ELF
This commit implements the check_layout function for ELF binaries
similar to PE and Mach-O. This function aims to ensure that the
ELF binary is consistent according to various loader (e.g., Linux, Android)
2026-03-17 08:30:21 +01:00
Itamar Gafni 6f21d3902a fix(PE): Add bounds to import thunk parsing to prevent hangs
The import thunk loop in Parser.tcc has no iteration limit and calls
peek_string_at() with no max length. A malformed PE with an unterminated
IAT causes the loop to process hundreds of thousands of fake entries,
each triggering multi-megabyte string reads — hanging indefinitely.

This is a DoS vector against any system using LIEF for PE analysis.

Fixes:
1. Cap the thunk loop at MAX_IMPORT_ENTRIES (65536) per DLL
2. Bound peek_string_at to MAX_IMPORT_NAME_SIZE (4096) bytes
3. Warn when the limit is hit so users know the IAT was truncated

Follows the existing pattern used by MAX_TLS_CALLBACKS and
MAX_RELOCATION_ENTRIES.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 09:45:25 +01:00
Romain Thomas 3847142f1e add support to create a FAT MachO from binaries
Resolve: #1271
2026-03-08 14:10:57 +01:00
lief-agent 83bdf9c8d4 Add support for ELF DT_AUXILIARY and DT_FILTER
Resolve #1159
2026-03-08 11:33:50 +01:00
Charles Bousseau 63d5500ee7 Add TLSDESC_PLT and TLSDESC_GOT to ELF dynamic tags (#1311)
* Add TLSDESC_PLT and TLSDESC_GOT to ELF dynamic tags

---------

Co-authored-by: Romain Thomas <me@romainthomas.fr>
2026-03-07 20:57:50 +01:00
lief-agent cbf06a5033 update the documentation 2026-02-28 11:07:12 +01:00
Romain Thomas b4e355f532 Update the iterator interface to provide a hint on its length 2026-02-22 05:06:36 +01:00
Romain Thomas 8b659ba3ec better support for EFI/PE-COFF binary like bzImage
resolve #1293
2026-02-15 17:20:45 +01:00
Romain Thomas e4ceecd6c4 Add support to insert an import at a specific position
close #1298
2026-02-14 11:09:22 +01:00
Romain Thomas 9c4204a358 Enhance API for MachO fileset
Fix #1297
2026-02-14 11:09:17 +01:00
Romain Thomas 28d64ba71b initial support to generate C/C++ code from DWARF/PDB 2026-02-14 11:08:59 +01:00
Romain Thomas 64d13d63e6 enhance the API for PDB LF_ONEMETHOD 2026-02-14 11:08:50 +01:00
Romain Thomas 3b012a0a7f enhance API for PDB _simple_ types 2026-02-14 11:08:45 +01:00
Romain Thomas b19a17ee89 enhance API for PDB LF_ARRAY 2026-02-14 11:07:30 +01:00
Romain Thomas b5fd54aab4 enhance API for PDB LF_PROCEDURE 2026-02-14 11:07:24 +01:00
Romain Thomas f23d3bccd4 enhance API for PDB LF_ENUM 2026-02-14 11:06:19 +01:00
Romain Thomas a89d452efa Add API to access a PDB from its index 2026-02-14 10:55:28 +01:00
Romain Thomas b0502c94d0 Ghidra - Support DWARF generation for raw binaries/firmware
This commit introduces support for generating DWARF debug information
for binaries that LIEF cannot natively parse (e.g., raw firmware or unknown architectures).

Related to #1249
2026-02-14 10:55:23 +01:00
Romain Thomas 38e5565568 Abstract pdb::Type::{size, name} 2026-02-14 10:55:16 +01:00
Romain Thomas 6c0f19af19 Fix missing file 2026-02-14 09:47:49 +01:00
Romain Thomas 0291fe7236 Fix Windows #define issue
`std::numeric_limits<uint16_t>::max()` can conflict with `#define max`
defined by Windows in `minwindef.h`. Since we are in a public header,
forcing `NOMINMAX` should not be considered.
2026-02-14 09:47:11 +01:00
Romain Thomas 0b14561dc9 Add IMAGE_SUBSYSTEM_XBOX_CODE_CATALOG 2026-01-31 13:40:10 +01:00
Romain Thomas b60bd4de88 Improve the logic of ELF's symtab parsing
Resolve #1288
2026-01-31 10:47:50 +01:00
Romain Thomas 3d699730c2 Add API to select a Mach-O binary by architecture from a FAT binary
Close #1283
2026-01-25 13:34:07 +01:00
Romain Thomas fd6b2c70c5 LLVM 22 Update 2026-01-24 17:18:48 +01:00
Romain Thomas 119415c7d0 Inline functions 2026-01-24 09:42:59 +01:00
Romain Thomas a9cda0e0bc Fix visibility 2026-01-24 09:39:45 +01:00
Romain Thomas 21cf565261 Update copyright 2026-01-11 22:04:09 +01:00
Laurent ca86140c13 Add missing segments in X86_64 coredump parser (#1278)
* Add missing segments in x86_64 coredump parser

* Add missing x86_64 segments in Python bindings

* Add typing

---------

Co-authored-by: Lo <llaubin@quarkslab.com>
Co-authored-by: Romain Thomas <me@romainthomas.fr>
2026-01-02 18:35:37 +01:00
Romain Thomas 683782d878 Enable instantiation of DWARF editor from format and arch 2026-01-02 13:56:24 +01:00
Romain Thomas ab5078fcd3 Add bitfields support 2026-01-02 08:27:33 +01:00
Romain Thomas 107d9c51c5 Resolve #1265 2026-01-01 20:20:11 +01:00
Romain Thomas 4196d2fdbf Add bindings for the binarystream interfaces 2025-11-12 12:20:38 +01:00
Tim Schumacher 21eafecbf5 Ensure that added DYN ELF sections are properly aligned (#1266)
The in-page offset from the source segment is now kept, since changing
it may change the semantics of certain types of contents (e.g. ARM64
executable code relying on ADRP instructions).

Additionally, the virtual address of a segment is now properly aligned
in accordance with p_align instead of being hardcoded at the page size.


Fixes: d717340c9 ("Improve the logic of sections insertion in ELF binaries")

Co-authored-by: Thomas Wachter <thomas.wachter@huawei.com>
2025-11-11 17:42:31 +01:00
Romain Thomas 6f8ec24955 Add function to find enum entry by value 2025-11-08 13:24:49 +01:00
Antoine Prouvost bdc467feda Add missing visibility (#1254) 2025-10-18 05:46:43 +02:00
Romain Thomas 7b36cbd8aa Expose is_stack_based for DWARF variables 2025-10-12 10:40:37 +02:00
Romain Thomas 00619e2ed7 Add support to access or set Enum's underlying type" 2025-10-12 10:40:26 +02:00
Romain Thomas 7fbc31cd81 Add support for DWARF Enum entries 2025-10-04 18:49:51 +02:00
Romain Thomas c60f02e9c2 Reorder includes 2025-10-04 18:45:47 +02:00
Romain Thomas be775c7185 Fix missing return type 2025-10-04 09:11:44 +02:00
Romain Thomas f6cd5db689 Enhance DWARF support to support DW_AT_description and LexicalBlock. 2025-10-04 08:29:19 +02:00
Romain Thomas 55878992fc Add LIEF::COFF:Section::coff_string 2025-10-04 07:57:42 +02:00
Romain Thomas 3f406b640b Add support to assign a register to a function parameter 2025-09-21 09:58:04 +02:00