Commit Graph

54 Commits

Author SHA1 Message Date
rthomas 3bd530b880 Resolve #476 2020-10-15 09:14:18 +02:00
rthomas 1390f8b090 Add method to query binary's virtual size 2020-10-12 16:25:33 +02:00
rthomas 2e65a94b7c Export binding's original offset 2020-10-09 18:42:52 +02:00
Ray Donnelly 68f6154722 Fix typo BuildeVersion => BuildVersion which may lead to my link failures 2019-12-10 15:42:04 +01:00
Romain Thomas 7e88e2b2c0 Add function to check if a symbol can be removed 2019-02-18 14:17:08 +01:00
Romain Thomas 616d739da5 Enable to remove Mach-O symbols 2019-02-18 14:17:08 +01:00
Romain Thomas 6f967238fc Introduce Mach-O Build Version command
New API:
  LIEF::MachO::BuildVersion
  LIEF::MachO::BuildToolVersion

  LIEF::MachO::Binary::has_build_version
  LIEF::MachO::Binary::build_version
2018-12-13 15:37:19 +01:00
Romain Thomas b5a08463ad Expose API to list functions found in a binary 2018-09-12 14:44:18 +02:00
Romain Thomas 16595316fd Enable write on Fat Mach-O 2018-07-16 13:32:00 +02:00
Romain Thomas 918438c6be Enable to remove sections using the abstract layer 2018-07-09 15:08:39 +02:00
Romain Thomas 406115c8d0 Enhance Mach-O modification
* Add load command
  * Add sections
  * Add segments

Resolve #46 (partially)
2018-06-27 14:44:42 +02:00
Romain Thomas f4e2d81bfe Add Mach-O encryption info command 2018-06-08 16:39:11 +02:00
Romain Thomas 33a2af4b18 Enhance Python binding 2018-06-08 14:58:00 +02:00
Romain Thomas cd1cc457cf Resolve #119 and enhance ELF Python bindings 2018-06-08 10:48:33 +02:00
Romain Thomas 4fcfba0cbf Enhance Dylib version API 2018-05-16 10:35:51 +02:00
Romain Thomas 9e3b5b45f7 Support new Mach-O command:
* Segment split info
  * Sub framework
  * Dyld environment
2018-05-14 16:34:45 +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 4969a4c55a Expose MachO SymbolCommand (LC_SYMTAB) 2018-03-19 16:46:48 +01: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 5d56141061 Show Mach-O opcodes and export-trie 2018-03-02 09:24:59 +01:00
Romain Thomas 9d93cc5ec4 Update API for MachO RPath. Related to 27575527db 2018-01-18 14:41:48 +01:00
Jakob Rieck 196994dc08 Parse the MachO LC_RPATH command 2017-12-15 00:14: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 880b99aeef Provide MachO::ParserConfig to parametrize the parsing.
Resolve: #105
2017-10-30 15:34:53 +01: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 accf47ebf2 Fix performances issues
Fix #94
2017-09-20 13:58:19 +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 8ecaab0a7c Resolve #88 2017-09-07 22:23:57 +02:00
Romain Thomas a4c69f7868 Rename getter from get_XXX to XXX
related to #66
2017-09-07 14:45:41 +02:00
Romain Thomas 9503f2fc7b Add relocation in the Abstract layer
The abstracted attributes are:
  * Address: virtual address where the relocation occurs
  * Size: size in bits of the relocation

See: LIEF::Relocation / lief.Relocation and abstract_reader

Resolve: #53
2017-09-05 22:00:31 +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 cbe8354847 Improve API of Mach-O's Header
API changes:
  - 'has_flag' renamed to 'has'
  - 'add' to add a flag - added
  - 'remove' to remove a flag - added
  - operator+= to add a flag - added
  - operator-= to remove a flag - added
2017-08-01 16:32:49 +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 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 114616b81d Return 0 instead of an exception when the imagebase can't be computed 2017-07-17 17:21:47 +02:00
Romain Thomas 8c7ceafa82 Handle encoding errors (resolve #59) 2017-07-15 15:10:47 +02:00
Adrien Guinet b69fc05107 fat_offset API for MachO binaries within FAT MachO 2017-07-15 14:48:41 +02:00
Adrien Guinet 9de39bf2d9 Add virtual_address_to_offset to MachO::Binary Python API 2017-07-12 07:38:33 -07:00
Romain Thomas 0b4bb7d565 Update doc for Mach-O Source Version 2017-07-08 08:45:29 +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 0e972d69ce Add Mach-O/dyld_info API 2017-07-05 13:43:28 +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 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 a57139afea Fix conflict between OSX uuid_t and LIEF uuid_t 2017-06-24 08:19:04 +02:00