Files
lief-project-LIEF/api/python
Richard Dzenis 259bf7091f MachO::binary: add extend_section (#1137)
* MachO::Binary::add_section: respect alignment of empty sections

* MachO/layout_check: relax offset continuity requirement for __text section

Sections in MachO are prepended, but __text section is not moved.
Due to this there might be redundant gap between __text section and a
section that comes before __text.

Note: we don't want to alter distance between __DATA and __text, because
there might be position relative references in metadata.

* tests/macho: use lief.MachO.check_layout

* MachO::binary: add extend_section

This commit adds member function MachO::Binary::extend_section that is
able to extend sections from the first segment in MachO.

* macho/test_builder: add test_extend_section
2024-12-24 09:58:47 +01:00
..
2024-12-12 21:06:18 +01:00
2024-11-02 16:42:41 +01:00
2024-07-06 07:14:52 +02:00
2024-12-10 05:30:37 +01:00
2023-11-09 06:26:56 +01:00
2024-12-09 10:46:36 +01:00

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++, Python and Rust

LIEF Extended:

  * DWARF/PDB Support
  * Objective-C Metadata
  * dyld shared cache

Checkout: https://lief.re/doc/latest/extended/intro.html for the details

Getting Started
================

.. code-block:: console

  $ pip install lief

.. code-block:: python

  import lief

  elf = lief.ELF.parse("/bin/ls")
  for section in elf.sections:
      print(section.name, len(section.content))

  pe = lief.PE.parse("cmd.exe")
  for imp in pe.imports:
      print(imp.name)

  fat = lief.MachO.parse("/bin/dyld")
  for macho in fat:
      for sym in macho.symbols:
          print(sym)

Documentation
=============

* `Main documentation <https://lief.re/doc/latest/index.html>`_
* `API <https://lief.re/doc/latest/api/python/index.html>`_

Contact
=======

* **Mail**: contact at lief.re
* **Discord**: `LIEF <https://discord.gg/jGQtyAYChJ>`_

Authors
=======

Romain Thomas `@rh0main <https://x.com/rh0main>`_

----

LIEF is provided under the `Apache 2.0 license <https://github.com/lief-project/LIEF/blob/0.15.1/LICENSE>`_