blacktop / ipsw

iOS/macOS Research Swiss Army Knife
https://blacktop.github.io/ipsw
MIT License
1.83k stars 144 forks source link

'ipsw dyld slide' Broken on MacOS 15 Beta Shared Cache #499

Open ewalkup opened 3 months ago

ewalkup commented 3 months ago

What happened?

I expected to get a list of pointers, instead I get a bunch of errors when parsing the "objc info" on the dyld slide from the shared cache of the MacOS 15 beta. I'm not sure if this is the same bug as the class-dump bugs, since it's in a different command...thought I would open an issue to make sure.

This error occurs on a machine running the latest MacOS Sonoma (14.5), with the latest production version of XCode (15.4) and its tools, with the latest version of ipsw as shown later in the issue.

 % ipsw dyld slide --auth dyld_shared_cache_arm64e > dyld_auth_slide
   • parsing public symbols...
   • parsing private symbols...
      • cache does NOT contain local symbols
   • parsing objc info...     
   ⨯ failed to get vmaddr for objc object at -0x7b764c0e: offset 0xffffffff8489b3f2 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764be8: offset 0xffffffff8489b418 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764bb1: offset 0xffffffff8489b44f not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764b7b: offset 0xffffffff8489b485 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764b36: offset 0xffffffff8489b4ca not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764b1c: offset 0xffffffff8489b4e4 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764ae8: offset 0xffffffff8489b518 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764aba: offset 0xffffffff8489b546 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764a88: offset 0xffffffff8489b578 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764a6c: offset 0xffffffff8489b594 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764a42: offset 0xffffffff8489b5be not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764a20: offset 0xffffffff8489b5e0 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764a04: offset 0xffffffff8489b5fc not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b7649e9: offset 0xffffffff8489b617 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b7a7e5c: offset 0xffffffff848581a4 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b7649c9: offset 0xffffffff8489b637 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764991: offset 0xffffffff8489b66f not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764963: offset 0xffffffff8489b69d not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764908: offset 0xffffffff8489b6f8 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764880: offset 0xffffffff8489b780 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764858: offset 0xffffffff8489b7a8 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b76482f: offset 0xffffffff8489b7d1 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764809: offset 0xffffffff8489b7f7 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b7647ad: offset 0xffffffff8489b853 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764764: offset 0xffffffff8489b89c not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764745: offset 0xffffffff8489b8bb not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b764724: offset 0xffffffff8489b8dc not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b7646e9: offset 0xffffffff8489b917 not within any mappings file offset range
   ⨯ failed to get vmaddr for objc object at -0x7b7646be: offset 0xffffffff8489b942 not within any mappings file offset range
   .... this continues on for a very long time

How can we reproduce this?

Command: ipsw dyld slide --auth dyld_shared_cache_arm64e Shared Cache extracted from: UniversalMac_15.0_24A5264n_Restore.ipsw

ipsw version

% ipsw version
Version: 3.1.507, BuildCommit: 00d1ee8267258da3a666e65883230313030c3edb

Search

Code of Conduct

Additional context

No response

blacktop commented 3 months ago

should be fixed in latest release, thank you for reporting! ❤️

ewalkup commented 3 months ago

I did get my expected list of pointers with the latest - thanks for the quick turnaround!

There was still this message about missing objc stubs - passing it along in case it needs any additional fixing, I'm not sure:

% ipsw dyld slide --auth dyld_shared_cache_arm64e > dyld_slide
   • parsing public symbols...
   • parsing private symbols...
      • cache does NOT contain local symbols
   • parsing objc info...     
      ⨯ failed to parse objc info: failed to parse objc stubs: macho does not contain __objc_stubs section: missing required ObjC section: Continuing on without it...