From 128ab6c60ff6bee8ae9f96bd2295600e49a9c7c2 Mon Sep 17 00:00:00 2001 From: Alex Gray Date: Mon, 2 Jun 2014 17:24:16 -0400 Subject: [PATCH 1/3] added a description function and gui representation --- ImageLogger.xcodeproj/project.pbxproj | 52 +----- ImageLogger/Base.lproj/MainMenu.xib | 229 +++++++++++++++++++++---- ImageLogger/LLAppDelegate.h | 6 +- ImageLogger/LLAppDelegate.m | 81 ++++++++- ImageLogger/en.lproj/Credits.rtf | 29 ---- ImageLogger/en.lproj/InfoPlist.strings | 2 - ImageLogger/main.m | 14 -- Shared/LLImageLogger.h | 3 + Shared/LLImageLogger.m | 132 +++++++++----- 9 files changed, 378 insertions(+), 170 deletions(-) delete mode 100644 ImageLogger/en.lproj/Credits.rtf delete mode 100644 ImageLogger/en.lproj/InfoPlist.strings delete mode 100644 ImageLogger/main.m diff --git a/ImageLogger.xcodeproj/project.pbxproj b/ImageLogger.xcodeproj/project.pbxproj index a80505a..4e37d92 100644 --- a/ImageLogger.xcodeproj/project.pbxproj +++ b/ImageLogger.xcodeproj/project.pbxproj @@ -10,10 +10,6 @@ 6D19D0CD18E85FF20094D1B0 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D19D0CC18E85FF20094D1B0 /* UIKit.framework */; }; 6D19D1A418E8C1C50094D1B0 /* LLImageLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D19D1A318E8C1C50094D1B0 /* LLImageLogger.m */; }; 6D19D1A518E8C1CA0094D1B0 /* LLImageLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D19D1A318E8C1C50094D1B0 /* LLImageLogger.m */; }; - 6D53E3C418E4384C002B3680 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D53E3C318E4384C002B3680 /* Cocoa.framework */; }; - 6D53E3CE18E4384C002B3680 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6D53E3CC18E4384C002B3680 /* InfoPlist.strings */; }; - 6D53E3D018E4384C002B3680 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D53E3CF18E4384C002B3680 /* main.m */; }; - 6D53E3D418E4384C002B3680 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 6D53E3D218E4384C002B3680 /* Credits.rtf */; }; 6D53E3D718E4384C002B3680 /* LLAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D53E3D618E4384C002B3680 /* LLAppDelegate.m */; }; 6D53E3DA18E4384C002B3680 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6D53E3D818E4384C002B3680 /* MainMenu.xib */; }; 6D53E3DC18E4384C002B3680 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6D53E3DB18E4384C002B3680 /* Images.xcassets */; }; @@ -35,9 +31,6 @@ 6D53E3C718E4384C002B3680 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 6D53E3C818E4384C002B3680 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 6D53E3CB18E4384C002B3680 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 6D53E3CD18E4384C002B3680 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 6D53E3CF18E4384C002B3680 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 6D53E3D318E4384C002B3680 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; 6D53E3D518E4384C002B3680 /* LLAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LLAppDelegate.h; sourceTree = ""; }; 6D53E3D618E4384C002B3680 /* LLAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LLAppDelegate.m; sourceTree = ""; }; 6D53E3D918E4384C002B3680 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; @@ -54,14 +47,6 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6D53E3BD18E4384C002B3680 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 6D53E3C418E4384C002B3680 /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 6D53E3FE18E44281002B3680 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -123,9 +108,7 @@ 6D53E3D518E4384C002B3680 /* LLAppDelegate.h */, 6D53E3D618E4384C002B3680 /* LLAppDelegate.m */, 6D53E3D818E4384C002B3680 /* MainMenu.xib */, - 6D53E3F718E43864002B3680 /* Other Sources */, 6D53E3CA18E4384C002B3680 /* Supporting Files */, - 6D53E3DB18E4384C002B3680 /* Images.xcassets */, ); path = ImageLogger; sourceTree = ""; @@ -133,21 +116,12 @@ 6D53E3CA18E4384C002B3680 /* Supporting Files */ = { isa = PBXGroup; children = ( + 6D53E3DB18E4384C002B3680 /* Images.xcassets */, 6D53E3CB18E4384C002B3680 /* Info.plist */, - 6D53E3CC18E4384C002B3680 /* InfoPlist.strings */, - 6D53E3D218E4384C002B3680 /* Credits.rtf */, ); name = "Supporting Files"; sourceTree = ""; }; - 6D53E3F718E43864002B3680 /* Other Sources */ = { - isa = PBXGroup; - children = ( - 6D53E3CF18E4384C002B3680 /* main.m */, - ); - name = "Other Sources"; - sourceTree = ""; - }; 6D53E40818E44281002B3680 /* ImageLogger Touch */ = { isa = PBXGroup; children = ( @@ -195,7 +169,6 @@ buildConfigurationList = 6D53E3F118E4384C002B3680 /* Build configuration list for PBXNativeTarget "ImageLogger" */; buildPhases = ( 6D53E3BC18E4384C002B3680 /* Sources */, - 6D53E3BD18E4384C002B3680 /* Frameworks */, 6D53E3BE18E4384C002B3680 /* Resources */, ); buildRules = ( @@ -258,9 +231,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6D53E3CE18E4384C002B3680 /* InfoPlist.strings in Resources */, 6D53E3DC18E4384C002B3680 /* Images.xcassets in Resources */, - 6D53E3D418E4384C002B3680 /* Credits.rtf in Resources */, 6D53E3DA18E4384C002B3680 /* MainMenu.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -283,7 +254,6 @@ files = ( 6D53E3D718E4384C002B3680 /* LLAppDelegate.m in Sources */, 6D19D1A418E8C1C50094D1B0 /* LLImageLogger.m in Sources */, - 6D53E3D018E4384C002B3680 /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -300,22 +270,6 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ - 6D53E3CC18E4384C002B3680 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 6D53E3CD18E4384C002B3680 /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - 6D53E3D218E4384C002B3680 /* Credits.rtf */ = { - isa = PBXVariantGroup; - children = ( - 6D53E3D318E4384C002B3680 /* en */, - ); - name = Credits.rtf; - sourceTree = ""; - }; 6D53E3D818E4384C002B3680 /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( @@ -352,7 +306,7 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = c11; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -393,7 +347,7 @@ COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = c11; GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; diff --git a/ImageLogger/Base.lproj/MainMenu.xib b/ImageLogger/Base.lproj/MainMenu.xib index 29aa3f9..b588e87 100644 --- a/ImageLogger/Base.lproj/MainMenu.xib +++ b/ImageLogger/Base.lproj/MainMenu.xib @@ -1,7 +1,7 @@ - + - + @@ -11,12 +11,14 @@ + + + - @@ -354,37 +356,17 @@ - - - - - - - - - - - - - - - + + + - - - - - - - - - - + + @@ -669,12 +651,197 @@ - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ImageLogger/LLAppDelegate.h b/ImageLogger/LLAppDelegate.h index 75798be..ed59c41 100644 --- a/ImageLogger/LLAppDelegate.h +++ b/ImageLogger/LLAppDelegate.h @@ -8,8 +8,12 @@ #import -@interface LLAppDelegate : NSObject +@interface LLAppDelegate : NSObject @property (assign) IBOutlet NSWindow *window; +@property (assign) IBOutlet NSTableView *table; +@property (assign) IBOutlet NSArrayController *images; + +- (IBAction) loadSomething:(id)x; @end diff --git a/ImageLogger/LLAppDelegate.m b/ImageLogger/LLAppDelegate.m index c197f88..91bfc60 100644 --- a/ImageLogger/LLAppDelegate.m +++ b/ImageLogger/LLAppDelegate.m @@ -1,3 +1,10 @@ +#import "LLAppDelegate.h" +#import "LLImageLogger.h" + +@interface CautionRow : NSTableRowView @end +@implementation CautionRow +- (void) drawBackgroundInRect:(NSRect)d { [super drawBackgroundInRect:d]; [NSColor.redColor set]; NSRectFill(d); } +@end // // LLAppDelegate.m // ImageLogger @@ -6,13 +13,79 @@ // Copyright (c) 2014 Damien DeVille. All rights reserved. // -#import "LLAppDelegate.h" @implementation LLAppDelegate -- (void)applicationDidFinishLaunching:(NSNotification *)notification -{ - // nop +- (IBAction) loadSomething:(id)x { + + NSBundle *b = [NSBundle bundleWithPath:@"~/Library/Frameworks/AtoZ.framework"]; + NSError *e; + BOOL ok = [b preflightAndReturnError:&e]; + if(ok && !e) [b load]; + else NSLog(@"Error:%@", e); + } +- (void)awakeFromNib { + [_table setDelegate:self]; + [_images setContent:NSMutableArray.new]; + [LLImageLogger.images enumerateObjectsUsingBlock:^(NSMutableDictionary*d, NSUInteger idx, BOOL *stop) { + NSMutableDictionary *m = d.mutableCopy; NSBundle *b = nil; + id ext; NSString *eFind = d[@"path"]; + while (eFind.length > 1 && !ext) + if (!(ext = eFind.pathExtension.length ? eFind.pathExtension : nil)) + eFind = eFind.stringByDeletingLastPathComponent; + m[@"icon"] = !!ext ? [NSWorkspace.sharedWorkspace iconForFileType:ext] + : [NSImage.alloc initByReferencingFile:[b = [NSBundle bundleWithPath:d[@"path"]] pathForImageResource:[b objectForInfoDictionaryKey:@"CFBundleIconFile"]]] + ?: [NSImage imageNamed:NSImageNameCaution]; + [_images addObject:m]; + }]; +} +//- (NSTableRowView*) tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row { +// +// static NSString* const kRowIdentifier = @"Normal", *const kRowCaution = @"ci"; +// +// BOOL ok = [[_images.arrangedObjects[row]objectForKey:@"path"] rangeOfString:@"Private"].location == NSNotFound; +// +// id rowView = [tableView makeViewWithIdentifier:ok ? kRowIdentifier:kRowCaution owner:tableView]; +// if (!rowView) { +// // Size doesn't matter, the table will set it +//// Class k = +// rowView = [(ok ? NSTableRowView.class : CautionRow.class).alloc initWithFrame:NSZeroRect]; +// +// // This seemingly magical line enables your view to be found +// // next time "makeViewWithIdentifier" is called. +// [rowView setIdentifier: ok ? kRowIdentifier : kRowCaution]; +// } +// +// // 'backgroundColor' isn't going to work at this point since the table +// // Can customize properties here. Note that customizing +// // will reset it later. Use 'didAddRow' to customize if desired. +// +// return rowView; +// +//// return [tableView makeViewWithIdentifier:nil owner:nil];//NSTableRowView.new;//!x ? [.alloc init] : CautionRow.new; +//} + + +/* NSString *path = m[@"path"]; NSBundle *b = nil; id iconInfo = nil; + while (path.length > 1 && !b) + if (!(b = )) path = [path + else m[@"archs"] = b.executableArchitectures ?: @[]; + b ? (iconInfo = ) + ? + : <#(NSString *)#>:m[@"bundlePath"] = [b.bundlePath stringByAppendingPathComponent:d[@"name"]]] +; }); + setContent:LLImageLogger.images]; + [_logger setSortDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"ncmds" ascending:NO]]]; +- (instancetype)init { + +//return self = super.init ? _logger = LLImageLogger.new, self : nil; +//} +*/ @end + +int main(int argc, const char **argv) +{ + return NSApplicationMain(argc, argv); +} diff --git a/ImageLogger/en.lproj/Credits.rtf b/ImageLogger/en.lproj/Credits.rtf deleted file mode 100644 index 46576ef..0000000 --- a/ImageLogger/en.lproj/Credits.rtf +++ /dev/null @@ -1,29 +0,0 @@ -{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} -{\colortbl;\red255\green255\blue255;} -\paperw9840\paperh8400 -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural - -\f0\b\fs24 \cf0 Engineering: -\b0 \ - Some people\ -\ - -\b Human Interface Design: -\b0 \ - Some other people\ -\ - -\b Testing: -\b0 \ - Hopefully not nobody\ -\ - -\b Documentation: -\b0 \ - Whoever\ -\ - -\b With special thanks to: -\b0 \ - Mom\ -} diff --git a/ImageLogger/en.lproj/InfoPlist.strings b/ImageLogger/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28f..0000000 --- a/ImageLogger/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/ImageLogger/main.m b/ImageLogger/main.m deleted file mode 100644 index 3fceb87..0000000 --- a/ImageLogger/main.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// main.m -// ImageLogger -// -// Created by Damien DeVille on 3/27/14. -// Copyright (c) 2014 Damien DeVille. All rights reserved. -// - -#import - -int main(int argc, const char **argv) -{ - return NSApplicationMain(argc, argv); -} diff --git a/Shared/LLImageLogger.h b/Shared/LLImageLogger.h index 84f0b90..83c6c5b 100644 --- a/Shared/LLImageLogger.h +++ b/Shared/LLImageLogger.h @@ -7,7 +7,10 @@ // #import +#import @interface LLImageLogger : NSObject ++ (NSMutableArray*)images; + @end diff --git a/Shared/LLImageLogger.m b/Shared/LLImageLogger.m index 22b18fd..6acbcda 100644 --- a/Shared/LLImageLogger.m +++ b/Shared/LLImageLogger.m @@ -10,42 +10,50 @@ #import #import + #import -@implementation LLImageLogger +@implementation LLImageLogger + +static NSMutableArray *loadedImages = nil; + ++ (NSArray*) images { return loadedImages; } + ++ (void)load { -+ (void)load -{ + loadedImages = @[].mutableCopy; _dyld_register_func_for_add_image(&image_added); _dyld_register_func_for_remove_image(&image_removed); } #pragma mark - Callbacks -static void image_added(const struct mach_header *mh, intptr_t slide) -{ +static void image_added(const struct mach_header *mh, intptr_t slide) { _print_image(mh, true); } - -static void image_removed(const struct mach_header *mh, intptr_t slide) -{ +static void image_removed(const struct mach_header *mh, intptr_t slide) { _print_image(mh, false); } #pragma mark - Logger -static void _print_image(const struct mach_header *mh, bool added) -{ +static void _print_image(const struct mach_header *mh, bool added) { + Dl_info image_info; int result = dladdr(mh, &image_info); - + if (result == 0) { printf("Could not print info for mach_header: %p\n\n", mh); return; } const char *image_name = image_info.dli_fname; - + NSString *loader = [NSString stringWithUTF8String:image_name]; + [loadedImages addObject:@{@"name":loader.lastPathComponent, + @"filetype":_describe_filetype(mh), + @"path": loader, + @"ncmds":@(mh->ncmds)}.mutableCopy]; + const intptr_t image_base_address = (intptr_t)image_info.dli_fbase; const uint64_t image_text_size = _image_text_segment_size(mh); @@ -57,36 +65,63 @@ static void _print_image(const struct mach_header *mh, bool added) printf("%s: 0x%02lx (0x%02llx) %s <%s>\n\n", log, image_base_address, image_text_size, image_name, image_uuid); } +#pragma mark - Describe + +static NSString * _describe_filetype(const struct mach_header *mh){ + + NSUInteger x = mh->filetype; return + + x == MH_OBJECT ? @"relocatable object file" : + x == MH_EXECUTE ? @"demand paged executable file" : + x == MH_FVMLIB ? @"fixed VM shared library file" : + x == MH_CORE ? @"core file" : + x == MH_PRELOAD ? @"preloaded executable file" : + x == MH_DYLIB ? @"dynamically bound shared library" : + x == MH_DYLINKER ? @"dynamic link editor" : + x == MH_BUNDLE ? @"dynamically bound bundle file" : + x == MH_DYLIB_STUB ? @"shared library stub for static linking only, no section contents" : + x == MH_DSYM ? @"companion file with only debug sections" : + x == MH_KEXT_BUNDLE ? @"x86_64 kexts" : @"Unknown"; +} +/* Constants for the flags field of the mach_header + x == MH_NOUNDEFS ? @"the object file has no undefined references" : + x == MH_INCRLINK ? @"the object file is the output of an incremental link against a base file and can't be link edited again" : + x == MH_DYLDLINK ? @"the object file is input for the dynamic linker and can't be staticly link edited again" : + x == MH_BINDATLOAD ? @"the object file's undefined references are bound by the dynamic linker when loaded." : + x == MH_PREBOUND ? @"the file has its dynamic undefined references prebound." : + x == MH_SPLIT_SEGS ? @"the file has its read-only and read-write segments split" : + x == MH_LAZY_INIT ? @"the shared library init routine is to be run lazily via catching memory faults to its writeable segments (obsolete)" : + x == MH_TWOLEVEL ? @"the image is using two-level name space bindings" : + x == MH_FORCE_FLAT ? @"the executable is forcing all images to use flat name space bindings" : + x == MH_NOMULTIDEFS ? @"this umbrella guarantees no multiple defintions of symbols in its sub-images so the two-level namespace hints can always be used." : + x == MH_NOFIXPREBINDING ? @"do not have dyld notify the prebinding agent about this executable" : + x == MH_PREBINDABLE ? @"the binary is not prebound but can have its prebinding redone. only used when MH_PREBOUND is not set." : + x == MH_ALLMODSBOUND ? @"indicates that this binary binds to all two-level namespace modules of its dependent libraries. only used when MH_PREBINDABLE and MH_TWOLEVEL are both set." : + x == MH_SUBSECTIONS_VIA_SYMBOLS ? @"safe to divide up the sections into sub-sections via symbols for dead code stripping" : + x == MH_CANONICAL ? @"the binary has been canonicalized via the unprebind operation" : + x == MH_WEAK_DEFINES ? @"the final linked image contains external weak symbols" : + x == MH_BINDS_TO_WEAK ? @"the final linked image uses weak symbols" : + + x == MH_ALLOW_STACK_EXECUTION ? @"When this bit is set, all stacks in the task will be given stack execution privilege. Only used in MH_EXECUTE filetypes." : + x == MH_ROOT_SAFE ? @"When this bit is set, the binary declares it is safe for use in processes with uid zero" : + + x == MH_SETUID_SAFE ? @"When this bit is set, the binary declares it is safe for use in processes when issetugid() is true" : + + x == MH_NO_REEXPORTED_DYLIBS ? @"When this bit is set on a dylib, the static linker does not need to examine dependent dylibs to see if any are re-exported" : + x == MH_PIE ? @"When this bit is set, the OS will load the main executable at a random address. Only used in MH_EXECUTE filetypes." : + x == MH_DEAD_STRIPPABLE_DYLIB ? @"Only for use on dylibs. When linking against a dylib that has this bit set, the static linker will automatically not create a LC_LOAD_DYLIB load command to the dylib if no symbols are being referenced from the dylib." : + x == MH_HAS_TLV_DESCRIPTORS ? @"Contains a section of type S_THREAD_LOCAL_VARIABLES" : + +#define MH_NO_HEAP_EXECUTION 0x1000000 When this bit is set, the OS will +*/ + #pragma mark - Private -static uint32_t _image_header_size(const struct mach_header *mh) -{ +static uint32_t _image_header_size(const struct mach_header *mh) { bool is_header_64_bit = (mh->magic == MH_MAGIC_64 || mh->magic == MH_CIGAM_64); return (is_header_64_bit ? sizeof(struct mach_header_64) : sizeof(struct mach_header)); } - -static void _image_visit_load_commands(const struct mach_header *mh, void (^visitor)(struct load_command *lc, bool *stop)) -{ - assert(visitor != NULL); - - uintptr_t lc_cursor = (uintptr_t)mh + _image_header_size(mh); - - for (uint32_t idx = 0; idx < mh->ncmds; idx++) { - struct load_command *lc = (struct load_command *)lc_cursor; - - bool stop = false; - visitor(lc, &stop); - - if (stop) { - return; - } - - lc_cursor += lc->cmdsize; - } -} - -static uint64_t _image_text_segment_size(const struct mach_header *mh) -{ +static uint64_t _image_text_segment_size(const struct mach_header *mh) { static const char *text_segment_name = "__TEXT"; __block uint64_t text_size = 0; @@ -115,9 +150,7 @@ static uint64_t _image_text_segment_size(const struct mach_header *mh) return text_size; } - -static const uuid_t *_image_retrieve_uuid(const struct mach_header *mh) -{ +static const uuid_t *_image_retrieve_uuid(const struct mach_header *mh) { __block const struct uuid_command *uuid_cmd = NULL; _image_visit_load_commands(mh, ^ (struct load_command *lc, bool *stop) { @@ -136,5 +169,24 @@ static uint64_t _image_text_segment_size(const struct mach_header *mh) return &uuid_cmd->uuid; } +static void _image_visit_load_commands(const struct mach_header *mh, + void (^visitor)(struct load_command *lc, bool *stop)) { + assert(visitor != NULL); + + uintptr_t lc_cursor = (uintptr_t)mh + _image_header_size(mh); + + for (uint32_t idx = 0; idx < mh->ncmds; idx++) { + struct load_command *lc = (struct load_command *)lc_cursor; + + bool stop = false; + visitor(lc, &stop); + + if (stop) { + return; + } + + lc_cursor += lc->cmdsize; + } +} @end From 9aee97cbb8db4d3bec99dbc6759a7c8cc8785328 Mon Sep 17 00:00:00 2001 From: Alex Gray Date: Tue, 3 Jun 2014 18:56:13 -0400 Subject: [PATCH 2/3] All woeking well, but want to implement the array controller as a singleton somehow. --- ImageLogger.xcodeproj/project.pbxproj | 81 ++-- ImageLogger/LLAppDelegate.h | 8 +- ImageLogger/LLAppDelegate.m | 60 +-- ImageLogger/{Base.lproj => }/MainMenu.xib | 297 +++++++++----- ImageLogger/en.lproj/MainMenu.strings | 420 ++++++++++++++++++++ ImageLogger/framework.icns | Bin 0 -> 43979 bytes ImageLoggerTouch/en.lproj/InfoPlist.strings | 2 - Shared/LLImageLogger.h | 11 +- Shared/LLImageLogger.m | 182 +++++---- 9 files changed, 811 insertions(+), 250 deletions(-) rename ImageLogger/{Base.lproj => }/MainMenu.xib (77%) create mode 100644 ImageLogger/en.lproj/MainMenu.strings create mode 100644 ImageLogger/framework.icns delete mode 100644 ImageLoggerTouch/en.lproj/InfoPlist.strings diff --git a/ImageLogger.xcodeproj/project.pbxproj b/ImageLogger.xcodeproj/project.pbxproj index 4e37d92..2b980fc 100644 --- a/ImageLogger.xcodeproj/project.pbxproj +++ b/ImageLogger.xcodeproj/project.pbxproj @@ -11,14 +11,15 @@ 6D19D1A418E8C1C50094D1B0 /* LLImageLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D19D1A318E8C1C50094D1B0 /* LLImageLogger.m */; }; 6D19D1A518E8C1CA0094D1B0 /* LLImageLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D19D1A318E8C1C50094D1B0 /* LLImageLogger.m */; }; 6D53E3D718E4384C002B3680 /* LLAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D53E3D618E4384C002B3680 /* LLAppDelegate.m */; }; - 6D53E3DA18E4384C002B3680 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6D53E3D818E4384C002B3680 /* MainMenu.xib */; }; 6D53E3DC18E4384C002B3680 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6D53E3DB18E4384C002B3680 /* Images.xcassets */; }; 6D53E40318E44281002B3680 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D53E40218E44281002B3680 /* Foundation.framework */; }; 6D53E40518E44281002B3680 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D53E40418E44281002B3680 /* CoreGraphics.framework */; }; - 6D53E40D18E44281002B3680 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6D53E40B18E44281002B3680 /* InfoPlist.strings */; }; 6D53E40F18E44281002B3680 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D53E40E18E44281002B3680 /* main.m */; }; 6D53E41318E44281002B3680 /* LLAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D53E41218E44281002B3680 /* LLAppDelegate.m */; }; 6D53E41518E44281002B3680 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6D53E41418E44281002B3680 /* Images.xcassets */; }; + 7B46C551193D2599007D72D5 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7B46C550193D2599007D72D5 /* MainMenu.xib */; }; + 7BB55635193D8649002A9705 /* dylib.png in Resources */ = {isa = PBXBuildFile; fileRef = 7BB55633193D8646002A9705 /* dylib.png */; }; + 7BB55636193D864A002A9705 /* framework.png in Resources */ = {isa = PBXBuildFile; fileRef = 7BB55634193D8649002A9705 /* framework.png */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -26,24 +27,23 @@ 6D19D1A218E8C1C50094D1B0 /* LLImageLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLImageLogger.h; path = Shared/LLImageLogger.h; sourceTree = ""; }; 6D19D1A318E8C1C50094D1B0 /* LLImageLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LLImageLogger.m; path = Shared/LLImageLogger.m; sourceTree = ""; }; 6D53E3C018E4384C002B3680 /* ImageLogger.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ImageLogger.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 6D53E3C318E4384C002B3680 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; - 6D53E3C618E4384C002B3680 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; - 6D53E3C718E4384C002B3680 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; - 6D53E3C818E4384C002B3680 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 6D53E3CB18E4384C002B3680 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 6D53E3D518E4384C002B3680 /* LLAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LLAppDelegate.h; sourceTree = ""; }; 6D53E3D618E4384C002B3680 /* LLAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LLAppDelegate.m; sourceTree = ""; }; - 6D53E3D918E4384C002B3680 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 6D53E3DB18E4384C002B3680 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 6D53E40118E44281002B3680 /* ImageLoggerTouch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ImageLoggerTouch.app; sourceTree = BUILT_PRODUCTS_DIR; }; 6D53E40218E44281002B3680 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 6D53E40418E44281002B3680 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 6D53E40C18E44281002B3680 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 6D53E40E18E44281002B3680 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 6D53E41118E44281002B3680 /* LLAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LLAppDelegate.h; sourceTree = ""; }; 6D53E41218E44281002B3680 /* LLAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LLAppDelegate.m; sourceTree = ""; }; 6D53E41418E44281002B3680 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 6D53E43118E44330002B3680 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7B46C550193D2599007D72D5 /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = ""; }; + 7B4EB00F193DFDB400366BFC /* Logger.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = Logger.playground; sourceTree = ""; }; + 7BB55631193D5CCA002A9705 /* framework.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = framework.icns; sourceTree = ""; }; + 7BB55633193D8646002A9705 /* dylib.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dylib.png; sourceTree = ""; }; + 7BB55634193D8649002A9705 /* framework.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = framework.png; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -63,10 +63,9 @@ 6D53E3B718E4384C002B3680 = { isa = PBXGroup; children = ( - 6D53E42E18E4428E002B3680 /* Shared */, - 6D53E3C918E4384C002B3680 /* ImageLogger */, - 6D53E40818E44281002B3680 /* ImageLogger Touch */, - 6D53E3C218E4384C002B3680 /* Frameworks */, + 6D53E42E18E4428E002B3680 /* Common */, + 6D53E3C918E4384C002B3680 /* ImageLogger OSX */, + 6D53E40818E44281002B3680 /* ImageLogger iOS */, 6D53E3C118E4384C002B3680 /* Products */, ); sourceTree = ""; @@ -86,30 +85,20 @@ 6D53E40218E44281002B3680 /* Foundation.framework */, 6D53E40418E44281002B3680 /* CoreGraphics.framework */, 6D19D0CC18E85FF20094D1B0 /* UIKit.framework */, - 6D53E3C318E4384C002B3680 /* Cocoa.framework */, - 6D53E3C518E4384C002B3680 /* Other Frameworks */, ); name = Frameworks; + path = ..; sourceTree = ""; }; - 6D53E3C518E4384C002B3680 /* Other Frameworks */ = { - isa = PBXGroup; - children = ( - 6D53E3C618E4384C002B3680 /* AppKit.framework */, - 6D53E3C718E4384C002B3680 /* CoreData.framework */, - 6D53E3C818E4384C002B3680 /* Foundation.framework */, - ); - name = "Other Frameworks"; - sourceTree = ""; - }; - 6D53E3C918E4384C002B3680 /* ImageLogger */ = { + 6D53E3C918E4384C002B3680 /* ImageLogger OSX */ = { isa = PBXGroup; children = ( 6D53E3D518E4384C002B3680 /* LLAppDelegate.h */, 6D53E3D618E4384C002B3680 /* LLAppDelegate.m */, - 6D53E3D818E4384C002B3680 /* MainMenu.xib */, + 7B46C550193D2599007D72D5 /* MainMenu.xib */, 6D53E3CA18E4384C002B3680 /* Supporting Files */, ); + name = "ImageLogger OSX"; path = ImageLogger; sourceTree = ""; }; @@ -117,21 +106,26 @@ isa = PBXGroup; children = ( 6D53E3DB18E4384C002B3680 /* Images.xcassets */, + 7BB55631193D5CCA002A9705 /* framework.icns */, + 7BB55633193D8646002A9705 /* dylib.png */, + 7BB55634193D8649002A9705 /* framework.png */, + 7B4EB00F193DFDB400366BFC /* Logger.playground */, 6D53E3CB18E4384C002B3680 /* Info.plist */, ); name = "Supporting Files"; sourceTree = ""; }; - 6D53E40818E44281002B3680 /* ImageLogger Touch */ = { + 6D53E40818E44281002B3680 /* ImageLogger iOS */ = { isa = PBXGroup; children = ( + 6D53E3C218E4384C002B3680 /* Frameworks */, 6D53E41118E44281002B3680 /* LLAppDelegate.h */, 6D53E41218E44281002B3680 /* LLAppDelegate.m */, 6D53E42F18E442B0002B3680 /* Other Sources */, 6D53E40918E44281002B3680 /* Supporting Files */, 6D53E41418E44281002B3680 /* Images.xcassets */, ); - name = "ImageLogger Touch"; + name = "ImageLogger iOS"; path = ImageLoggerTouch; sourceTree = ""; }; @@ -139,18 +133,17 @@ isa = PBXGroup; children = ( 6D53E43118E44330002B3680 /* Info.plist */, - 6D53E40B18E44281002B3680 /* InfoPlist.strings */, ); name = "Supporting Files"; sourceTree = ""; }; - 6D53E42E18E4428E002B3680 /* Shared */ = { + 6D53E42E18E4428E002B3680 /* Common */ = { isa = PBXGroup; children = ( 6D19D1A218E8C1C50094D1B0 /* LLImageLogger.h */, 6D19D1A318E8C1C50094D1B0 /* LLImageLogger.m */, ); - name = Shared; + name = Common; sourceTree = ""; }; 6D53E42F18E442B0002B3680 /* Other Sources */ = { @@ -232,7 +225,9 @@ buildActionMask = 2147483647; files = ( 6D53E3DC18E4384C002B3680 /* Images.xcassets in Resources */, - 6D53E3DA18E4384C002B3680 /* MainMenu.xib in Resources */, + 7B46C551193D2599007D72D5 /* MainMenu.xib in Resources */, + 7BB55636193D864A002A9705 /* framework.png in Resources */, + 7BB55635193D8649002A9705 /* dylib.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -240,7 +235,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6D53E40D18E44281002B3680 /* InfoPlist.strings in Resources */, 6D53E41518E44281002B3680 /* Images.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -269,30 +263,12 @@ }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXVariantGroup section */ - 6D53E3D818E4384C002B3680 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 6D53E3D918E4384C002B3680 /* Base */, - ); - name = MainMenu.xib; - sourceTree = ""; - }; - 6D53E40B18E44281002B3680 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 6D53E40C18E44281002B3680 /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - /* Begin XCBuildConfiguration section */ 6D53E3EF18E4384C002B3680 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -332,6 +308,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; diff --git a/ImageLogger/LLAppDelegate.h b/ImageLogger/LLAppDelegate.h index ed59c41..1a44d14 100644 --- a/ImageLogger/LLAppDelegate.h +++ b/ImageLogger/LLAppDelegate.h @@ -10,10 +10,14 @@ @interface LLAppDelegate : NSObject + @property (assign) IBOutlet NSWindow *window; + +@property (assign) IBOutlet NSPathControl *path; @property (assign) IBOutlet NSTableView *table; -@property (assign) IBOutlet NSArrayController *images; -- (IBAction) loadSomething:(id)x; +@property (readonly) NSArray *images; + +- (IBAction) loadMore:(id)x; @end diff --git a/ImageLogger/LLAppDelegate.m b/ImageLogger/LLAppDelegate.m index 91bfc60..a4f52e5 100644 --- a/ImageLogger/LLAppDelegate.m +++ b/ImageLogger/LLAppDelegate.m @@ -1,10 +1,3 @@ -#import "LLAppDelegate.h" -#import "LLImageLogger.h" - -@interface CautionRow : NSTableRowView @end -@implementation CautionRow -- (void) drawBackgroundInRect:(NSRect)d { [super drawBackgroundInRect:d]; [NSColor.redColor set]; NSRectFill(d); } -@end // // LLAppDelegate.m // ImageLogger @@ -13,33 +6,48 @@ - (void) drawBackgroundInRect:(NSRect)d { [super drawBackgroundInRect:d]; [NSCol // Copyright (c) 2014 Damien DeVille. All rights reserved. // +#import "LLAppDelegate.h" +#import "LLImageLogger.h" @implementation LLAppDelegate -- (IBAction) loadSomething:(id)x { +- (void) loadMore:(id)x { - NSBundle *b = [NSBundle bundleWithPath:@"~/Library/Frameworks/AtoZ.framework"]; - NSError *e; - BOOL ok = [b preflightAndReturnError:&e]; - if(ok && !e) [b load]; - else NSLog(@"Error:%@", e); + NSOpenPanel * p = NSOpenPanel.openPanel; + [p beginSheetModalForWindow:_window + completionHandler:^(NSInteger r) { + if (r != NSFileHandlingPanelOKButton || !p.URLs.count) return; + NSURL *u = p.URLs[0]; + NSLog (@"Loading %@", u.filePathURL); + //[_path.animator setHidden:NO]; _path.URL = r + NSError *e; + NSBundle *b = [NSBundle bundleWithURL:u.filePathURL]; //:url.path?:@"~/Library/Frameworks/AtoZ.framework"]; + if (!b) return; + [b preflightAndReturnError:&e] && !e ? [b load] : NSLog(@"Error:%@", e); + }]; } -- (void)awakeFromNib { - [_table setDelegate:self]; - [_images setContent:NSMutableArray.new]; - [LLImageLogger.images enumerateObjectsUsingBlock:^(NSMutableDictionary*d, NSUInteger idx, BOOL *stop) { - NSMutableDictionary *m = d.mutableCopy; NSBundle *b = nil; - id ext; NSString *eFind = d[@"path"]; - while (eFind.length > 1 && !ext) - if (!(ext = eFind.pathExtension.length ? eFind.pathExtension : nil)) - eFind = eFind.stringByDeletingLastPathComponent; - m[@"icon"] = !!ext ? [NSWorkspace.sharedWorkspace iconForFileType:ext] - : [NSImage.alloc initByReferencingFile:[b = [NSBundle bundleWithPath:d[@"path"]] pathForImageResource:[b objectForInfoDictionaryKey:@"CFBundleIconFile"]]] - ?: [NSImage imageNamed:NSImageNameCaution]; - [_images addObject:m]; +- (void) applicationDidFinishLaunching:(NSNotification *)n { + + [NSNotificationCenter.defaultCenter addObserverForName:NEW_IMAGES_LOADED_NOTIFICATION object:nil queue:NSOperationQueue.mainQueue + usingBlock:^(NSNotification *n) { +// [self willChangeValueForKey:@"images"]; +// [self didChangeValueForKey:@"images"]; +// NSBeep(); + [_table reloadData]; }]; + +} +- (void)awakeFromNib { + + + [self bind:@"images" toObject:LLImageLogger.class withKeyPath:@"images" options:nil]; +// [_table setDelegate:self]; + +// [LLImageLogger.images enumerateObjectsUsingBlock:^(NSMutableDictionary*d, NSUInteger idx, BOOL *stop) { + +//// [_images setContent:NSMutableArray.new]; } //- (NSTableRowView*) tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row { // diff --git a/ImageLogger/Base.lproj/MainMenu.xib b/ImageLogger/MainMenu.xib similarity index 77% rename from ImageLogger/Base.lproj/MainMenu.xib rename to ImageLogger/MainMenu.xib index b588e87..35b63f2 100644 --- a/ImageLogger/Base.lproj/MainMenu.xib +++ b/ImageLogger/MainMenu.xib @@ -1,6 +1,7 @@ + @@ -11,21 +12,24 @@ - - - - + + + + + + + - + @@ -39,7 +43,7 @@ - + @@ -57,7 +61,7 @@ - + @@ -638,7 +642,7 @@ - + @@ -648,200 +652,295 @@ - + - + + - + - - + + - - + + - - + + - + - - - + + + - + - + - - + + - - - - + + + + - + - - - - - - + + + + + + - - + - - + - - - + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - + + + + + + - + - + - - - + + + - + - - - + + - - - - - - + + + + + + - + - + - - - - - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/ImageLogger/en.lproj/MainMenu.strings b/ImageLogger/en.lproj/MainMenu.strings new file mode 100644 index 0000000..b3010cc --- /dev/null +++ b/ImageLogger/en.lproj/MainMenu.strings @@ -0,0 +1,420 @@ + +/* Class = "NSMenuItem"; title = "Customize Toolbar…"; ObjectID = "1UK-8n-QPP"; */ +"1UK-8n-QPP.title" = "Customize Toolbar…"; + +/* Class = "NSMenuItem"; title = "ImageLogger"; ObjectID = "1Xt-HY-uBw"; */ +"1Xt-HY-uBw.title" = "ImageLogger"; + +/* Class = "NSMenu"; title = "Find"; ObjectID = "1b7-l0-nxx"; */ +"1b7-l0-nxx.title" = "Find"; + +/* Class = "NSMenuItem"; title = "Lower"; ObjectID = "1tx-W0-xDw"; */ +"1tx-W0-xDw.title" = "Lower"; + +/* Class = "NSMenuItem"; title = "Raise"; ObjectID = "2h7-ER-AoG"; */ +"2h7-ER-AoG.title" = "Raise"; + +/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "2oI-Rn-ZJC"; */ +"2oI-Rn-ZJC.title" = "Transformations"; + +/* Class = "NSMenu"; title = "Spelling"; ObjectID = "3IN-sU-3Bg"; */ +"3IN-sU-3Bg.title" = "Spelling"; + +/* Class = "NSMenuItem"; title = "Use Default"; ObjectID = "3Om-Ey-2VK"; */ +"3Om-Ey-2VK.title" = "Use Default"; + +/* Class = "NSMenu"; title = "Speech"; ObjectID = "3rS-ZA-NoH"; */ +"3rS-ZA-NoH.title" = "Speech"; + +/* Class = "NSMenuItem"; title = "Tighten"; ObjectID = "46P-cB-AYj"; */ +"46P-cB-AYj.title" = "Tighten"; + +/* Class = "NSMenuItem"; title = "Find"; ObjectID = "4EN-yA-p0u"; */ +"4EN-yA-p0u.title" = "Find"; + +/* Class = "NSMenuItem"; title = "Quit ImageLogger"; ObjectID = "4sb-4s-VLi"; */ +"4sb-4s-VLi.title" = "Quit ImageLogger"; + +/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "5QF-Oa-p0T"; */ +"5QF-Oa-p0T.title" = "Edit"; + +/* Class = "NSMenuItem"; title = "Copy Style"; ObjectID = "5Vv-lz-BsD"; */ +"5Vv-lz-BsD.title" = "Copy Style"; + +/* Class = "NSMenuItem"; title = "About ImageLogger"; ObjectID = "5kV-Vb-QxS"; */ +"5kV-Vb-QxS.title" = "About ImageLogger"; + +/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "6dh-zS-Vam"; */ +"6dh-zS-Vam.title" = "Redo"; + +/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "78Y-hA-62v"; */ +"78Y-hA-62v.title" = "Correct Spelling Automatically"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "79r-o8-sxk"; */ +"79r-o8-sxk.title" = "Text Cell"; + +/* Class = "NSTableColumn"; headerCell.title = "name"; ObjectID = "7H1-W3-u4y"; */ +"7H1-W3-u4y.headerCell.title" = "name"; + +/* Class = "NSMenu"; title = "Writing Direction"; ObjectID = "8mr-sm-Yjd"; */ +"8mr-sm-Yjd.title" = "Writing Direction"; + +/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "9ic-FL-obx"; */ +"9ic-FL-obx.title" = "Substitutions"; + +/* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "9yt-4B-nSM"; */ +"9yt-4B-nSM.title" = "Smart Copy/Paste"; + +/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "AYu-sK-qS6"; */ +"AYu-sK-qS6.title" = "Main Menu"; + +/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ +"BOF-NM-1cW.title" = "Preferences…"; + +/* Class = "NSMenuItem"; title = "\tLeft to Right"; ObjectID = "BgM-ve-c93"; */ +"BgM-ve-c93.title" = "\tLeft to Right"; + +/* Class = "NSMenuItem"; title = "Save As…"; ObjectID = "Bw7-FT-i3A"; */ +"Bw7-FT-i3A.title" = "Save As…"; + +/* Class = "NSMenuItem"; title = "Close"; ObjectID = "DVo-aG-piG"; */ +"DVo-aG-piG.title" = "Close"; + +/* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "Dv1-io-Yv7"; */ +"Dv1-io-Yv7.title" = "Spelling and Grammar"; + +/* Class = "NSMenu"; title = "Help"; ObjectID = "F2S-fz-NVQ"; */ +"F2S-fz-NVQ.title" = "Help"; + +/* Class = "NSMenuItem"; title = "ImageLogger Help"; ObjectID = "FKE-Sm-Kum"; */ +"FKE-Sm-Kum.title" = "ImageLogger Help"; + +/* Class = "NSMenuItem"; title = "Text"; ObjectID = "Fal-I4-PZk"; */ +"Fal-I4-PZk.title" = "Text"; + +/* Class = "NSMenu"; title = "Substitutions"; ObjectID = "FeM-D8-WVr"; */ +"FeM-D8-WVr.title" = "Substitutions"; + +/* Class = "NSMenuItem"; title = "Bold"; ObjectID = "GB9-OM-e27"; */ +"GB9-OM-e27.title" = "Bold"; + +/* Class = "NSMenu"; title = "Format"; ObjectID = "GEO-Iw-cKr"; */ +"GEO-Iw-cKr.title" = "Format"; + +/* Class = "NSMenuItem"; title = "Use Default"; ObjectID = "GUa-eO-cwY"; */ +"GUa-eO-cwY.title" = "Use Default"; + +/* Class = "NSMenuItem"; title = "Font"; ObjectID = "Gi5-1S-RQB"; */ +"Gi5-1S-RQB.title" = "Font"; + +/* Class = "NSMenuItem"; title = "Writing Direction"; ObjectID = "H1b-Si-o9J"; */ +"H1b-Si-o9J.title" = "Writing Direction"; + +/* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ +"H8h-7b-M4v.title" = "View"; + +/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "HFQ-gK-NFA"; */ +"HFQ-gK-NFA.title" = "Text Replacement"; + +/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "HFo-cy-zxI"; */ +"HFo-cy-zxI.title" = "Show Spelling and Grammar"; + +/* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ +"HyV-fh-RgO.title" = "View"; + +/* Class = "NSMenuItem"; title = "Subscript"; ObjectID = "I0S-gh-46l"; */ +"I0S-gh-46l.title" = "Subscript"; + +/* Class = "NSMenuItem"; title = "Open…"; ObjectID = "IAo-SY-fd9"; */ +"IAo-SY-fd9.title" = "Open…"; + +/* Class = "NSMenuItem"; title = "Justify"; ObjectID = "J5U-5w-g23"; */ +"J5U-5w-g23.title" = "Justify"; + +/* Class = "NSMenuItem"; title = "Use None"; ObjectID = "J7y-lM-qPV"; */ +"J7y-lM-qPV.title" = "Use None"; + +/* Class = "NSMenuItem"; title = "Revert to Saved"; ObjectID = "KaW-ft-85H"; */ +"KaW-ft-85H.title" = "Revert to Saved"; + +/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ +"Kd2-mp-pUS.title" = "Show All"; + +/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ +"LE2-aR-0XJ.title" = "Bring All to Front"; + +/* Class = "NSTableColumn"; headerCell.title = "filetype"; ObjectID = "LUy-ay-SIi"; */ +"LUy-ay-SIi.headerCell.title" = "filetype"; + +/* Class = "NSMenuItem"; title = "Paste Ruler"; ObjectID = "LVM-kO-fVI"; */ +"LVM-kO-fVI.title" = "Paste Ruler"; + +/* Class = "NSMenuItem"; title = "\tLeft to Right"; ObjectID = "Lbh-J2-qVU"; */ +"Lbh-J2-qVU.title" = "\tLeft to Right"; + +/* Class = "NSMenuItem"; title = "Copy Ruler"; ObjectID = "MkV-Pr-PK5"; */ +"MkV-Pr-PK5.title" = "Copy Ruler"; + +/* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ +"NMo-om-nkz.title" = "Services"; + +/* Class = "NSMenuItem"; title = "\tDefault"; ObjectID = "Nop-cj-93Q"; */ +"Nop-cj-93Q.title" = "\tDefault"; + +/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ +"OY7-WF-poV.title" = "Minimize"; + +/* Class = "NSMenuItem"; title = "Baseline"; ObjectID = "OaQ-X3-Vso"; */ +"OaQ-X3-Vso.title" = "Baseline"; + +/* Class = "NSMenuItem"; title = "Hide ImageLogger"; ObjectID = "Olw-nP-bQN"; */ +"Olw-nP-bQN.title" = "Hide ImageLogger"; + +/* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "OwM-mh-QMV"; */ +"OwM-mh-QMV.title" = "Find Previous"; + +/* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "Oyz-dy-DGm"; */ +"Oyz-dy-DGm.title" = "Stop Speaking"; + +/* Class = "NSMenuItem"; title = "Bigger"; ObjectID = "Ptp-SP-VEL"; */ +"Ptp-SP-VEL.title" = "Bigger"; + +/* Class = "NSMenuItem"; title = "Show Fonts"; ObjectID = "Q5e-8K-NDq"; */ +"Q5e-8K-NDq.title" = "Show Fonts"; + +/* Class = "NSWindow"; title = "ImageLogger"; ObjectID = "QvC-M9-y7g"; */ +"QvC-M9-y7g.title" = "ImageLogger"; + +/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ +"R4o-n2-Eq4.title" = "Zoom"; + +/* Class = "NSMenuItem"; title = "\tRight to Left"; ObjectID = "RB4-Sm-HuC"; */ +"RB4-Sm-HuC.title" = "\tRight to Left"; + +/* Class = "NSMenuItem"; title = "Superscript"; ObjectID = "Rqc-34-cIF"; */ +"Rqc-34-cIF.title" = "Superscript"; + +/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Ruw-6m-B2m"; */ +"Ruw-6m-B2m.title" = "Select All"; + +/* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "S0p-oC-mLd"; */ +"S0p-oC-mLd.title" = "Jump to Selection"; + +/* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ +"Td7-aD-5lo.title" = "Window"; + +/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "UEZ-Bs-lqG"; */ +"UEZ-Bs-lqG.title" = "Capitalize"; + +/* Class = "NSMenuItem"; title = "Center"; ObjectID = "VIY-Ag-zcb"; */ +"VIY-Ag-zcb.title" = "Center"; + +/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ +"Vdr-fp-XzO.title" = "Hide Others"; + +/* Class = "NSMenuItem"; title = "Italic"; ObjectID = "Vjx-xi-njq"; */ +"Vjx-xi-njq.title" = "Italic"; + +/* Class = "NSMenu"; title = "Edit"; ObjectID = "W48-6f-4Dl"; */ +"W48-6f-4Dl.title" = "Edit"; + +/* Class = "NSMenuItem"; title = "Underline"; ObjectID = "WRG-CD-K1S"; */ +"WRG-CD-K1S.title" = "Underline"; + +/* Class = "NSMenuItem"; title = "New"; ObjectID = "Was-JA-tGl"; */ +"Was-JA-tGl.title" = "New"; + +/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "WeT-3V-zwk"; */ +"WeT-3V-zwk.title" = "Paste and Match Style"; + +/* Class = "NSMenuItem"; title = "Find…"; ObjectID = "Xz5-n4-O0W"; */ +"Xz5-n4-O0W.title" = "Find…"; + +/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "YEy-JH-Tfz"; */ +"YEy-JH-Tfz.title" = "Find and Replace…"; + +/* Class = "NSMenuItem"; title = "\tDefault"; ObjectID = "YGs-j5-SAR"; */ +"YGs-j5-SAR.title" = "\tDefault"; + +/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Ynk-f8-cLZ"; */ +"Ynk-f8-cLZ.title" = "Start Speaking"; + +/* Class = "NSMenuItem"; title = "Align Left"; ObjectID = "ZM1-6Q-yy1"; */ +"ZM1-6Q-yy1.title" = "Align Left"; + +/* Class = "NSMenuItem"; title = "Paragraph"; ObjectID = "ZvO-Gk-QUH"; */ +"ZvO-Gk-QUH.title" = "Paragraph"; + +/* Class = "NSMenuItem"; title = "Print…"; ObjectID = "aTl-1u-JFS"; */ +"aTl-1u-JFS.title" = "Print…"; + +/* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ +"aUF-d1-5bR.title" = "Window"; + +/* Class = "NSMenu"; title = "Font"; ObjectID = "aXa-aM-Jaq"; */ +"aXa-aM-Jaq.title" = "Font"; + +/* Class = "NSMenuItem"; title = "Use Default"; ObjectID = "agt-UL-0e3"; */ +"agt-UL-0e3.title" = "Use Default"; + +/* Class = "NSMenuItem"; title = "Show Colors"; ObjectID = "bgn-CT-cEk"; */ +"bgn-CT-cEk.title" = "Show Colors"; + +/* Class = "NSMenu"; title = "File"; ObjectID = "bib-Uj-vzu"; */ +"bib-Uj-vzu.title" = "File"; + +/* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "buJ-ug-pKt"; */ +"buJ-ug-pKt.title" = "Use Selection for Find"; + +/* Class = "NSMenu"; title = "Transformations"; ObjectID = "c8a-y6-VQd"; */ +"c8a-y6-VQd.title" = "Transformations"; + +/* Class = "NSMenuItem"; title = "Use None"; ObjectID = "cDB-IK-hbR"; */ +"cDB-IK-hbR.title" = "Use None"; + +/* Class = "NSTextFieldCell"; title = "Table View Cell"; ObjectID = "cKh-Sb-AkE"; */ +"cKh-Sb-AkE.title" = "Table View Cell"; + +/* Class = "NSMenuItem"; title = "Selection"; ObjectID = "cqv-fj-IhA"; */ +"cqv-fj-IhA.title" = "Selection"; + +/* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "cwL-P1-jid"; */ +"cwL-P1-jid.title" = "Smart Links"; + +/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "d9M-CD-aMd"; */ +"d9M-CD-aMd.title" = "Make Lower Case"; + +/* Class = "NSMenu"; title = "Text"; ObjectID = "d9c-me-L2H"; */ +"d9c-me-L2H.title" = "Text"; + +/* Class = "NSMenuItem"; title = "File"; ObjectID = "dMs-cI-mzQ"; */ +"dMs-cI-mzQ.title" = "File"; + +/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "dRJ-4n-Yzg"; */ +"dRJ-4n-Yzg.title" = "Undo"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "fsr-7r-3uj"; */ +"fsr-7r-3uj.title" = "Text Cell"; + +/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "gVA-U4-sdL"; */ +"gVA-U4-sdL.title" = "Paste"; + +/* Class = "NSTableColumn"; headerCell.title = "ncmds"; ObjectID = "hLs-8L-Vaq"; */ +"hLs-8L-Vaq.headerCell.title" = "ncmds"; + +/* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "hQb-2v-fYv"; */ +"hQb-2v-fYv.title" = "Smart Quotes"; + +/* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "hz2-CU-CR7"; */ +"hz2-CU-CR7.title" = "Check Document Now"; + +/* Class = "NSMenu"; title = "Services"; ObjectID = "hz9-B4-Xy5"; */ +"hz9-B4-Xy5.title" = "Services"; + +/* Class = "NSMenuItem"; title = "Smaller"; ObjectID = "i1d-Er-qST"; */ +"i1d-Er-qST.title" = "Smaller"; + +/* Class = "NSMenu"; title = "Baseline"; ObjectID = "ijk-EB-dga"; */ +"ijk-EB-dga.title" = "Baseline"; + +/* Class = "NSMenuItem"; title = "Kern"; ObjectID = "jBQ-r6-VK2"; */ +"jBQ-r6-VK2.title" = "Kern"; + +/* Class = "NSMenuItem"; title = "\tRight to Left"; ObjectID = "jFq-tB-4Kx"; */ +"jFq-tB-4Kx.title" = "\tRight to Left"; + +/* Class = "NSMenuItem"; title = "Format"; ObjectID = "jxT-CU-nIS"; */ +"jxT-CU-nIS.title" = "Format"; + +/* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "mK6-2p-4JG"; */ +"mK6-2p-4JG.title" = "Check Grammar With Spelling"; + +/* Class = "NSMenuItem"; title = "Ligatures"; ObjectID = "o6e-r0-MWq"; */ +"o6e-r0-MWq.title" = "Ligatures"; + +/* Class = "NSMenu"; title = "Open Recent"; ObjectID = "oas-Oc-fiZ"; */ +"oas-Oc-fiZ.title" = "Open Recent"; + +/* Class = "NSMenuItem"; title = "Loosen"; ObjectID = "ogc-rX-tC1"; */ +"ogc-rX-tC1.title" = "Loosen"; + +/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "pa3-QI-u2k"; */ +"pa3-QI-u2k.title" = "Delete"; + +/* Class = "NSMenuItem"; title = "Save…"; ObjectID = "pxx-59-PXV"; */ +"pxx-59-PXV.title" = "Save…"; + +/* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "q09-fT-Sye"; */ +"q09-fT-Sye.title" = "Find Next"; + +/* Class = "NSMenuItem"; title = "Page Setup…"; ObjectID = "qIS-W8-SiK"; */ +"qIS-W8-SiK.title" = "Page Setup…"; + +/* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "rbD-Rh-wIN"; */ +"rbD-Rh-wIN.title" = "Check Spelling While Typing"; + +/* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "rgM-f4-ycn"; */ +"rgM-f4-ycn.title" = "Smart Dashes"; + +/* Class = "NSMenuItem"; title = "Show Toolbar"; ObjectID = "snW-S8-Cw5"; */ +"snW-S8-Cw5.title" = "Show Toolbar"; + +/* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "tRr-pd-1PS"; */ +"tRr-pd-1PS.title" = "Data Detectors"; + +/* Class = "NSMenuItem"; title = "Open Recent"; ObjectID = "tXI-mr-wws"; */ +"tXI-mr-wws.title" = "Open Recent"; + +/* Class = "NSMenu"; title = "Kern"; ObjectID = "tlD-Oa-oAM"; */ +"tlD-Oa-oAM.title" = "Kern"; + +/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "u3L-YK-JOr"; */ +"u3L-YK-JOr.title" = "Text Cell"; + +/* Class = "NSMenu"; title = "ImageLogger"; ObjectID = "uQy-DD-JDr"; */ +"uQy-DD-JDr.title" = "ImageLogger"; + +/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "uRl-iY-unG"; */ +"uRl-iY-unG.title" = "Cut"; + +/* Class = "NSSegmentedCell"; uch-uS-m64.ibShadowedLabels[0] = "Load Something"; ObjectID = "uch-uS-m64"; */ +"uch-uS-m64.ibShadowedLabels[0]" = "Load Something"; + +/* Class = "NSMenuItem"; title = "Paste Style"; ObjectID = "vKC-jM-MkH"; */ +"vKC-jM-MkH.title" = "Paste Style"; + +/* Class = "NSMenuItem"; title = "Show Ruler"; ObjectID = "vLm-3I-IUL"; */ +"vLm-3I-IUL.title" = "Show Ruler"; + +/* Class = "NSMenuItem"; title = "Clear Menu"; ObjectID = "vNY-rz-j42"; */ +"vNY-rz-j42.title" = "Clear Menu"; + +/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "vmV-6d-7jI"; */ +"vmV-6d-7jI.title" = "Make Upper Case"; + +/* Class = "NSMenu"; title = "Ligatures"; ObjectID = "w0m-vy-SC9"; */ +"w0m-vy-SC9.title" = "Ligatures"; + +/* Class = "NSMenuItem"; title = "Align Right"; ObjectID = "wb2-vD-lq4"; */ +"wb2-vD-lq4.title" = "Align Right"; + +/* Class = "NSMenuItem"; title = "Help"; ObjectID = "wpr-3q-Mcd"; */ +"wpr-3q-Mcd.title" = "Help"; + +/* Class = "NSTextFieldCell"; title = "Table View Cell"; ObjectID = "wzQ-b2-LL8"; */ +"wzQ-b2-LL8.title" = "Table View Cell"; + +/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "x3v-GG-iWU"; */ +"x3v-GG-iWU.title" = "Copy"; + +/* Class = "NSMenuItem"; title = "Use All"; ObjectID = "xQD-1f-W4t"; */ +"xQD-1f-W4t.title" = "Use All"; + +/* Class = "NSMenuItem"; title = "Speech"; ObjectID = "xrE-MZ-jX0"; */ +"xrE-MZ-jX0.title" = "Speech"; + +/* Class = "NSTextFieldCell"; title = "Table View Cell"; ObjectID = "y4c-Mt-WcR"; */ +"y4c-Mt-WcR.title" = "Table View Cell"; + +/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "z6F-FW-3nz"; */ +"z6F-FW-3nz.title" = "Show Substitutions"; diff --git a/ImageLogger/framework.icns b/ImageLogger/framework.icns new file mode 100644 index 0000000000000000000000000000000000000000..479f6864a63a63dffda0a23673ca4f208829812a GIT binary patch literal 43979 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 -#import +@import Foundation; + +#define NEW_IMAGES_LOADED_NOTIFICATION @"⚠️🚥🚧" + +@interface LLMachImage : NSObject +@property (readonly,copy) NSString *name, *path, *filetype, *extension; +@property (readonly) NSUInteger warningLevel, ncmds; +@property (readonly) id icon; +@end @interface LLImageLogger : NSObject diff --git a/Shared/LLImageLogger.m b/Shared/LLImageLogger.m index 6acbcda..0214950 100644 --- a/Shared/LLImageLogger.m +++ b/Shared/LLImageLogger.m @@ -6,53 +6,106 @@ // Copyright (c) 2014 Damien DeVille. All rights reserved. // + #import "LLImageLogger.h" -#import -#import +@import Darwin; @import MachO.dyld; @import MachO.loader; +#if TARGET_OS_IPHONE +#define NSImage UIImage +#else +@import AppKit; +#endif -#import +@implementation LLMachImage @synthesize icon, extension; -@implementation LLImageLogger +- initWithDict:(NSDictionary*)d { -static NSMutableArray *loadedImages = nil; + return (d && (self = super.init)) ? [self setValuesForKeysWithDictionary:d], self : nil; +} -+ (NSArray*) images { return loadedImages; } +- (NSString*) extension { return extension = extension ?: ^{ + + NSString *ext; if ((ext = self.path.pathExtension).length) return ext; + NSString *pth = self.path.copy; + + for (int i = 0; i < 10 && pth.length > 1 && !ext.length; i++) { + pth = pth.stringByDeletingLastPathComponent; + ext = pth.pathExtension; + } + return ext; + }(); +} +- icon { return icon = icon ?: ^{ id img = nil, x, y, z; + +#if !TARGET_OS_IPHONE + img = self.extension ? [NSWorkspace.sharedWorkspace iconForFileType:extension] + : [NSImage imageNamed:NSImageNameCaution]; +#endif + return img = [self.extension isEqualToString:@"framework"] ? [NSImage imageNamed:@"framework"] : img ?: + (( z = [NSBundle bundleWithPath:self.path]) + && ( x = [z objectForInfoDictionaryKey:@"CFBundleIconFile"]) + && ( y = [z pathForResource:x ofType:nil])) + ? [NSImage.alloc initWithContentsOfFile:y] : (id)nil; + }(); +} + +- (NSString*) name { return _path ? _path.lastPathComponent : nil; } + +- (NSUInteger) warningLevel { return + + [_path rangeOfString:@"Private"].location != NSNotFound ? 2 : ({ + + id arg0 = NSProcessInfo.processInfo.processName; + + [_path rangeOfString:arg0] .location != NSNotFound ? 1 : 0; }); +} + + +@end + +#define MACH_HEADER_mh const struct mach_header *mh + +typedef void (^VisitorBlock)(struct load_command *lc, bool *stop); -+ (void)load { +@implementation LLImageLogger static NSMutableArray *loadedImages = nil; + ++ (void) load { loadedImages = @[].mutableCopy; - loadedImages = @[].mutableCopy; _dyld_register_func_for_add_image(&image_added); _dyld_register_func_for_remove_image(&image_removed); } ++ (NSArray*) images { return loadedImages; } #pragma mark - Callbacks -static void image_added(const struct mach_header *mh, intptr_t slide) { +static void image_added(MACH_HEADER_mh, intptr_t slide) { _print_image(mh, true); } -static void image_removed(const struct mach_header *mh, intptr_t slide) { +static void image_removed(MACH_HEADER_mh, intptr_t slide) { _print_image(mh, false); } #pragma mark - Logger -static void _print_image(const struct mach_header *mh, bool added) { +static void _print_image(MACH_HEADER_mh, bool added) { Dl_info image_info; int result = dladdr(mh, &image_info); - if (result == 0) { - printf("Could not print info for mach_header: %p\n\n", mh); - return; - } - + if (!result) return (void)printf("Could not print info for mach_header: %p\n\n", mh); + const char *image_name = image_info.dli_fname; - NSString *loader = [NSString stringWithUTF8String:image_name]; - [loadedImages addObject:@{@"name":loader.lastPathComponent, - @"filetype":_describe_filetype(mh), - @"path": loader, - @"ncmds":@(mh->ncmds)}.mutableCopy]; + + + id newimage = [LLMachImage.alloc initWithDict:@{ + @"path" : [NSString stringWithUTF8String:image_name], + @"filetype" : _describe_filetype(mh), + @"ncmds" : @(mh->ncmds)}]; + + if(newimage) { + [loadedImages addObject:newimage]; + [NSNotificationCenter.defaultCenter postNotificationName:NEW_IMAGES_LOADED_NOTIFICATION object:nil]; + } const intptr_t image_base_address = (intptr_t)image_info.dli_fbase; const uint64_t image_text_size = _image_text_segment_size(mh); @@ -64,10 +117,7 @@ static void _print_image(const struct mach_header *mh, bool added) { const char *log = added ? "Added" : "Removed"; printf("%s: 0x%02lx (0x%02llx) %s <%s>\n\n", log, image_base_address, image_text_size, image_name, image_uuid); } - -#pragma mark - Describe - -static NSString * _describe_filetype(const struct mach_header *mh){ +NSString * _describe_filetype(MACH_HEADER_mh) { NSUInteger x = mh->filetype; return @@ -83,45 +133,14 @@ static void _print_image(const struct mach_header *mh, bool added) { x == MH_DSYM ? @"companion file with only debug sections" : x == MH_KEXT_BUNDLE ? @"x86_64 kexts" : @"Unknown"; } -/* Constants for the flags field of the mach_header - x == MH_NOUNDEFS ? @"the object file has no undefined references" : - x == MH_INCRLINK ? @"the object file is the output of an incremental link against a base file and can't be link edited again" : - x == MH_DYLDLINK ? @"the object file is input for the dynamic linker and can't be staticly link edited again" : - x == MH_BINDATLOAD ? @"the object file's undefined references are bound by the dynamic linker when loaded." : - x == MH_PREBOUND ? @"the file has its dynamic undefined references prebound." : - x == MH_SPLIT_SEGS ? @"the file has its read-only and read-write segments split" : - x == MH_LAZY_INIT ? @"the shared library init routine is to be run lazily via catching memory faults to its writeable segments (obsolete)" : - x == MH_TWOLEVEL ? @"the image is using two-level name space bindings" : - x == MH_FORCE_FLAT ? @"the executable is forcing all images to use flat name space bindings" : - x == MH_NOMULTIDEFS ? @"this umbrella guarantees no multiple defintions of symbols in its sub-images so the two-level namespace hints can always be used." : - x == MH_NOFIXPREBINDING ? @"do not have dyld notify the prebinding agent about this executable" : - x == MH_PREBINDABLE ? @"the binary is not prebound but can have its prebinding redone. only used when MH_PREBOUND is not set." : - x == MH_ALLMODSBOUND ? @"indicates that this binary binds to all two-level namespace modules of its dependent libraries. only used when MH_PREBINDABLE and MH_TWOLEVEL are both set." : - x == MH_SUBSECTIONS_VIA_SYMBOLS ? @"safe to divide up the sections into sub-sections via symbols for dead code stripping" : - x == MH_CANONICAL ? @"the binary has been canonicalized via the unprebind operation" : - x == MH_WEAK_DEFINES ? @"the final linked image contains external weak symbols" : - x == MH_BINDS_TO_WEAK ? @"the final linked image uses weak symbols" : - - x == MH_ALLOW_STACK_EXECUTION ? @"When this bit is set, all stacks in the task will be given stack execution privilege. Only used in MH_EXECUTE filetypes." : - x == MH_ROOT_SAFE ? @"When this bit is set, the binary declares it is safe for use in processes with uid zero" : - - x == MH_SETUID_SAFE ? @"When this bit is set, the binary declares it is safe for use in processes when issetugid() is true" : - - x == MH_NO_REEXPORTED_DYLIBS ? @"When this bit is set on a dylib, the static linker does not need to examine dependent dylibs to see if any are re-exported" : - x == MH_PIE ? @"When this bit is set, the OS will load the main executable at a random address. Only used in MH_EXECUTE filetypes." : - x == MH_DEAD_STRIPPABLE_DYLIB ? @"Only for use on dylibs. When linking against a dylib that has this bit set, the static linker will automatically not create a LC_LOAD_DYLIB load command to the dylib if no symbols are being referenced from the dylib." : - x == MH_HAS_TLV_DESCRIPTORS ? @"Contains a section of type S_THREAD_LOCAL_VARIABLES" : - -#define MH_NO_HEAP_EXECUTION 0x1000000 When this bit is set, the OS will -*/ #pragma mark - Private -static uint32_t _image_header_size(const struct mach_header *mh) { +static uint32_t _image_header_size(MACH_HEADER_mh) { bool is_header_64_bit = (mh->magic == MH_MAGIC_64 || mh->magic == MH_CIGAM_64); return (is_header_64_bit ? sizeof(struct mach_header_64) : sizeof(struct mach_header)); } -static uint64_t _image_text_segment_size(const struct mach_header *mh) { +static uint64_t _image_text_segment_size(MACH_HEADER_mh) { static const char *text_segment_name = "__TEXT"; __block uint64_t text_size = 0; @@ -150,7 +169,7 @@ static uint64_t _image_text_segment_size(const struct mach_header *mh) { return text_size; } -static const uuid_t *_image_retrieve_uuid(const struct mach_header *mh) { +static const uuid_t *_image_retrieve_uuid(MACH_HEADER_mh) { __block const struct uuid_command *uuid_cmd = NULL; _image_visit_load_commands(mh, ^ (struct load_command *lc, bool *stop) { @@ -169,24 +188,53 @@ static uint64_t _image_text_segment_size(const struct mach_header *mh) { return &uuid_cmd->uuid; } -static void _image_visit_load_commands(const struct mach_header *mh, - void (^visitor)(struct load_command *lc, bool *stop)) { +static void _image_visit_load_commands(MACH_HEADER_mh, + VisitorBlock visitor) { + assert(visitor != NULL); uintptr_t lc_cursor = (uintptr_t)mh + _image_header_size(mh); for (uint32_t idx = 0; idx < mh->ncmds; idx++) { + struct load_command *lc = (struct load_command *)lc_cursor; - bool stop = false; - visitor(lc, &stop); - - if (stop) { - return; - } + bool stop = false; visitor(lc, &stop); if (stop) return; lc_cursor += lc->cmdsize; } } @end + +/* Constants for the flags field of the mach_header + x == MH_NOUNDEFS ? @"the object file has no undefined references" : + x == MH_INCRLINK ? @"the object file is the output of an incremental link against a base file and can't be link edited again" : + x == MH_DYLDLINK ? @"the object file is input for the dynamic linker and can't be staticly link edited again" : + x == MH_BINDATLOAD ? @"the object file's undefined references are bound by the dynamic linker when loaded." : + x == MH_PREBOUND ? @"the file has its dynamic undefined references prebound." : + x == MH_SPLIT_SEGS ? @"the file has its read-only and read-write segments split" : + x == MH_LAZY_INIT ? @"the shared library init routine is to be run lazily via catching memory faults to its writeable segments (obsolete)" : + x == MH_TWOLEVEL ? @"the image is using two-level name space bindings" : + x == MH_FORCE_FLAT ? @"the executable is forcing all images to use flat name space bindings" : + x == MH_NOMULTIDEFS ? @"this umbrella guarantees no multiple defintions of symbols in its sub-images so the two-level namespace hints can always be used." : + x == MH_NOFIXPREBINDING ? @"do not have dyld notify the prebinding agent about this executable" : + x == MH_PREBINDABLE ? @"the binary is not prebound but can have its prebinding redone. only used when MH_PREBOUND is not set." : + x == MH_ALLMODSBOUND ? @"indicates that this binary binds to all two-level namespace modules of its dependent libraries. only used when MH_PREBINDABLE and MH_TWOLEVEL are both set." : + x == MH_SUBSECTIONS_VIA_SYMBOLS ? @"safe to divide up the sections into sub-sections via symbols for dead code stripping" : + x == MH_CANONICAL ? @"the binary has been canonicalized via the unprebind operation" : + x == MH_WEAK_DEFINES ? @"the final linked image contains external weak symbols" : + x == MH_BINDS_TO_WEAK ? @"the final linked image uses weak symbols" : + + x == MH_ALLOW_STACK_EXECUTION ? @"When this bit is set, all stacks in the task will be given stack execution privilege. Only used in MH_EXECUTE filetypes." : + x == MH_ROOT_SAFE ? @"When this bit is set, the binary declares it is safe for use in processes with uid zero" : + + x == MH_SETUID_SAFE ? @"When this bit is set, the binary declares it is safe for use in processes when issetugid() is true" : + + x == MH_NO_REEXPORTED_DYLIBS ? @"When this bit is set on a dylib, the static linker does not need to examine dependent dylibs to see if any are re-exported" : + x == MH_PIE ? @"When this bit is set, the OS will load the main executable at a random address. Only used in MH_EXECUTE filetypes." : + x == MH_DEAD_STRIPPABLE_DYLIB ? @"Only for use on dylibs. When linking against a dylib that has this bit set, the static linker will automatically not create a LC_LOAD_DYLIB load command to the dylib if no symbols are being referenced from the dylib." : + x == MH_HAS_TLV_DESCRIPTORS ? @"Contains a section of type S_THREAD_LOCAL_VARIABLES" : + +#define MH_NO_HEAP_EXECUTION 0x1000000 When this bit is set, the OS will +*/ From ea518b96991027c4d84f6269354e829b588a9fdd Mon Sep 17 00:00:00 2001 From: Alex Gray Date: Mon, 9 Jun 2014 13:11:04 -0400 Subject: [PATCH 3/3] committing this, or I never will --- ImageLogger.xcodeproj/project.pbxproj | 4 +- ImageLogger/LLAppDelegate.h | 13 ++- ImageLogger/LLAppDelegate.m | 103 ++++++------------------ ImageLogger/MainMenu.xib | 78 ++++++++---------- ImageLogger/dylib.png | Bin 0 -> 158149 bytes Shared/LLImageLogger.h | 4 +- Shared/LLImageLogger.m | 111 +++++++++++++++----------- 7 files changed, 133 insertions(+), 180 deletions(-) create mode 100644 ImageLogger/dylib.png diff --git a/ImageLogger.xcodeproj/project.pbxproj b/ImageLogger.xcodeproj/project.pbxproj index 2b980fc..438a417 100644 --- a/ImageLogger.xcodeproj/project.pbxproj +++ b/ImageLogger.xcodeproj/project.pbxproj @@ -18,8 +18,8 @@ 6D53E41318E44281002B3680 /* LLAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D53E41218E44281002B3680 /* LLAppDelegate.m */; }; 6D53E41518E44281002B3680 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6D53E41418E44281002B3680 /* Images.xcassets */; }; 7B46C551193D2599007D72D5 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7B46C550193D2599007D72D5 /* MainMenu.xib */; }; + 7BA7BFAE193ED2B9007DAB90 /* framework.icns in Resources */ = {isa = PBXBuildFile; fileRef = 7BB55631193D5CCA002A9705 /* framework.icns */; }; 7BB55635193D8649002A9705 /* dylib.png in Resources */ = {isa = PBXBuildFile; fileRef = 7BB55633193D8646002A9705 /* dylib.png */; }; - 7BB55636193D864A002A9705 /* framework.png in Resources */ = {isa = PBXBuildFile; fileRef = 7BB55634193D8649002A9705 /* framework.png */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -226,7 +226,7 @@ files = ( 6D53E3DC18E4384C002B3680 /* Images.xcassets in Resources */, 7B46C551193D2599007D72D5 /* MainMenu.xib in Resources */, - 7BB55636193D864A002A9705 /* framework.png in Resources */, + 7BA7BFAE193ED2B9007DAB90 /* framework.icns in Resources */, 7BB55635193D8649002A9705 /* dylib.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/ImageLogger/LLAppDelegate.h b/ImageLogger/LLAppDelegate.h index 1a44d14..e695e3a 100644 --- a/ImageLogger/LLAppDelegate.h +++ b/ImageLogger/LLAppDelegate.h @@ -7,17 +7,16 @@ // #import - +//@class LLImageLogger; @interface LLAppDelegate : NSObject - @property (assign) IBOutlet NSWindow *window; - -@property (assign) IBOutlet NSPathControl *path; @property (assign) IBOutlet NSTableView *table; - -@property (readonly) NSArray *images; - +@property (assign) IBOutlet NSTextField *numberOfCommands, *loadedImages; +@property (nonatomic) NSArrayController *arrayController; +@property NSPopover *pop; - (IBAction) loadMore:(id)x; @end + +//@property (assign) IBOutlet NSPathControl *path; diff --git a/ImageLogger/LLAppDelegate.m b/ImageLogger/LLAppDelegate.m index a4f52e5..c948cf2 100644 --- a/ImageLogger/LLAppDelegate.m +++ b/ImageLogger/LLAppDelegate.m @@ -1,99 +1,48 @@ -// -// LLAppDelegate.m -// ImageLogger -// -// Created by Damien DeVille on 3/27/14. -// Copyright (c) 2014 Damien DeVille. All rights reserved. -// + +// LLAppDelegate.m ImageLogger +// Created by Damien DeVille on 3/27/14. Copyright (c) 2014 Damien DeVille. All rights reserved. #import "LLAppDelegate.h" #import "LLImageLogger.h" @implementation LLAppDelegate -- (void) loadMore:(id)x { +- (void) loadMore:(id)x { NSOpenPanel * p = NSOpenPanel.openPanel; - NSOpenPanel * p = NSOpenPanel.openPanel; + [_table unbind:NSContentBinding]; // dunno why this is necessary.. idiotic. [p beginSheetModalForWindow:_window - completionHandler:^(NSInteger r) { + completionHandler:^(NSInteger r) { NSError *e; NSURL *u; NSBundle *b; + if (r != NSFileHandlingPanelOKButton || !p.URLs.count) return; - NSURL *u = p.URLs[0]; - NSLog (@"Loading %@", u.filePathURL); - //[_path.animator setHidden:NO]; _path.URL = r - NSError *e; - NSBundle *b = [NSBundle bundleWithURL:u.filePathURL]; //:url.path?:@"~/Library/Frameworks/AtoZ.framework"]; - if (!b) return; - [b preflightAndReturnError:&e] && !e ? [b load] : NSLog(@"Error:%@", e); - }]; -} + NSLog (@"Loading %@", u = [p.URLs[0]filePathURL]); + + if (!(b = [NSBundle bundleWithURL:u])) return; -- (void) applicationDidFinishLaunching:(NSNotification *)n { + [b preflightAndReturnError:&e] && !e ? [b load], NSLog(@"Bundle:%@", b) : NSLog(@"Error:%@", e); - [NSNotificationCenter.defaultCenter addObserverForName:NEW_IMAGES_LOADED_NOTIFICATION object:nil queue:NSOperationQueue.mainQueue - usingBlock:^(NSNotification *n) { -// [self willChangeValueForKey:@"images"]; -// [self didChangeValueForKey:@"images"]; -// NSBeep(); - [_table reloadData]; + [_table bind:NSContentBinding toObject:_arrayController withKeyPath:@"arrangedObjects" options:nil]; }]; +} + +- (NSArrayController*) arrayController { return _arrayController = _arrayController ?: ({ + [_arrayController = NSArrayController.new bind:NSContentArrayBinding toObject:LLImageLogger.logger withKeyPath:@"images" options:nil]; _arrayController; }); } -- (void)awakeFromNib { +- (void) applicationDidFinishLaunching:(NSNotification*)n { - [self bind:@"images" toObject:LLImageLogger.class withKeyPath:@"images" options:nil]; -// [_table setDelegate:self]; + [_table bind:NSContentBinding toObject:self.arrayController withKeyPath:@"arrangedObjects" options:nil]; + [_loadedImages bind:NSValueBinding toObject:_arrayController withKeyPath:@"arrangedObjects.@count" options:nil]; + [_numberOfCommands bind:NSValueBinding toObject:_arrayController withKeyPath:@"arrangedObjects.@sum.ncmds" options:nil]; + // [_table bind:NSToolTipBinding toObject:self.arrayController withKeyPath:[NSSelectedObjectBinding stringByAppendingString:@".flags"] options:nil]; +} +-(void) tableViewSelectionDidChange:(NSNotification *)n { -// [LLImageLogger.images enumerateObjectsUsingBlock:^(NSMutableDictionary*d, NSUInteger idx, BOOL *stop) { + NSTableView* tv = n.object; + NSLog(@"%@",[[self.arrayController.arrangedObjects objectAtIndex:tv.selectedRow] valueForKey:@"flags"]); -//// [_images setContent:NSMutableArray.new]; } -//- (NSTableRowView*) tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row { -// -// static NSString* const kRowIdentifier = @"Normal", *const kRowCaution = @"ci"; -// -// BOOL ok = [[_images.arrangedObjects[row]objectForKey:@"path"] rangeOfString:@"Private"].location == NSNotFound; -// -// id rowView = [tableView makeViewWithIdentifier:ok ? kRowIdentifier:kRowCaution owner:tableView]; -// if (!rowView) { -// // Size doesn't matter, the table will set it -//// Class k = -// rowView = [(ok ? NSTableRowView.class : CautionRow.class).alloc initWithFrame:NSZeroRect]; -// -// // This seemingly magical line enables your view to be found -// // next time "makeViewWithIdentifier" is called. -// [rowView setIdentifier: ok ? kRowIdentifier : kRowCaution]; -// } -// -// // 'backgroundColor' isn't going to work at this point since the table -// // Can customize properties here. Note that customizing -// // will reset it later. Use 'didAddRow' to customize if desired. -// -// return rowView; -// -//// return [tableView makeViewWithIdentifier:nil owner:nil];//NSTableRowView.new;//!x ? [.alloc init] : CautionRow.new; -//} - - -/* NSString *path = m[@"path"]; NSBundle *b = nil; id iconInfo = nil; - while (path.length > 1 && !b) - if (!(b = )) path = [path - else m[@"archs"] = b.executableArchitectures ?: @[]; - b ? (iconInfo = ) - ? - : <#(NSString *)#>:m[@"bundlePath"] = [b.bundlePath stringByAppendingPathComponent:d[@"name"]]] -; }); - setContent:LLImageLogger.images]; - [_logger setSortDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"ncmds" ascending:NO]]]; -- (instancetype)init { - -//return self = super.init ? _logger = LLImageLogger.new, self : nil; -//} -*/ @end -int main(int argc, const char **argv) -{ - return NSApplicationMain(argc, argv); -} +int main(int argc, const char **argv) { return NSApplicationMain(argc, argv); } diff --git a/ImageLogger/MainMenu.xib b/ImageLogger/MainMenu.xib index 35b63f2..b1176da 100644 --- a/ImageLogger/MainMenu.xib +++ b/ImageLogger/MainMenu.xib @@ -5,24 +5,21 @@ - - - - - + - - + - - + - + - + + + + - + @@ -655,28 +652,28 @@ - + - + - + - + - - + + - + @@ -691,7 +688,7 @@ - + @@ -703,7 +700,7 @@ - + @@ -712,6 +709,7 @@ + @@ -735,13 +733,13 @@ - + - + - + @@ -771,7 +769,7 @@ - + @@ -786,7 +784,7 @@ - + @@ -800,11 +798,11 @@ - + - + @@ -822,7 +820,7 @@ - + @@ -836,11 +834,11 @@ - + - + @@ -860,8 +858,7 @@ - - + @@ -876,7 +873,7 @@ - + @@ -897,9 +894,6 @@ - - - @@ -918,26 +912,20 @@ - - - - - - diff --git a/ImageLogger/dylib.png b/ImageLogger/dylib.png new file mode 100644 index 0000000000000000000000000000000000000000..de35b84b83910cda74e77b8dd5d6b01798c8881b GIT binary patch literal 158149 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�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 q(SQCs`R^k9_ayv3y9MXP_ncmds)}]; - - if(newimage) { - [loadedImages addObject:newimage]; - [NSNotificationCenter.defaultCenter postNotificationName:NEW_IMAGES_LOADED_NOTIFICATION object:nil]; - } + if (( new_path = [NSString stringWithUTF8String:image_name]) + && ( new_image = [LLMachImage.alloc initWithDict:@{ + @"path" : new_path, + @"filetype" : _describe_filetype(mh), + @"ncmds" : @(mh->ncmds), + @"flags" : _describe_flags(mh)}])) + + [[LLImageLogger.logger mutableArrayValueForKey:@"images"] addObject:new_image]; const intptr_t image_base_address = (intptr_t)image_info.dli_fbase; - const uint64_t image_text_size = _image_text_segment_size(mh); - + const uint64_t image_text_size = _image_text_segment_size(mh); + + char image_uuid[37]; const uuid_t *image_uuid_bytes = _image_retrieve_uuid(mh); uuid_unparse(*image_uuid_bytes, image_uuid); const char *log = added ? "Added" : "Removed"; - printf("%s: 0x%02lx (0x%02llx) %s <%s>\n\n", log, image_base_address, image_text_size, image_name, image_uuid); + printf("[%lu] %s: 0x%02lx (0x%02llx) %s <%s>\n\n",LLImageLogger.logger.images.count,log, image_base_address, image_text_size, image_name, image_uuid); } NSString * _describe_filetype(MACH_HEADER_mh) { @@ -133,7 +142,44 @@ static void _print_image(MACH_HEADER_mh, bool added) { x == MH_DSYM ? @"companion file with only debug sections" : x == MH_KEXT_BUNDLE ? @"x86_64 kexts" : @"Unknown"; } - +NSDictionary * _describe_flags(MACH_HEADER_mh){ + + + static NSDictionary * flag_info; flag_info = flag_info ?: @{ /* Constants for the flags field of the mach_header */ + @(MH_NOUNDEFS) : @[@"MH_NOUNDEFS", @"the object file has no undefined references"], + @(MH_INCRLINK) : @[@"MH_INCRLINK", @"the object file is the output of an incremental link against a base file and can't be link edited again"], + @(MH_DYLDLINK) : @[@"MH_DYLDLINK", @"the object file is input for the dynamic linker and can't be staticly link edited again"], + @(MH_BINDATLOAD) : @[@"MH_BINDATLOAD", @"the object file's undefined references are bound by the dynamic linker when loaded."], + @(MH_PREBOUND) : @[@"MH_PREBOUND", @"the file has its dynamic undefined references prebound."], + @(MH_SPLIT_SEGS) : @[@"MH_SPLIT_SEGS", @"the file has its read-only and read-write segments split"], + @(MH_LAZY_INIT) : @[@"MH_LAZY_INIT", @"the shared library init routine is to be run lazily via catching memory faults to its writeable segments (obsolete)"], + @(MH_TWOLEVEL) : @[@"MH_TWOLEVEL", @"the image is using two-level name space bindings"], + @(MH_FORCE_FLAT) : @[@"MH_FORCE_FLAT", @"the executable is forcing all images to use flat name space bindings"], + @(MH_NOMULTIDEFS) : @[@"MH_NOMULTIDEFS", @"this umbrella guarantees no multiple defintions of symbols in its sub-images so the two-level namespace hints can always be used."], + @(MH_NOFIXPREBINDING) : @[@"MH_NOFIXPREBINDING", @"do not have dyld notify the prebinding agent about this executable"], + @(MH_PREBINDABLE) : @[@"MH_PREBINDABLE", @"the binary is not prebound but can have its prebinding redone. only used when MH_PREBOUND is not set."], + @(MH_ALLMODSBOUND) : @[@"MH_ALLMODSBOUND", @"indicates that this binary binds to all two-level namespace modules of its dependent libraries. only used when MH_PREBINDABLE and MH_TWOLEVEL are both set."], + @(MH_SUBSECTIONS_VIA_SYMBOLS) : @[@"MH_SUBSECTIONS_VIA_SYMBOLS", @"safe to divide up the sections into sub-sections via symbols for dead code stripping"], + @(MH_CANONICAL) : @[@"MH_CANONICAL", @"the binary has been canonicalized via the unprebind operation"], + @(MH_WEAK_DEFINES) : @[@"MH_WEAK_DEFINES", @"the final linked image contains external weak symbols"], + @(MH_BINDS_TO_WEAK) : @[@"MH_BINDS_TO_WEAK", @"the final linked image uses weak symbols"], + @(MH_ALLOW_STACK_EXECUTION) : @[@"MH_ALLOW_STACK_EXECUTION", @"When this bit is set, all stacks in the task will be given stack execution privilege. Only used in MH_EXECUTE filetypes."], + @(MH_ROOT_SAFE) : @[@"MH_ROOT_SAFE", @"When this bit is set, the binary declares it is safe for use in processes with uid zero"], + @(MH_SETUID_SAFE) : @[@"MH_SETUID_SAFE", @"When this bit is set, the binary declares it is safe for use in processes when issetugid() is true"], + @(MH_NO_REEXPORTED_DYLIBS) : @[@"MH_NO_REEXPORTED_DYLIBS", @"When this bit is set on a dylib, the static linker does not need to examine dependent dylibs to see if any are re-exported"], + @(MH_PIE) : @[@"MH_PIE", @"When this bit is set, the OS will load the main executable at a random address. Only used in MH_EXECUTE filetypes."], + @(MH_DEAD_STRIPPABLE_DYLIB) : @[@"MH_DEAD_STRIPPABLE_DYLIB", @"Only for use on dylibs. When linking against a dylib that has this bit set, the static linker will automatically not create a LC_LOAD_DYLIB load command to the dylib if no symbols are being referenced from the dylib."], + @(MH_HAS_TLV_DESCRIPTORS) : @[@"MH_HAS_TLV_DESCRIPTORS", @"Contains a section of type S_THREAD_LOCAL_VARIABLES"], + @(MH_NO_HEAP_EXECUTION):@[@"MH_NO_HEAP_EXECUTION",@"When this bit is set, the OS will"]}; + + uint64_t flags = mh->flags; + NSMutableDictionary *d = @{@"dummyInfo":@"poopie"}.mutableCopy; + [flag_info enumerateKeysAndObjectsUsingBlock:^(id key, NSArray* obj, BOOL *stop) { + uint64_t t = [key unsignedIntValue]; + if (flags & t) d[obj[0]] = obj[1]; + }]; + return d; +} #pragma mark - Private static uint32_t _image_header_size(MACH_HEADER_mh) { @@ -207,34 +253,3 @@ static void _image_visit_load_commands(MACH_HEADER_mh, @end -/* Constants for the flags field of the mach_header - x == MH_NOUNDEFS ? @"the object file has no undefined references" : - x == MH_INCRLINK ? @"the object file is the output of an incremental link against a base file and can't be link edited again" : - x == MH_DYLDLINK ? @"the object file is input for the dynamic linker and can't be staticly link edited again" : - x == MH_BINDATLOAD ? @"the object file's undefined references are bound by the dynamic linker when loaded." : - x == MH_PREBOUND ? @"the file has its dynamic undefined references prebound." : - x == MH_SPLIT_SEGS ? @"the file has its read-only and read-write segments split" : - x == MH_LAZY_INIT ? @"the shared library init routine is to be run lazily via catching memory faults to its writeable segments (obsolete)" : - x == MH_TWOLEVEL ? @"the image is using two-level name space bindings" : - x == MH_FORCE_FLAT ? @"the executable is forcing all images to use flat name space bindings" : - x == MH_NOMULTIDEFS ? @"this umbrella guarantees no multiple defintions of symbols in its sub-images so the two-level namespace hints can always be used." : - x == MH_NOFIXPREBINDING ? @"do not have dyld notify the prebinding agent about this executable" : - x == MH_PREBINDABLE ? @"the binary is not prebound but can have its prebinding redone. only used when MH_PREBOUND is not set." : - x == MH_ALLMODSBOUND ? @"indicates that this binary binds to all two-level namespace modules of its dependent libraries. only used when MH_PREBINDABLE and MH_TWOLEVEL are both set." : - x == MH_SUBSECTIONS_VIA_SYMBOLS ? @"safe to divide up the sections into sub-sections via symbols for dead code stripping" : - x == MH_CANONICAL ? @"the binary has been canonicalized via the unprebind operation" : - x == MH_WEAK_DEFINES ? @"the final linked image contains external weak symbols" : - x == MH_BINDS_TO_WEAK ? @"the final linked image uses weak symbols" : - - x == MH_ALLOW_STACK_EXECUTION ? @"When this bit is set, all stacks in the task will be given stack execution privilege. Only used in MH_EXECUTE filetypes." : - x == MH_ROOT_SAFE ? @"When this bit is set, the binary declares it is safe for use in processes with uid zero" : - - x == MH_SETUID_SAFE ? @"When this bit is set, the binary declares it is safe for use in processes when issetugid() is true" : - - x == MH_NO_REEXPORTED_DYLIBS ? @"When this bit is set on a dylib, the static linker does not need to examine dependent dylibs to see if any are re-exported" : - x == MH_PIE ? @"When this bit is set, the OS will load the main executable at a random address. Only used in MH_EXECUTE filetypes." : - x == MH_DEAD_STRIPPABLE_DYLIB ? @"Only for use on dylibs. When linking against a dylib that has this bit set, the static linker will automatically not create a LC_LOAD_DYLIB load command to the dylib if no symbols are being referenced from the dylib." : - x == MH_HAS_TLV_DESCRIPTORS ? @"Contains a section of type S_THREAD_LOCAL_VARIABLES" : - -#define MH_NO_HEAP_EXECUTION 0x1000000 When this bit is set, the OS will -*/