GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - moraea/dsce: *uncaches your dyld*

BranchesTags
Open more actions menu

Latest commit

 

History

10 Commits
10 Commits

Folders and files

NameName
Last commit message
Last commit date
.gitignore
.gitignore
 
 
Address.h
Address.h
 
 
Address.m
Address.m
 
 
CacheFile.h
CacheFile.h
 
 
CacheFile.m
CacheFile.m
 
 
CacheImage.h
CacheImage.h
 
 
CacheImage.m
CacheImage.m
 
 
CacheSet.h
CacheSet.h
 
 
CacheSet.m
CacheSet.m
 
 
Extern.h
Extern.h
 
 
ImageHeader.h
ImageHeader.h
 
 
ImageHeader.m
ImageHeader.m
 
 
Location.h
Location.h
 
 
Location.m
Location.m
 
 
LocationBase.h
LocationBase.h
 
 
Main.mm
Main.mm
 
 
Output.h
Output.h
 
 
Output.m
Output.m
 
 
Readme.md
Readme.md
 
 
Run.tool
Run.tool
 
 
Selector.h
Selector.h
 
 
Selector.m
Selector.m
 
 

Repository files navigation

dsce

Incomplete macOS 12+ dyld cache extractor. Used by OCLP to support some legacy GPUs and Wi-Fi hardware. Produces working binaries in many cases, but outputs should be treated with extreme suspicion...

credits

  • Apple: dyld, objc4 (prerequisites)
  • Hopper Disassembler: Mach-O inspection, Objective-C struct definitions
  • Mach-O Explorer, MachOView: Mach-O inspection
  • Wikipedia: LEB128
  • Moraea: code, guidance, testing
  • cgudrian: lldb fix

status

  • copy header and load commands
    • allocate space for additional commands (temporarily disabled)
  • copy segments/sections, fixing offsets and alignment
    • optionally pad to keep addresses contiguous (produces 2+ GB images)
  • generate rebase opcodes
    • by applying cache rebase chain
  • generate bind opcodes
    • by scanning rebases for external pointers
      • matching imported dylib exports
      • recursing re-exported dylibs/symbols
    • by restoring uniqued __got section (Ventura)
    • using C++ addend hack
    • from weak/lazy bind info
  • generate exports trie
    • regular
    • re-export
    • stub and resolver
  • copy legacy symbols, indirect symbols, and string table
  • fix Objective-C structures
    • revert selector uniquing
    • revert protocol uniquing
    • fix class, category, and protocol method lists
    • create fake __objc_imageinfo (work around Ventura crash)
  • update UUIDs to D5CE<version>-... for visibility in logs (formerly 416D7900-...)
  • produce fully compliant images
    • satisfy install_name_tool -id test
    • satisfy codesign -fs -
    • satisfy dyld_info -objc
    • satisfy Stubber 2 (nm, Objective-C runtime, linker)
    • satisfy lldb
  • produce working images
    • 12.0 DP6 - GeForceAIRPlugin, GeForceMTLDriver
    • 12.0 DP6 - GeForceGLDriver
    • 12.6 - AppKit, QuartzCore, CoreGraphics, Carbon, RenderBox, VectorKit, Metal, MetalPerformanceShaders, MTLCompiler, GPUCompiler, AppleGVA, AppleGVACore
    • 12.6 - AMDMTLBronzeDriver, AMDShared, AMDRadeonVADriver, AMDRadeonVADriver2
    • 13.2.1 - AppKit, QuartzCore, CoreGraphics, Carbon, RenderBox, VectorKit, Metal, MetalPerformanceShaders, MTLCompiler, GPUCompiler
    • 13.2.1 - libSystem, Foundation, Combine, ContactsFoundation, FamilyCircle...
    • 14.0 DP6 - AppleIntelKBLGraphicsMTLDriver
    • 14.0 DP6 - AppKit, QuartzCore, Metal...
  • support Big Sur
  • support Monterey
  • support Ventura
  • support Sonoma
  • support arm64 (unlikely...)
  • use sane amounts of RAM and CPU (getting closer...)
  • write automated tests to detect regressions

About

*uncaches your dyld*

Resources

Readme
Activity
Custom properties

Stars

102 stars

Watchers

6 watching

Forks

8 forks
Report repository

Releases

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.