Highlights
I know a lot of people don't realize that ipsw
is also the BEST class-dump(er) AND swift-dump(er) out there, so I've created this convenience command to make it easier to use and find for new users.
❯ ipsw class-dump 21C62__iPhone16,2/dyld_shared_cache_arm64e CoreUI --headers --output /tmp/CoreUI
• Creating /tmp/CoreUI/CSIATECHelper.h
• Creating /tmp/CoreUI/CSIBitmapWrapper.h
• Creating /tmp/CoreUI/CSIGenerator.h
• Creating /tmp/CoreUI/CSIHelper.h
• Creating /tmp/CoreUI/CSITextureHelper.h
• Creating /tmp/CoreUI/CUIBackgroundStyleEffectConfiguration.h
• Creating /tmp/CoreUI/CUICatalog.h
• Creating /tmp/CoreUI/CUIColor.h
<SNIP>
//
// Generated by https://github.com/blacktop/ipsw (Version: 3.1.427, BuildTime: 2023-12-11T07:09:44Z)
//
// - LC_BUILD_VERSION: Platform: iOS, MinOS: 17.2, SDK: 17.2, Tool: ld (902.8)
// - LC_SOURCE_VERSION: 866.4.0.0.0
//
#ifndef CUICatalog_h
#define CUICatalog_h
@import Foundation;
@interface CUICatalog : NSObject {
/* instance variables */
NSMapTable *_storageMapTable;
NSBundle *_bundle;
NSString *_assetStoreName;
NSCache *_lookupCache;
NSCache *_negativeCache;
NSCache *_localObjectCache;
NSDictionary *_vibrantColorMatrixTints;
NSArray *_assetCatalogLocalizations;
unsigned short _preferredLocalization;
unsigned int x :1 _purgeWhenFinished;
unsigned int x :2 _fileHasDisplayGamutInKeySpace;
unsigned int x :28 _reserved;
}
@property (nonatomic) unsigned long long storageRef;
/* class methods */
+ (id)bestMatchUsingImages:(id)images scaleFactor:(double)factor deviceIdiom:(long long)idiom deviceSubtype:(unsigned long long)subtype displayGamut:(unsigned long long)gamut layoutDirection:(unsigned long long)direction sizeClassHorizontal:(long long)horizontal sizeClassVertical:(long long)vertical;
+ (id)defaultUICatalogForBundle:(id)bundle;
+ (id)bestMatchUsingImages:(id)images scaleFactor:(double)factor deviceIdiom:(long long)idiom deviceSubtype:(unsigned long long)subtype;
+ (id)bestMatchUsingImages:(id)images scaleFactor:(double)factor deviceIdiom:(long long)idiom deviceSubtype:(unsigned long long)subtype sizeClassHorizontal:(long long)horizontal sizeClassVertical:(long long)vertical;
+ (id)bestMatchUsingImages:(id)images scaleFactor:(double)factor deviceIdiom:(long long)idiom displayGamut:(unsigned long long)gamut deviceSubtype:(unsigned long long)subtype sizeClassHorizontal:(long long)horizontal sizeClassVertical:(long long)vertical;
+ (id)bestMatchUsingObjects:(id)objects getAttributeValueUsing:(id /* block */)using scaleFactor:(double)factor deviceIdiom:(long long)idiom deviceSubtype:(unsigned long long)subtype displayGamut:(long long)gamut deploymentTarget:(long long)target layoutDirection:(long long)direction sizeClassHorizontal:(long long)horizontal sizeClassVertical:(long long)vertical memoryClass:(long long)class graphicsFeatureSetClass:(long long)class graphicsFallBackOrder:(id)order deviceSubtypeFallBackOrder:(id)order;
+ (id)bestMatchUsingObjects:(id)objects getAttributeValueUsing:(id /* block */)using scaleFactor:(double)factor deviceIdiom:(long long)idiom deviceSubtype:(unsigned long long)subtype displayGamut:(long long)gamut deploymentTarget:(long long)target layoutDirection:(long long)direction sizeClassHorizontal:(long long)horizontal sizeClassVertical:(long long)vertical memoryClass:(long long)class graphicsFeatureSetClass:(long long)class graphicsFallBackOrder:(id)order deviceSubtypeFallBackOrder:(id)order platform:(long long)platform;
+ (BOOL)isValidAssetStorageWithURL:(id)url;
+ (BOOL)isValidLCRWithBytes:(const void *)bytes length:(unsigned long long)length;
+ (struct CGColor *)newColorByAdjustingLightnessOfColor:(struct CGColor *)color darker:(BOOL)darker;
/* instance methods */
- (void)dealloc;
- (id)_baseKeyForName:(id)name;
- (id)imagesWithName:(id)name;
- (id)_baseImageKeyForName:(id)name;
- (id)debugDescription;
- (unsigned long long)_storageRefForRendition:(id)rendition representsODRContent:(BOOL *)odrcontent;
- (id)initWithURL:(id)url error:(id *)error;
- (id)allImageNames;
- (id)initWithName:(id)name fromBundle:(id)bundle error:(id *)error;
- (BOOL)containsLookupForName:(id)name;
- (id)appearanceNames;
- (void)clearCachedImageResources;
- (id)colorWithName:(id)name displayGamut:(long long)gamut deviceIdiom:(long long)idiom;
- (id)colorWithName:(id)name displayGamut:(long long)gamut deviceIdiom:(long long)idiom appearanceName:(id)name;
- (id)dataWithName:(id)name;
<SNIP>
@end
#endif /* CUICatalog_h */
Changelog
New Features
- 22d2dee: feat: add support for reexports in
ipsw dsc tbd
command (@blacktop) - 84ac8cf: feat: initial
ipsw class-dump --headers
to dump all the ObjC headers (@blacktop)
Bug fixes
- 80d488b: fix: minor reorg of
ipsw class-dump
cmd (@blacktop) - 52f4cf4: fix: support for fat machos in
ipsw class-dump
cmd (@blacktop)
Dependency updates
- 65ac1e8: chore(deps): bump actions/setup-go from 4 to 5 (#368) (@dependabot[bot])
- 0142f8a: chore(deps): bump deps (@blacktop)
- 6b7a95e: chore(deps): bump github.com/alecthomas/chroma/v2 from 2.11.1 to 2.12.0 (#367) (@dependabot[bot])
- edab45e: chore(deps): bump go-macho (@blacktop)
- 46ca3ba: chore(deps): bump ubuntu from 23.10 to 24.04 (#366) (@dependabot[bot])
- 36fb5ab: chore(deps): bump viper (@blacktop)
Documentation updates
Other work
- 667a79e: chore: move objc check to outer cmd (@blacktop)
- 795fb23: chore: working on 🆕
class-dump
andswift-dump
convenience cmds (@blacktop)
Summary
Full Changelog: v3.1.426...v3.1.427
What to do next?
- Read the documentation
- Follow us on Twitter
- Follow us on Mastodon