Skip to content

Commit 52efed9

Browse files
committed
Add LICENSE and README
1 parent 16934e6 commit 52efed9

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

LICENSE

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
Copyright (c) 2021 Keith Smiley (http://keith.so)
2+
3+
Permission is hereby granted, free of charge, to any person obtaining a copy of
4+
this software and associated documentation files (the 'Software'), to deal in
5+
the Software without restriction, including without limitation the rights to
6+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
7+
the Software, and to permit persons to whom the Software is furnished to do so,
8+
subject to the following conditions:
9+
10+
The above copyright notice and this permission notice shall be included in all
11+
copies or substantial portions of the Software.
12+
13+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
15+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
16+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

README.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# dyld-shared-cache-extractor
2+
3+
[As of macOS Big Sur][mjtsai], instead of shipping the system libraries
4+
with macOS, Apple ships a generated cache of all built in dynamic
5+
libraries and excludes the originals. This tool allows you to extract
6+
these libraries from the cache for reverse engineering.
7+
8+
## Usage
9+
10+
Extract the default shared cache to `/tmp/libraries`:
11+
12+
```bash
13+
dyld-shared-cache-extractor /System/Library/dyld/dyld_shared_cache_arm64e /tmp/libraries
14+
```
15+
16+
## Installation
17+
18+
```bash
19+
brew install dyld-shared-cache-extractor
20+
```
21+
22+
## More details
23+
24+
There are a few different ways you can interact with these shared
25+
caches.
26+
27+
1. Depending on what you're doing inspecting them in [Hopper][hopper] is
28+
the easiest option
29+
2. For a bit more functionality you can build the
30+
`dyld_shared_cache_util` target from the latest `dyld` [source
31+
dump][dump], but this requires some [modifications][modifications]
32+
33+
The problem with the 2 options above is that they can lag behind format
34+
changes in the shared cache. This tool loads the private
35+
`dsc_extractor.bundle` from Xcode, meaning whichever it should always be
36+
able to extract the newest versions of the file for beta OS versions.
37+
38+
This logic is based on the function at the bottom of
39+
`dyld3/shared-cache/dsc_extractor.cpp` from the `dyld` [source
40+
dump][dump].
41+
42+
[dump]: https://opensource.apple.com
43+
[hopper]: https://www.hopperapp.com
44+
[mjtsai]: https://mjtsai.com/blog/2020/06/26/reverse-engineering-macos-11-0
45+
[modifications]: https://lapcatsoftware.com/articles/bigsur.html

0 commit comments

Comments
 (0)