36 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
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
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
eab4a7614f Parse PE Code View (PDB 7.0)
Resolve: #138
2018-02-17 12:50:10 +01:00
Jakob Rieck
196994dc08 Parse the MachO LC_RPATH command 2017-12-15 00:14:00 +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
66b4cd4550 Fix enums conflicts
Enums changes (C++/C):

ELF:
  * s/SECTION_TYPES/ELF_SECTION_TYPES/
  * s/SECTION_FLAGS/ELF_SECTION_FLAGS/
  * s/SYMBOL_TYPES/ELF_SYMBOL_TYPES/
  * s/SEGMENT_FLAGS/ELF_SEGMENT_FLAGS/

MachO:
  * s/SECTION_TYPES/MACHO_SECTION_TYPES/
  * s/SECTION_FLAGS/MACHO_SECTION_FLAGS/
  * s/SYMBOL_TYPES/MACHO_SYMBOL_TYPES/
  * s/SEGMENTS_FLAGS/MACHO_SEGMENTS_FLAGS/

PE:
  * s/SECTION_TYPES/PE_SECTION_TYPES/

Resolve #32
2017-08-21 09:23:40 +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
e2b81e0a8e Parse MachO Dyld Info, add Python API and update doc 2017-07-04 14:46:48 +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
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
86b2963e96 Fix missing entries in the documentation 2017-05-01 16:24:27 +02:00
Romain Thomas
d977158794 Fix typos 2017-04-06 17:49:33 +02:00
Romain Thomas
306a191a03 First public release 2017-03-30 16:56:49 +02:00