49 Commits

Author SHA1 Message Date
Devin Vaukz
245a5d5d3c Fix tests for arm64e binaries
dyldinfo returns no output when run with `-arch arm64e`.  Add a workaround.
2021-07-04 18:25:35 -07:00
Devin Vaukz
59d17f64f2 Correctly handle arm64e cpu subtypes 2021-06-30 23:23:48 -07:00
Devin Vaukz
3dd98b585b Update platforms enum 2021-06-30 22:46:57 -07:00
Devin Vaukz
ffebfb2086 Update for Xcode 12.2, Raise iOS target to 9.0
Xcode 12 no longer supports deploying to iOS 8.0.  Also fix analyzer warnings, handle another small change in otool output, etc.
2020-11-22 13:59:03 -08:00
Devin Vaukz
5c5246fb49 Refactor MKDataModel
MKDataModel is now a semi-abstract base class instead of a protocol.  This allows extension via category.  Instances of MKDataModel can be chained together via a datasource argument, which enables data models to be composed.
2020-11-22 12:54:23 -08:00
Devin Vaukz
10d482fadd [TESTS] Parser fixes for latest otool ObjC output 2020-11-21 23:45:12 -08:00
Devin Vaukz
50ac6e974b Add tests to verify child elements of certain nodes are sorted by address
https://github.com/DeVaukz/MachO-Kit/pull/13#discussion_r456761315
2020-11-01 18:32:02 -08:00
Devin Vaukz
c60b912647 Fix unit tests on Catalina
Foundation no longer has a 32-bit slice
2020-11-01 12:49:13 -08:00
Milen Dzhumerov
fb8f4a87c8 Adjust mk_load_command_linker_option_copy_string semantics
The function now copies partial strings and handles empty output
buffers (NULL or zero length).
2020-08-19 21:47:34 +01:00
Milen Dzhumerov
45204f13bd Use bool type instead of char for LC_LINKER_OPTION enumeration block 2020-08-18 21:33:10 +01:00
Milen Dzhumerov
0d29d48b55 Add functions for LC_LINKER_OPTION load commands 2020-08-15 22:26:27 +01:00
Devin Vaukz
20f5fe2645 Fix mk_vm_address_remove_slide underflow detection 2020-05-29 21:11:28 -07:00
Devin Vaukz
c33814ca12 Fix some unit test warnings 2020-05-16 09:23:15 -07:00
Devin Vaukz
ee46e3d3bd Stop using @import
@import causes problems when Mach-O Kit is used in an Objective-C++ project.
2020-05-10 11:11:42 -07:00
Devin Vaukz
51ed099100 [libMachO] Support deriving the image slide 2020-05-08 21:56:47 -07:00
Devin Vaukz
28ff088cec Support thumb functions/symbols 2019-04-27 16:16:48 -07:00
Devin Vaukz
9f7ad02c5a [arm64e] Handle threaded bind actions 2019-04-24 21:43:29 -07:00
Devin Vaukz
95d212ddd0 Parse the ‘pad’ field in LC_ENCRYPTION_INFO_64 2019-04-14 10:08:27 -07:00
Devin Vaukz
7e73a3ef52 Fix misc. issues with the unit tests 2019-04-10 21:09:42 -07:00
Devin Vaukz
9915a72856 [Symbols] Add unit tests 2019-04-07 21:53:39 -07:00
Devin Vaukz
7acd4bde96 Parse Data In Code Entries 2019-04-02 21:53:01 -07:00
Devin Vaukz
776e75bf7b Update unit tests for otool changes in Xcode 10 2018-12-30 20:00:11 -08:00
Devin Vaukz
821d25e67e Support partial matching in NodeFieldOptionSetType 2018-08-01 21:05:58 -07:00
Devin Vaukz
714eb9f4c8 [Symbols] Rework indirect symbol table parsing 2018-04-09 21:38:28 -07:00
Devin Vaukz
556736202a [libMachO] More unit tests 2018-04-07 12:47:35 -07:00
Devin Vaukz
192886a003 [libMachO] Improve comments and errors 2018-04-05 22:21:10 -07:00
Devin Vaukz
52af80617a [libMachO] Improve memory map comments and errors 2018-03-28 22:22:12 -07:00
Devin Vaukz
c237e45e87 Fix Analyzer warnings 2018-03-08 19:44:02 -08:00
Devin Vaukz
f14dc63f20 Workaround: NSNumber can not store unsigned values
NSNumber does not store unsigned values *as unsigned*.  When initialized with an unsigned number, NSNumber stores it as signed using the next highest bit-width.

This is a problem for Mach-O Kit’s description system, parts of which expect that the objCType of an NSNumber will exactly correspond to the primitive type that NSNumber was initialized with.

The workaround is to define a custom NSNumber subclass for storing unsigned values.  A new macro `_$()` is added to replace `@()` for boxing primitive numbers.  `_$()` uses the  MK NSNumber subclass where appropriate.
2018-03-01 21:51:23 -08:00
Devin Vaukz
3869aa09cf Add MKComboFormatter
MKComboFormatter is used to combine a raw value representation and a refined value representation.  This could be used for presenting enumerations, where you want to display the raw (numeric) value and the corresponding element from the enumeration.  For example:

1 (REBASE_TYPE_POINTER)
2018-02-25 17:13:31 -08:00
Devin Vaukz
5039c7a3b4 Begin adding unit tests for the custom formatters 2018-02-23 21:45:49 -08:00
Devin Vaukz
c5908ea44d Parse Mach-O Function Starts 2018-01-18 20:14:56 -08:00
Devin Vaukz
8f9d024085 Cleanup & refactor the Mach-O bindings info parser
* Adopt MKULEBRead()
* Adopt MKAddressedNode for MKBindAction
* Adopt MKOptional
* Improve the API and header documentation
* Improve errors
* Fix a memory leak
2018-01-07 12:50:27 -08:00
Devin Vaukz
db37d9c514 Parse Mach-O Exports 2018-01-06 15:36:12 -08:00
Devin Vaukz
d8f2d5434e Parse Mach-O bindings 2017-12-24 15:43:45 -06:00
Devin Vaukz
5e2665fb6a Rebase command/fixup bugfixes
* Fixes an issue identifying the section of a fixup at the beginning of a section.
* [TESTS] Works around an issue when invoking dyldinfo with -arch x86_64.
* [TESTS] Fixes an issue parsing dyldinfo -dylibs output.
2017-12-24 10:38:41 -06:00
Devin Vaukz
f684a09961 Add support for parsing ObjC meatadata 2017-12-20 13:40:21 -08:00
Devin Vaukz
e86f98c6be Update otool output parser for Xcode 8 2016-10-10 21:01:53 -07:00
Devin Vaukz
e21889c583 Fix Unit Test build errors 2016-10-10 20:42:01 -07:00
Devin Vaukz
933949fe7e Parse fix-up addresses. 2016-04-09 23:33:12 -07:00
Devin Vaukz
6e2cdfca8e Parse Mach-O rebase commands 2016-02-20 22:54:48 -08:00
Devin Vaukz
eb28a2da44 Automatically determine slide of an image; cleanup 2016-02-20 22:43:13 -08:00
Devin Vaukz
9cc01190c3 Initial Support for parsing dyld's shared cache 2015-08-01 20:18:00 -07:00
Devin Vaukz
83641e79bb Further refine the libMachO API 2015-02-21 13:14:33 -08:00
Devin Vaukz
73cbb27d9e Make the libMachO API less terrible. 2015-02-16 23:01:45 -08:00
Devin Vaukz
c93ad6c166 Segment + Section cleanup. 2015-02-15 22:06:52 -08:00
Devin Vaukz
aff89d0612 Begin implementing segment parsing in libMachO 2015-02-14 11:00:17 -08:00
Devin Vaukz
4bed686a9d First attempt at a MachOKit<->libMachO bridge. 2015-02-07 20:39:39 -08:00
Devin Vaukz
1dec4df4a1 Initial Commit 2015-01-31 11:05:29 -08:00