46 Commits

Author SHA1 Message Date
Romain Thomas
4ef1bb845f Add new formats: OAT, DEX, VDEX, ART 2018-05-04 12:46:28 +02:00
Romain Thomas
a16e1c4d13 Expose DataInCode 2018-04-02 08:21:15 +02:00
Romain Thomas
9cadce30e7 Expose basic structure of code signature 2018-04-02 08:21:15 +02:00
Romain Thomas
237611f859 Expose the Dynamic symbol command 2018-03-28 16:14:56 +02:00
Romain Thomas
5a6448c00d Explicit is better than implicit:
Add api to specify if the virtual address given to
LIEF::Binary::patch_address or
LIEF::Binary::get_content_from_virtual_address
is relative or absolute
2018-03-27 15:36:08 +02:00
Romain Thomas
4969a4c55a Expose MachO SymbolCommand (LC_SYMTAB) 2018-03-19 16:46:48 +01:00
Francisco Falcon
eaf1713b81
LoadConfigurationV5 doc fix
Tiny documentation fix: LoadConfigurationV5 was showing the documentation for the LoadConfigurationV4 class.
2018-03-09 22:46:23 -03:00
Romain Thomas
5d56141061 Show Mach-O opcodes and export-trie 2018-03-02 09:24:59 +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
49a2e40bf3 Add CODE_VIEW_SIGNATURES in the doc 2018-02-17 14:06:29 +01:00
Romain Thomas
eab4a7614f Parse PE Code View (PDB 7.0)
Resolve: #138
2018-02-17 12:50:10 +01:00
Romain Thomas
463e471b33 Fix extra spaces 2018-02-15 09:06:47 +01:00
Romain Thomas
3e704e78c5 Add "ResourceDialogItem" in the Python PE documentation
Related to #139
2018-02-14 22:16:24 +01:00
Jakob Rieck
196994dc08 Parse the MachO LC_RPATH command 2017-12-15 00:14:00 +01:00
Romain Thomas
ba7dfeab39 Update doc 2017-11-01 20:34:20 +01:00
Romain Thomas
880b99aeef Provide MachO::ParserConfig to parametrize the parsing.
Resolve: #105
2017-10-30 15:34:53 +01:00
Romain Thomas
ef95d0ab69 Add changelog and bump to v0.8.0 2017-10-14 21:16:32 +02:00
Romain Thomas
0234e3b8bb Parse the PE Load Configuration structure 2017-10-06 07:55:58 +02:00
Romain Thomas
3602643f5d Fix memory leaks in the MachO Python API and create FatBinary
API Changes:

LIEF::MachO::Parser won't return a 'std::vector' of MachO::Binary*
but a pointer to MachO::FatBinary object
It's a kind of wrapper on std::vector<MachO::Binary*>
2017-09-29 13:06:08 +02:00
Romain Thomas
23257830b2 Parse the MachO LC_THREAD/LC_UNIXTHREAD command
New object: MachO::ThreadCommand

Resolve: #89
2017-09-13 17:42:05 +02:00
Romain Thomas
754b8afa2b Add object (ELF::DynamicEntryFlags) for ELF's DT_FLAGS and DT_FLAGS_1 2017-08-01 15:22:01 +02:00
Romain Thomas
f721d02d91 Update doc 2017-08-01 10:18:16 +02:00
Romain Thomas
4600c2ba8d Provide API to configure the LIEF's logger
API changes:

  LIEF::Logger::{set_level, set_verbose_level...}

Resolve: #68
2017-07-31 15:16:02 +02:00
Romain Thomas
782295bfb8 Parser Dyld Info in depth (binding, rebases, exports)
Binding and rebase bytes codes are now parsed as well as export info
trie. Through ``RelocationDyld`` we created kind of *virtual* relocation
to modeling relocation process performed by Dyld

API Changes (Python / C++)
  * MachO::RelocationDyld   - Added
  * MachO::RelocationObject - Added
  * MachO::Relocation       - Updated according to previous ones

  * MachO::ExportInfo       - Added
  * MachO::BindingInfo      - Added

  * MachO::DyldInfo::rebase_opcodes    - Added
  * MachO::DyldInfo::bindings          - Added
  * MachO::DyldInfo::bind_opcodes      - Added
  * MachO::DyldInfo::weak_bind_opcodes - Added
  * MachO::DyldInfo::lazy_bind_opcodes - Added
  * MachO::DyldInfo::exports           - Added
  * MachO::DyldInfo::export_trie       - Added

  * MachO::Symbol
    - Tied to MachO::BindingInfo (if any)
    - Tied to MachO::ExportInfo (if any)

  * MachO::Binary::relocations - Added
  * MachO::Binary::has_symbol  - Added
  * MachO::Binary::get_symbol  - Added

Resolve: #67
2017-07-30 17:29:09 +02:00
Romain Thomas
5b993117ed Parse Mach-O 'Version Min' command
Resolve: #44
2017-07-27 15:50:55 +02:00
Romain Thomas
f330fa887d Improve parser API
API Changes:
  - lief.parse() can takes a list of integer as entry
  - LIEF::MachO::parse can take a std::vector<uint8_t> as entry

Related to #49
2017-07-27 15:46:03 +02:00
Romain Thomas
cbd1aed703 Update doc with ELF's relocations 2017-07-25 08:09:15 +02:00
Romain Thomas
9391238f11 Add the underlying executable format in the abstract layer
API changes (Python/C++):
  * lief.Binary.format
  * LIEF::ELF::Binary::format()
2017-07-22 08:23:17 +02:00
Romain Thomas
29c8157ecc Parse Mach-O relocations and add MachO API to retrieve section from name
API Update:
  lief.MachO.Section.relocations - to access to the relocations
  lief.MachO.binary.get_section - Get section from name
  lief.MachO.binary.has_section -Check if section with given name exists

Resolve #57
2017-07-17 17:27:28 +02:00
Romain Thomas
a89bc6df4f Add import hash function as well as ordinal resolver functions (PE part)
For PE binary it's now possible get the *imphash* value through the
lief.PE.get_imphash function. It's also possible to resolve ordinals
imports by using the lief.PE.resolve_ordinals

Resolve #54
2017-07-16 18:02:54 +02:00
Romain Thomas
b7b0bde4d5 Add a *purpose* property to ELF relocations
Adding such property enables to store plt/got and dynamic relocations
in a same container. (related to #51)
2017-07-11 11:22:21 +02:00
Romain Thomas
c359778194 Parse LC_SOURCE_VERSION. Resolve #45 2017-07-07 21:21:22 +02:00
Romain Thomas
18d89198a0 Parse MachO LC_FUNCTION_STARTS 2017-07-07 08:43:42 +02:00
Romain Thomas
e2b81e0a8e Parse MachO Dyld Info, add Python API and update doc 2017-07-04 14:46:48 +02:00
Romain Thomas
c0bb618307 Update doc 2017-07-01 18:35:10 +02:00
Romain Thomas
744c24518c Add the endianness in the abstraction layer (resolve #29) 2017-06-28 07:50:00 +02:00
Romain Thomas
8ddc71d337 Parse PE Rich Header (resolve #15) 2017-06-27 09:12:40 +02:00
Romain Thomas
b37c608cbd Enhance MachO API
* Add API to retrieve UUID, Main, Dylinker command
* Add Python API for UUID, Main, Dylinker command
2017-06-25 19:34:45 +02:00
Romain Thomas
907e853b18 Fix some ambiguous API (fix #27)
PE::Binary::get_content_from_virtual_address can now take either:
  Absolute Virtual Address / Relative Virtual Address

In the PE Python API:
  * Merge 'PE.parse_from_raw' and 'PE.parse'
  * Change 'PE.Binary.section_from_virtual_address' to 'PE.Binary.section_from_rva'

In the PE C++ API:
  * Change 'Binary::section_from_virtual_address' to 'Binary::section_from_rva'
2017-06-25 15:11:47 +02:00
Romain Thomas
733053bc63 Enhance PE resources
* Improve Resource Manager
* Fix bug when rebuilding resources (aligment issue)
* Provide a Python API to access to the resource tree
* Pretty print lang/sublang of resources
* Parse resource dialog
* Parse resource icons
* Parse resource version
* Add tests on the resource builder
* Add tutorial (related to #28)
2017-06-11 16:47:16 +02:00
Romain Thomas
a8e1e40e1e Update doc 2017-06-11 16:21:30 +02:00
Romain Thomas
77d43f9db4 Fully handle section-less ELF binaries
* Fix #25
  * ELF `tiny` binaries are now handled (see #7)
  * Computation of dynamic symbols can be done with differents methods:
    hash table, sections and relocations. (See LIEF::ELF::DYNSYM_COUNT_METHODS)
  * ELF parser can be configured to use one of the DYNSYM_COUNT_METHODS
  * Improve tests
2017-05-06 16:18:02 +02:00
Romain Thomas
2ded57e676 Improve documentation 2017-04-29 10:45:26 +02:00
Romain Thomas
cb65fe95b0 Add missing documentation for GnuHash object 2017-04-06 13:42:19 +02:00
Romain Thomas
306a191a03 First public release 2017-03-30 16:56:49 +02:00