├── MJAppTools
├── Default-568h@2x.png
├── Extensions
│ ├── NSFileHandle+Extension.h
│ └── NSFileHandle+Extension.m
├── Tools
│ ├── MJAppTools.h
│ ├── MJPrintTools.h
│ ├── MJAppTools.m
│ └── MJPrintTools.m
├── Models
│ ├── MJMachO.h
│ ├── MJApp.h
│ ├── MJApp.m
│ └── MJMachO.m
├── Info.plist
├── SystemHeaders
│ ├── FBBundleInfo.h
│ ├── FBApplicationInfo.h
│ ├── LSApplicationWorkspace.h
│ └── LSApplicationProxy.h
└── main.m
├── MJAppTools.xcodeproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── project.pbxproj
├── LICENSE
├── Makefile
├── .gitignore
├── README.md
└── Release
└── MJAppTools.entitlements
/MJAppTools/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CoderMJLee/MJAppTools/HEAD/MJAppTools/Default-568h@2x.png
--------------------------------------------------------------------------------
/MJAppTools.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/MJAppTools/Extensions/NSFileHandle+Extension.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSFileHandle+Extension.h
3 | // MJOTool
4 | //
5 | // Created by MJ Lee on 2018/1/24.
6 | // Copyright © 2018年 MJ Lee. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSFileHandle (Extension)
12 |
13 | - (uint32_t)mj_readUint32;
14 | - (uint32_t)mj_staticReadUint32;
15 |
16 | - (void)mj_readData:(void *)data length:(NSUInteger)length;
17 | - (void)mj_staticReadData:(void *)data length:(NSUInteger)length;
18 |
19 | - (void)mj_appendOffset:(unsigned long long)offset;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/MJAppTools/Tools/MJAppTools.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJAppTools.h
3 | // MJAppTools
4 | //
5 | // Created by MJ Lee on 2018/1/27.
6 | // Copyright © 2018年 MJ Lee. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MJApp.h"
11 |
12 | typedef enum {
13 | MJListAppsTypeUser,
14 | MJListAppsTypeUserEncrypted,
15 | MJListAppsTypeUserDecrypted,
16 | MJListAppsTypeSystem
17 | } MJListAppsType;
18 |
19 | @interface MJAppTools : NSObject
20 |
21 | + (void)listUserAppsWithType:(MJListAppsType)type regex:(NSString *)regex operation:(void (^)(NSArray *apps))operation;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/MJAppTools/Models/MJMachO.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJMachO.h
3 | // MJAppTools
4 | //
5 | // Created by MJ Lee on 2018/1/27.
6 | // Copyright © 2018年 MJ Lee. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MJMachO : NSObject
12 |
13 | /** 架构名称 */
14 | @property (copy, nonatomic) NSString *architecture;
15 | /** 是否被加密 */
16 | @property (assign, nonatomic, getter=isEncrypted) BOOL encrypted;
17 | @property (assign, nonatomic, getter=isFat) BOOL fat;
18 | @property (strong, nonatomic) NSArray *machOs;
19 |
20 | + (instancetype)machOWithFileHandle:(NSFileHandle *)handle;
21 | - (instancetype)initWithFileHandle:(NSFileHandle *)handle;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/MJAppTools/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UIRequiredDeviceCapabilities
24 |
25 | armv7
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/MJAppTools/Models/MJApp.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJApp.h
3 | // MJAppTools
4 | //
5 | // Created by MJ Lee on 2018/1/27.
6 | // Copyright © 2018年 MJ Lee. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class FBApplicationInfo, MJMachO;
12 |
13 | @interface MJApp : NSObject
14 |
15 | @property(copy, nonatomic, readonly) NSString *bundlePath;
16 | @property(copy, nonatomic, readonly) NSString *dataPath;
17 | @property(copy, nonatomic, readonly) NSString *bundleIdentifier;
18 | @property(copy, nonatomic, readonly) NSString *displayName;
19 | @property(copy, nonatomic, readonly) NSString *executableName;
20 | @property(assign, nonatomic, readonly, getter=isSystemApp) BOOL systemApp;
21 | @property(assign, nonatomic, readonly, getter=isHidden) BOOL hidden;
22 | @property (strong, nonatomic, readonly) MJMachO *executable;
23 |
24 | - (instancetype)initWithInfo:(FBApplicationInfo *)info;
25 | + (instancetype)appWithInfo:(FBApplicationInfo *)info;
26 |
27 | - (void)setupExecutable;
28 | @end
29 |
--------------------------------------------------------------------------------
/MJAppTools/Tools/MJPrintTools.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJPrintTools.h
3 | // MJAppTools
4 | //
5 | // Created by MJ Lee on 2018/1/28.
6 | // Copyright © 2018年 MJ Lee. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | extern NSString *MJPrintColorDefault;
12 |
13 | extern NSString *MJPrintColorRed;
14 | extern NSString *MJPrintColorGreen;
15 | extern NSString *MJPrintColorBlue;
16 | extern NSString *MJPrintColorWhite;
17 | extern NSString *MJPrintColorBlack;
18 | extern NSString *MJPrintColorYellow;
19 | extern NSString *MJPrintColorCyan;
20 | extern NSString *MJPrintColorMagenta;
21 |
22 | extern NSString *MJPrintColorWarning;
23 | extern NSString *MJPrintColorError;
24 | extern NSString *MJPrintColorStrong;
25 |
26 | @interface MJPrintTools : NSObject
27 |
28 | + (void)print:(NSString *)format, ...;
29 | + (void)printError:(NSString *)format, ...;
30 | + (void)printWarning:(NSString *)format, ...;
31 | + (void)printStrong:(NSString *)format, ...;
32 | + (void)printColor:(NSString *)color format:(NSString *)format, ...;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 M了个J
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/MJAppTools/SystemHeaders/FBBundleInfo.h:
--------------------------------------------------------------------------------
1 |
2 | @interface FBBundleInfo : NSObject {
3 | NSString * _bundleIdentifier;
4 | NSString * _bundleType;
5 | NSURL * _bundleURL;
6 | NSString * _bundleVersion;
7 | NSUUID * _cacheGUID;
8 | NSDictionary * _extendedInfo;
9 | unsigned int _sequenceNumber;
10 | }
11 |
12 | @property (nonatomic, readonly, copy) NSString *bundleIdentifier;
13 | @property (nonatomic, readonly, copy) NSString *bundleType;
14 | @property (nonatomic, readonly, retain) NSURL *bundleURL;
15 | @property (nonatomic, readonly, copy) NSString *bundleVersion;
16 | @property (nonatomic, readonly, copy) NSUUID *cacheGUID;
17 | @property (nonatomic, readonly) unsigned int sequenceNumber;
18 |
19 | - (id)_initWithBundleIdentifier:(id)arg1 url:(id)arg2;
20 | - (id)_initWithBundleProxy:(id)arg1 bundleIdentifier:(id)arg2 url:(id)arg3;
21 | - (id)_initWithBundleProxy:(id)arg1 overrideURL:(id)arg2;
22 | - (id)bundleIdentifier;
23 | - (id)bundleType;
24 | - (id)bundleURL;
25 | - (id)bundleVersion;
26 | - (id)cacheGUID;
27 | - (void)dealloc;
28 | - (id)extendedInfo;
29 | - (id)extendedInfoValueForKey:(id)arg1;
30 | - (id)init;
31 | - (unsigned int)sequenceNumber;
32 | - (void)setExtendedInfo:(id)arg1;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | # Config
2 | ARCH = armv7
3 | IOS_VERSION = 8.0
4 | EXECUTABLE_NAME = MJAppTools
5 |
6 | # Dirs
7 | RELEASE_DIR = Release
8 | PROJECT_DIR = MJAppTools
9 | EXECUTABLE_FILE = $(RELEASE_DIR)/$(EXECUTABLE_NAME)
10 |
11 | # Header Files
12 | HEADER_DIR1 = $(PROJECT_DIR)
13 | HEADER_DIR2 = $(PROJECT_DIR)/SystemHeaders
14 | HEADER_DIR3 = $(PROJECT_DIR)/Extensions
15 | HEADER_DIR4 = $(PROJECT_DIR)/Models
16 | HEADER_DIR5 = $(PROJECT_DIR)/Tools
17 |
18 | # Source Files
19 | SOURCE_FILES = $(HEADER_DIR1)/*.m
20 | SOURCE_FILES += $(HEADER_DIR3)/*.m
21 | SOURCE_FILES += $(HEADER_DIR4)/*.m
22 | SOURCE_FILES += $(HEADER_DIR5)/*.m
23 |
24 | # Entitlements
25 | ENTITLEMENT_FILE = $(RELEASE_DIR)/MJAppTools.entitlements
26 |
27 | codesign: compile
28 | @codesign -fs- --entitlements $(ENTITLEMENT_FILE) $(EXECUTABLE_FILE)
29 |
30 | compile:
31 | @xcrun -sdk iphoneos \
32 | clang -arch $(ARCH) \
33 | -mios-version-min=$(IOS_VERSION) \
34 | -fobjc-arc \
35 | -framework Foundation \
36 | -framework UIKit \
37 | -framework MobileCoreServices \
38 | -Os \
39 | -I $(HEADER_DIR1) \
40 | -I $(HEADER_DIR2) \
41 | -I $(HEADER_DIR3) \
42 | -I $(HEADER_DIR4) \
43 | -I $(HEADER_DIR5) \
44 | $(SOURCE_FILES) \
45 | -o $(EXECUTABLE_FILE)
--------------------------------------------------------------------------------
/MJAppTools/Extensions/NSFileHandle+Extension.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSFileHandle+Extension.m
3 | // MJOTool
4 | //
5 | // Created by MJ Lee on 2018/1/24.
6 | // Copyright © 2018年 MJ Lee. All rights reserved.
7 | //
8 |
9 | #import "NSFileHandle+Extension.h"
10 |
11 | @implementation NSFileHandle (Extension)
12 |
13 | - (uint32_t)mj_readUint32
14 | {
15 | size_t length = sizeof(uint32_t);
16 | uint32_t value;
17 | [[self readDataOfLength:length] getBytes:&value length:length];
18 | return value;
19 | }
20 |
21 | - (uint32_t)mj_staticReadUint32
22 | {
23 | unsigned long long offset = self.offsetInFile;
24 | uint32_t value = [self mj_readUint32];
25 | [self seekToFileOffset:offset];
26 | return value;
27 | }
28 |
29 | - (void)mj_readData:(void *)data length:(NSUInteger)length
30 | {
31 | [[self readDataOfLength:length] getBytes:data length:length];
32 | }
33 |
34 | - (void)mj_staticReadData:(void *)data length:(NSUInteger)length
35 | {
36 | unsigned long long offset = self.offsetInFile;
37 | [self mj_readData:data length:length];
38 | [self seekToFileOffset:offset];
39 | }
40 |
41 | - (void)mj_appendOffset:(unsigned long long)offset
42 | {
43 | [self seekToFileOffset:self.offsetInFile + offset];
44 | }
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData/
8 |
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata/
19 |
20 | ## Other
21 | *.moved-aside
22 | *.xccheckout
23 | *.xcscmblueprint
24 |
25 | ## Obj-C/Swift specific
26 | *.hmap
27 | *.ipa
28 | *.dSYM.zip
29 | *.dSYM
30 |
31 | # CocoaPods
32 | #
33 | # We recommend against adding the Pods directory to your .gitignore. However
34 | # you should judge for yourself, the pros and cons are mentioned at:
35 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
36 | #
37 | # Pods/
38 |
39 | # Carthage
40 | #
41 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
42 | # Carthage/Checkouts
43 |
44 | Carthage/Build
45 |
46 | # fastlane
47 | #
48 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
49 | # screenshots whenever they are needed.
50 | # For more information about the recommended setup visit:
51 | # https://docs.fastlane.tools/best-practices/source-control/#source-control
52 |
53 | fastlane/report.xml
54 | fastlane/Preview.html
55 | fastlane/screenshots
56 | fastlane/test_output
57 |
58 | # Code Injection
59 | #
60 | # After new code Injection tools there's a generated folder /iOSInjectionProject
61 | # https://github.com/johnno1962/injectionforxcode
62 |
63 | iOSInjectionProject/
64 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # MJAppTools
2 | 处理iOS APP信息的命令行工具
3 |
4 |
5 |
6 | ## 目前已有的功能
7 |
8 | - 正则搜索
9 | - 列出用户安装的所有应用
10 | - 列出用户安装的所有**加壳**应用
11 | - 列出用户安装的所有**未加壳**应用
12 | - 列出**系统**的应用
13 | - 应用信息
14 | - 应用名称
15 | - Bundle Identifier
16 | - Bundle URL(Main Bundle)
17 | - Data URL(Sandbox)
18 | - 架构信息(Architecture)
19 | - 架构名称(Architecture Name)
20 | - 加壳信息(Cryptid)
21 |
22 |
23 |
24 |
25 | ## 安装
26 |
27 | ### 1、下载MJAppTools项目
28 |
29 | 
30 |
31 |
32 |
33 | ### 2、编译
34 |
35 | - **make**(或者用Xcode打开项目**Command+B**编译一下)
36 |
37 | 
38 |
39 |
40 |
41 | - 生成命令行工具
42 |
43 | 
44 |
45 |
46 |
47 | ### 3、将命令行工具存放到手机的/usr/bin目录
48 |
49 | 
50 |
51 |
52 |
53 | ### 4、在手机上设置可执行权限
54 |
55 | ```shell
56 | chmod +x /usr/bin/MJAppTools
57 | ```
58 |
59 | 
60 |
61 |
62 |
63 | ### 5、开始使用MJAppTools
64 |
65 | 
66 |
67 |
68 |
69 | ## 用法
70 |
71 | ### 搜索用户安装的所有应用
72 | 
73 |
74 |
75 |
76 | ### 搜索系统的应用
77 |
78 | 
79 |
80 |
81 |
82 | ### 支持正则搜索
83 |
84 | - 搜索名称
85 | 
86 |
87 |
88 |
89 |
90 | - 搜索ID
91 | 
92 |
93 |
94 |
95 |
96 | - 搜索路径
97 | 
98 |
--------------------------------------------------------------------------------
/MJAppTools/Models/MJApp.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJApp.m
3 | // MJAppTools
4 | //
5 | // Created by MJ Lee on 2018/1/27.
6 | // Copyright © 2018年 MJ Lee. All rights reserved.
7 | //
8 |
9 | #import "MJApp.h"
10 | #import "FBApplicationInfo.h"
11 | #import "LSApplicationProxy.h"
12 | #import "NSFileHandle+Extension.h"
13 | #import "MJMachO.h"
14 |
15 | @interface MJApp()
16 | @property(copy, nonatomic) NSString *bundlePath;
17 | @property(copy, nonatomic) NSString *dataPath;
18 | @property(copy, nonatomic) NSString *bundleIdentifier;
19 | @property(copy, nonatomic) NSString *displayName;
20 | @property(copy, nonatomic) NSString *executableName;
21 | @property(assign, nonatomic, getter=isSystemApp) BOOL systemApp;
22 | @property(assign, nonatomic, getter=isHidden) BOOL hidden;
23 | @property (strong, nonatomic) MJMachO *executable;
24 | @end
25 |
26 | @implementation MJApp
27 |
28 | + (instancetype)appWithInfo:(FBApplicationInfo *)info
29 | {
30 | return [[self alloc] initWithInfo:info];
31 | }
32 |
33 | - (instancetype)initWithInfo:(FBApplicationInfo *)info
34 | {
35 | if (self = [super init]) {
36 | LSApplicationProxy *appProxy = (LSApplicationProxy*)info;
37 | self.displayName = appProxy.localizedName ? appProxy.localizedName : appProxy.itemName;
38 | self.bundleIdentifier = info.bundleIdentifier;
39 | self.bundlePath = info.bundleURL.path;
40 | self.dataPath = info.dataContainerURL.path;
41 | self.hidden = [appProxy.appTags containsObject:@"hidden"];
42 | self.systemApp = [info.applicationType isEqualToString:@"System"];
43 | }
44 | return self;
45 | }
46 |
47 | - (void)setupExecutable
48 | {
49 | NSRange range = NSMakeRange([self.bundlePath rangeOfString:@"/" options:NSBackwardsSearch].location + 1, self.bundlePath.lastPathComponent.length - 4);
50 | self.executableName = [self.bundlePath substringWithRange:range];
51 |
52 | NSString *filepath = [self.bundlePath stringByAppendingPathComponent:self.executableName];
53 | if (![[NSFileManager defaultManager] fileExistsAtPath:filepath]) return;
54 | NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:filepath];
55 |
56 | self.executable = [MJMachO machOWithFileHandle:readHandle];
57 |
58 | // 关闭
59 | [readHandle closeFile];
60 | }
61 |
62 | @end
63 |
--------------------------------------------------------------------------------
/MJAppTools/Tools/MJAppTools.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJAppTools.m
3 | // MJAppTools
4 | //
5 | // Created by MJ Lee on 2018/1/27.
6 | // Copyright © 2018年 MJ Lee. All rights reserved.
7 | //
8 |
9 | #import "MJAppTools.h"
10 | #import "MJMachO.h"
11 | #import
12 | #import "LSApplicationWorkspace.h"
13 | #import "LSApplicationProxy.h"
14 | #import "FBApplicationInfo.h"
15 |
16 | @implementation MJAppTools
17 |
18 | + (BOOL)match:(NSRegularExpression *)exp app:(MJApp *)app
19 | {
20 | if (!exp) return YES;
21 |
22 | if ([exp firstMatchInString:app.displayName options:0 range:NSMakeRange(0, app.displayName.length)]) return YES;
23 | if ([exp firstMatchInString:app.bundlePath options:0 range:NSMakeRange(0, app.bundlePath.length)]) return YES;
24 | if ([exp firstMatchInString:app.bundleIdentifier options:0 range:NSMakeRange(0, app.bundleIdentifier.length)]) return YES;
25 |
26 | return NO;
27 | }
28 |
29 | + (void)listUserAppsWithType:(MJListAppsType)type regex:(NSString *)regex operation:(void (^)(NSArray *apps))operation
30 | {
31 | if (!operation) return;
32 |
33 | // 正则
34 | NSRegularExpression *exp = regex ? [NSRegularExpression regularExpressionWithPattern:regex options:NSRegularExpressionCaseInsensitive error:nil] : nil;
35 |
36 | // 数组
37 | NSMutableArray *apps = [NSMutableArray array];
38 | NSArray *appInfos = [[LSApplicationWorkspace defaultWorkspace] allApplications];
39 |
40 | for (FBApplicationInfo *appInfo in appInfos) {
41 | if (!appInfo.bundleURL) continue;
42 | MJApp *app = [MJApp appWithInfo:appInfo];
43 | // 类型
44 | if (type != MJListAppsTypeSystem && app.isSystemApp) continue;
45 | if (type == MJListAppsTypeSystem && !app.isSystemApp) continue;
46 |
47 | // 隐藏
48 | if (app.isHidden) continue;
49 |
50 | // 过滤
51 | if ([app.bundleIdentifier containsString:@"com.apple.webapp"]) continue;
52 |
53 | // 正则
54 | if (![self match:exp app:app]) continue;
55 |
56 | // 可执行文件
57 | [app setupExecutable];
58 | if (!app.executable) continue;
59 |
60 | // 加密
61 | if (type == MJListAppsTypeUserDecrypted && app.executable.isEncrypted) continue;
62 | if (type == MJListAppsTypeUserEncrypted && !app.executable.isEncrypted) continue;
63 |
64 | [apps addObject:app];
65 | }
66 |
67 | operation(apps);
68 | }
69 |
70 | @end
71 |
--------------------------------------------------------------------------------
/MJAppTools/Tools/MJPrintTools.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJPrintTools.m
3 | // MJAppTools
4 | //
5 | // Created by MJ Lee on 2018/1/28.
6 | // Copyright © 2018年 MJ Lee. All rights reserved.
7 | //
8 |
9 | #import "MJPrintTools.h"
10 |
11 | const NSString *MJPrintColorDefault = @"\033[0m";
12 |
13 | const NSString *MJPrintColorRed = @"\033[1;31m";
14 | const NSString *MJPrintColorGreen = @"\033[1;32m";
15 | const NSString *MJPrintColorBlue = @"\033[1;34m";
16 | const NSString *MJPrintColorWhite = @"\033[1;37m";
17 | const NSString *MJPrintColorBlack = @"\033[1;30m";
18 | const NSString *MJPrintColorYellow = @"\033[1;33m";
19 | const NSString *MJPrintColorCyan = @"\033[1;36m";
20 | const NSString *MJPrintColorMagenta = @"\033[1;35m";
21 |
22 | const NSString *MJPrintColorWarning = @"\033[1;33m";
23 | const NSString *MJPrintColorError = @"\033[1;31m";
24 | const NSString *MJPrintColorStrong = @"\033[1;32m";
25 |
26 | #define MJBeginFormat \
27 | if (!format) return; \
28 | va_list args; \
29 | va_start(args, format); \
30 | format = [[NSString alloc] initWithFormat:format arguments:args];
31 |
32 | #define MJEndFormat va_end(args);
33 |
34 | @implementation MJPrintTools
35 |
36 | + (void)printError:(NSString *)format, ...
37 | {
38 | MJBeginFormat;
39 | format = [@"Error: " stringByAppendingString:format];
40 | [self printColor:(NSString *)MJPrintColorError format:format];
41 | }
42 |
43 | + (void)printWarning:(NSString *)format, ...
44 | {
45 | MJBeginFormat;
46 | format = [@"Warning: " stringByAppendingString:format];
47 | [self printColor:(NSString *)MJPrintColorWarning format:format];
48 | MJEndFormat;
49 | }
50 |
51 | + (void)printStrong:(NSString *)format, ...
52 | {
53 | MJBeginFormat;
54 | [self printColor:(NSString *)MJPrintColorStrong format:format];
55 | MJEndFormat;
56 | }
57 |
58 | + (void)print:(NSString *)format, ...
59 | {
60 | MJBeginFormat;
61 | [self printColor:nil format:format];
62 | MJEndFormat;
63 | }
64 |
65 | + (void)printColor:(NSString *)color format:(NSString *)format, ...
66 | {
67 | MJBeginFormat;
68 |
69 | NSMutableString *printStr = [NSMutableString string];
70 | if (color && ![color isEqual:MJPrintColorDefault]) {
71 | [printStr appendString:color];
72 | [printStr appendString:format];
73 | [printStr appendString:(NSString *)MJPrintColorDefault];
74 | } else {
75 | [printStr appendString:(NSString *)MJPrintColorDefault];
76 | [printStr appendString:format];
77 | }
78 | printf("%s", printStr.UTF8String);
79 |
80 | MJEndFormat;
81 | }
82 |
83 | @end
84 |
--------------------------------------------------------------------------------
/MJAppTools/Models/MJMachO.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJMachO.m
3 | // MJAppTools
4 | //
5 | // Created by MJ Lee on 2018/1/27.
6 | // Copyright © 2018年 MJ Lee. All rights reserved.
7 | //
8 |
9 | #import "MJMachO.h"
10 | #import
11 | #import
12 | #import "NSFileHandle+Extension.h"
13 |
14 | #define MJEndianConvert(big, value) \
15 | ((big) ? OSSwapInt32((value)) : (value))
16 |
17 | @implementation MJMachO
18 |
19 | + (instancetype)machOWithFileHandle:(NSFileHandle *)handle
20 | {
21 | return [[self alloc] initWithFileHandle:handle];
22 | }
23 |
24 | - (instancetype)initWithFileHandle:(NSFileHandle *)handle
25 | {
26 | if (self = [super init]) {
27 | uint32_t magic = [handle mj_staticReadUint32];
28 | if (magic == FAT_CIGAM || magic == FAT_MAGIC) { // FAT
29 | [self setupFat:handle];
30 | } else if (magic == MH_MAGIC || magic == MH_CIGAM
31 | || magic == MH_MAGIC_64 || magic == MH_CIGAM_64) {
32 | [self setupMachO:handle];
33 | } else {
34 | return nil;
35 | }
36 | }
37 | return self;
38 | }
39 |
40 | - (void)setupMachO:(NSFileHandle *)handle
41 | {
42 | // magic
43 | uint32_t magic = [handle mj_staticReadUint32];
44 |
45 | // header
46 | struct mach_header header;
47 | int headerLength = sizeof(struct mach_header);
48 | BOOL bigEndian = (magic == MH_CIGAM);
49 | BOOL is64bit = NO;
50 | if (magic == MH_MAGIC_64 || magic == MH_CIGAM_64) {
51 | headerLength = sizeof(struct mach_header_64);
52 | bigEndian = (magic == MH_CIGAM_64);
53 | is64bit = YES;
54 | }
55 |
56 | // 读取头部数据
57 | [handle mj_readData:&header length:headerLength];
58 | uint32_t cputype = MJEndianConvert(bigEndian, header.cputype);
59 | uint32_t cpusubtype = MJEndianConvert(bigEndian, header.cpusubtype);
60 | if (cputype == CPU_TYPE_X86_64) {
61 | self.architecture = @"x86_64";
62 | } else if (cputype == CPU_TYPE_X86) {
63 | if (cpusubtype == CPU_SUBTYPE_I386_ALL) {
64 | self.architecture = @"i386";
65 | } else if (cpusubtype == CPU_SUBTYPE_X86_ALL) {
66 | self.architecture = @"x86";
67 | }
68 | } else if (cputype == CPU_TYPE_ARM64) {
69 | self.architecture = @"arm_64";
70 | } else if (cputype == CPU_TYPE_ARM) {
71 | if (cpusubtype == CPU_SUBTYPE_ARM_V6) {
72 | self.architecture = @"arm_v6";
73 | } else if (cpusubtype == CPU_SUBTYPE_ARM_V6) {
74 | self.architecture = @"arm_v6";
75 | } else if (cpusubtype == CPU_SUBTYPE_ARM_V7) {
76 | self.architecture = @"arm_v7";
77 | } else if (cpusubtype == CPU_SUBTYPE_ARM_V7S) {
78 | self.architecture = @"arm_v7s";
79 | }
80 | }
81 |
82 | // lc的数量
83 | uint32_t ncmds = MJEndianConvert(bigEndian, header.ncmds);
84 | // 遍历lc
85 | for (int i = 0; i < ncmds; i++) {
86 | struct load_command lc;
87 | [handle mj_staticReadData:&lc length:sizeof(struct load_command)];
88 |
89 | if (lc.cmd == LC_ENCRYPTION_INFO || lc.cmd == LC_ENCRYPTION_INFO_64) {
90 | struct encryption_info_command eic;
91 | [handle mj_readData:&eic length:sizeof(struct encryption_info_command)];
92 | self.encrypted = (eic.cryptid != 0);
93 | break;
94 | }
95 |
96 | [handle seekToFileOffset:handle.offsetInFile + lc.cmdsize];
97 | }
98 | }
99 |
100 | - (void)setupFat:(NSFileHandle *)handle
101 | {
102 | self.fat = YES;
103 |
104 | // fat头
105 | struct fat_header header;
106 | [handle mj_readData:&header length:sizeof(struct fat_header)];
107 | BOOL bigEndian = (header.magic == FAT_CIGAM);
108 |
109 | // 架构数量
110 | uint32_t archCount = MJEndianConvert(bigEndian, header.nfat_arch);
111 | NSMutableArray *machOs = [NSMutableArray arrayWithCapacity:archCount];
112 |
113 | for (int i = 0; i < archCount; i++) {
114 | // 读取一个架构的元数据
115 | struct fat_arch arch;
116 | [handle mj_readData:&arch length:sizeof(struct fat_arch)];
117 | // 保留偏移
118 | unsigned long long archMetaOffset = handle.offsetInFile;
119 |
120 | // 偏移到架构具体数据的开始
121 | [handle seekToFileOffset:MJEndianConvert(bigEndian, arch.offset)];
122 | MJMachO *machO = [[[self class] alloc] init];
123 | [machO setupMachO:handle];
124 | if (machO.isEncrypted) {
125 | self.encrypted = YES;
126 | }
127 | [machOs addObject:machO];
128 |
129 | // 跳过这个架构的元数据
130 | [handle seekToFileOffset:archMetaOffset];
131 | }
132 |
133 | self.machOs = machOs;
134 | }
135 |
136 | @end
137 |
--------------------------------------------------------------------------------
/MJAppTools/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // MJAppTools-iOS
4 | //
5 | // Created by MJ Lee on 2018/1/27.
6 | // Copyright © 2018年 MJ Lee. All rights reserved.
7 | //
8 |
9 | #import "MJAppTools.h"
10 | #import "MJMachO.h"
11 | #import
12 | #import "MJPrintTools.h"
13 |
14 | #define MJEncryptedString @"加壳"
15 | #define MJDecryptedString @"未加壳"
16 |
17 | #define MJPrintNewLine printf("\n")
18 | #define MJPrintDivider(n) \
19 | NSMutableString *dividerString = [NSMutableString string]; \
20 | for (int i = 0; i<(n); i++) { \
21 | [dividerString appendString:@"-"]; \
22 | } \
23 | [MJPrintTools print:dividerString];
24 |
25 | static NSString *MJPrintColorCount;
26 | static NSString *MJPrintColorNo;
27 | static NSString *MJPrintColorCrypt;
28 | static NSString *MJPrintColorName;
29 | static NSString *MJPrintColorPath;
30 | static NSString *MJPrintColorId;
31 | static NSString *MJPrintColorArch;
32 | static NSString *MJPrintColorTip;
33 |
34 | void print_usage(void);
35 | void list_machO(MJMachO *machO);
36 | void list_app(MJApp *app, int index);
37 | void list_apps(MJListAppsType type, NSString *regex);
38 | void init_colors(void);
39 |
40 | int main(int argc, const char * argv[]) {
41 | @autoreleasepool {
42 | init_colors();
43 |
44 | BOOL gt_ios8 = ([[[UIDevice currentDevice] systemVersion] compare:@"8" options:NSNumericSearch] != NSOrderedAscending);
45 | if (!gt_ios8) {
46 | [MJPrintTools printError:@"MJAppTools目前不支持iOS8以下系统\n"];
47 | return 0;
48 | }
49 |
50 | if (argc == 1) { // 参数不够
51 | print_usage();
52 | return 0;
53 | }
54 |
55 | const char *firstArg = argv[1];
56 | if (firstArg[0] == '-' && firstArg[1] == 'l') {
57 | NSString *regex = nil;
58 | if (argc > 2) {
59 | regex = [NSString stringWithUTF8String:argv[2]];
60 | }
61 |
62 | if (strcmp(firstArg, "-le") == 0) {
63 | list_apps(MJListAppsTypeUserEncrypted, regex);
64 | } else if (strcmp(firstArg, "-ld") == 0) {
65 | list_apps(MJListAppsTypeUserDecrypted, regex);
66 | } else if (strcmp(firstArg, "-ls") == 0) {
67 | list_apps(MJListAppsTypeSystem, regex);
68 | } else {
69 | list_apps(MJListAppsTypeUser, regex);
70 | }
71 | } else {
72 | print_usage();
73 | }
74 | }
75 | return 0;
76 | }
77 |
78 | void init_colors()
79 | {
80 | MJPrintColorCount = MJPrintColorMagenta;
81 | MJPrintColorNo = MJPrintColorDefault;
82 | MJPrintColorName = MJPrintColorRed;
83 | MJPrintColorPath = MJPrintColorBlue;
84 | MJPrintColorCrypt = MJPrintColorMagenta;
85 | MJPrintColorId = MJPrintColorCyan;
86 | MJPrintColorArch = MJPrintColorGreen;
87 | MJPrintColorTip = MJPrintColorCyan;
88 | }
89 |
90 | void print_usage()
91 | {
92 | [MJPrintTools printColor:MJPrintColorTip format:@" -l "];
93 | [MJPrintTools print:@"\t列出用户安装的应用\n"];
94 |
95 | [MJPrintTools printColor:MJPrintColorTip format:@" -le "];
96 | [MJPrintTools print:@"\t列出用户安装的"];
97 | [MJPrintTools printColor:MJPrintColorCrypt format:MJEncryptedString];
98 | [MJPrintTools print:@"应用\n"];
99 |
100 | [MJPrintTools printColor:MJPrintColorTip format:@" -ld "];
101 | [MJPrintTools print:@"\t列出用户安装的"];
102 | [MJPrintTools printColor:MJPrintColorCrypt format:MJDecryptedString];
103 | [MJPrintTools print:@"应用\n"];
104 |
105 | [MJPrintTools printColor:MJPrintColorTip format:@" -ls "];
106 | [MJPrintTools print:@"\t列出"];
107 | [MJPrintTools printColor:MJPrintColorCrypt format:@"系统"];
108 | [MJPrintTools print:@"的应用\n"];
109 | }
110 |
111 | void list_app(MJApp *app, int index)
112 | {
113 | [MJPrintTools print:@"# "];
114 | [MJPrintTools printColor:MJPrintColorNo format:@"%02d ", index +1];
115 | [MJPrintTools print:@"【"];
116 | [MJPrintTools printColor:MJPrintColorName format:@"%@", app.displayName];
117 | [MJPrintTools print:@"】 "];
118 | [MJPrintTools print:@"<"];
119 | [MJPrintTools printColor:MJPrintColorId format:@"%@", app.bundleIdentifier];
120 | [MJPrintTools print:@">"];
121 |
122 | MJPrintNewLine;
123 | [MJPrintTools print:@" "];
124 | [MJPrintTools printColor:MJPrintColorPath format:app.bundlePath];
125 |
126 | if (app.dataPath.length) {
127 | MJPrintNewLine;
128 | [MJPrintTools print:@" "];
129 | [MJPrintTools printColor:MJPrintColorPath format:app.dataPath];
130 | }
131 |
132 | if (app.executable.isFat) {
133 | MJPrintNewLine;
134 | [MJPrintTools print:@" "];
135 | [MJPrintTools printColor:MJPrintColorArch format:@"Universal binary"];
136 | for (MJMachO *machO in app.executable.machOs) {
137 | MJPrintNewLine;
138 | printf(" ");
139 | list_machO(machO);
140 | }
141 | } else {
142 | MJPrintNewLine;
143 | [MJPrintTools print:@" "];
144 | list_machO(app.executable);
145 | }
146 | }
147 |
148 | void list_apps(MJListAppsType type, NSString *regex)
149 | {
150 | [MJAppTools listUserAppsWithType:type regex:regex operation:^(NSArray *apps) {
151 | [MJPrintTools print:@"# 一共"];
152 | [MJPrintTools printColor:MJPrintColorCount format:@"%zd", apps.count];
153 | [MJPrintTools print:@"个"];
154 | if (type == MJListAppsTypeUserDecrypted) {
155 | [MJPrintTools printColor:MJPrintColorCrypt format:MJDecryptedString];
156 | } else if (type == MJListAppsTypeUserEncrypted) {
157 | [MJPrintTools printColor:MJPrintColorCrypt format:MJEncryptedString];
158 | } else if (type == MJListAppsTypeSystem) {
159 | [MJPrintTools printColor:MJPrintColorCrypt format:@"系统"];
160 | }
161 | [MJPrintTools print:@"应用"];
162 |
163 | for (int i = 0; i < apps.count; i++) {
164 | MJPrintNewLine;
165 | MJPrintDivider(5);
166 | MJPrintNewLine;
167 | list_app(apps[i], i);
168 | }
169 | MJPrintNewLine;
170 | }];
171 | }
172 |
173 | void list_machO(MJMachO *machO)
174 | {
175 | [MJPrintTools printColor:MJPrintColorArch format:machO.architecture];
176 | if (machO.isEncrypted) {
177 | [MJPrintTools print:@" "];
178 | [MJPrintTools printColor:MJPrintColorCrypt format:MJEncryptedString];
179 | }
180 | }
181 |
--------------------------------------------------------------------------------
/MJAppTools/SystemHeaders/FBApplicationInfo.h:
--------------------------------------------------------------------------------
1 |
2 | #import "FBBundleInfo.h"
3 |
4 | @interface FBApplicationInfo : FBBundleInfo {
5 | NSString * _appIDEntitlement;
6 | NSSet * _backgroundModes;
7 | BOOL _beta;
8 | BOOL _blocked;
9 | NSURL * _bundleContainerURL;
10 | NSArray * _customMachServices;
11 | NSURL * _dataContainerURL;
12 | NSArray * _deviceFamilies;
13 | NSString * _displayName;
14 | NSNumber * _downloaderDSID;
15 | BOOL _enabled;
16 | NSDictionary * _environmentVariables;
17 | NSURL * _executableURL;
18 | BOOL _exitsOnSuspend;
19 | NSArray * _externalAccessoryProtocols;
20 | BOOL _hasViewServicesEntitlement;
21 | BOOL _initialized;
22 | BOOL _installing;
23 | BOOL _isManaged;
24 | NSNumber * _itemID;
25 | double _lastModifiedDate;
26 | NSDictionary * _lazy_entitlements;
27 | NSString * _lazy_fallbackFolderName;
28 | NSArray * _lazy_folderNames;
29 | float _minimumBrightnessLevel;
30 | BOOL _newsstand;
31 | long _once_entitlements;
32 | long _once_folderNames;
33 | NSString * _preferenceDomain;
34 | BOOL _provisioningProfileValidated;
35 | NSNumber * _purchaserDSID;
36 | int _ratingRank;
37 | NSArray * _requiredCapabilities;
38 | BOOL _requiresPersistentWiFi;
39 | BOOL _restricted;
40 | NSURL * _sandboxURL;
41 | NSString * _sdkVersion;
42 | NSString * _signerIdentity;
43 | unsigned int _supportedInterfaceOrientations;
44 | NSArray * _tags;
45 | unsigned int _type;
46 | BOOL _uninstalling;
47 | }
48 |
49 | @property (getter=_appIDEntitlement, nonatomic, readonly, copy) NSString *appIDEntitlement;
50 | @property (getter=isBeta, nonatomic, readonly) BOOL beta;
51 | @property (getter=isBlocked, nonatomic, readonly) BOOL blocked;
52 | @property (nonatomic, readonly, retain) NSURL *bundleContainerURL;
53 | @property (nonatomic, readonly, retain) NSArray *customMachServices;
54 | @property (copy, nonatomic) NSString *applicationType;
55 | @property (nonatomic, readonly, retain) NSURL *dataContainerURL;
56 | @property (readonly, copy) NSString *debugDescription;
57 | @property (readonly, copy) NSString *description;
58 | @property (nonatomic, readonly, retain) NSArray *deviceFamilies;
59 | @property (nonatomic, readonly, copy) NSString *displayName;
60 | @property (nonatomic, readonly, retain) NSNumber *downloaderDSID;
61 | @property (getter=isEnabled, nonatomic, readonly) BOOL enabled;
62 | @property (nonatomic, readonly, retain) NSDictionary *entitlements;
63 | @property (nonatomic, readonly, retain) NSDictionary *environmentVariables;
64 | @property (nonatomic, readonly, retain) NSURL *executableURL;
65 | @property (getter=isExitsOnSuspend, nonatomic, readonly) BOOL exitsOnSuspend;
66 | @property (nonatomic, readonly, retain) NSArray *externalAccessoryProtocols;
67 | @property (nonatomic, readonly, retain) NSString *fallbackFolderName;
68 | @property (nonatomic, readonly, retain) NSArray *folderNames;
69 | @property (getter=hasFreeDeveloperProvisioningProfile, nonatomic, readonly) BOOL freeDeveloperProvisioningProfile;
70 | @property (nonatomic, readonly) BOOL hasViewServicesEntitlement;
71 | @property (readonly) unsigned int hash;
72 | @property (getter=_isInstalling, setter=_setInstalling:, nonatomic) BOOL installing;
73 | @property (nonatomic, readonly, retain) NSNumber *itemID;
74 | @property (nonatomic, readonly) double lastModifiedDate;
75 | @property (nonatomic, readonly) float minimumBrightnessLevel;
76 | @property (getter=isNewsstand, nonatomic, readonly) BOOL newsstand;
77 | @property (nonatomic, readonly, copy) NSString *preferenceDomain;
78 | @property (getter=isProvisioningProfileValidated, nonatomic, readonly) BOOL provisioningProfileValidated;
79 | @property (nonatomic, readonly, retain) NSNumber *purchaserDSID;
80 | @property (nonatomic, readonly) int ratingRank;
81 | @property (nonatomic, readonly, retain) NSArray *requiredCapabilities;
82 | @property (nonatomic, readonly) BOOL requiresPersistentWiFi;
83 | @property (getter=isRestricted, nonatomic, readonly) BOOL restricted;
84 | @property (nonatomic, readonly, retain) NSURL *sandboxURL;
85 | @property (nonatomic, readonly, copy) NSString *sdkVersion;
86 | @property (nonatomic, readonly) int signatureState;
87 | @property (nonatomic, readonly, copy) NSString *signerIdentity;
88 | @property (readonly) Class superclass;
89 | @property (nonatomic, readonly) unsigned int supportedInterfaceOrientations;
90 | @property (nonatomic, readonly, retain) NSArray *tags;
91 | @property (nonatomic, readonly) unsigned int type;
92 | @property (getter=_isUninstalling, setter=_setUninstalling:, nonatomic) BOOL uninstalling;
93 | @property (getter=hasUniversalProvisioningProfile, nonatomic, readonly) BOOL universalProvisioningProfile;
94 |
95 | + (unsigned int)_applicationTypeForProxy:(id)arg1;
96 | + (void)_buildDefaults:(id)arg1 fromInfo:(id)arg2 entitlements:(id)arg3 appType:(unsigned int)arg4 isOnOrAfterOkemo:(BOOL)arg5;
97 | + (unsigned int)_computeSupportedInterfaceOrientationsWithInfo:(id)arg1 forDefaults:(id)arg2;
98 | + (id)_configureEnvironment:(id)arg1 withInfo:(id)arg2 isPreApex:(BOOL)arg3;
99 | + (id)_genreNameForID:(int)arg1;
100 |
101 | - (id)_appIDEntitlement;
102 | - (id)_applicationTrustData;
103 | - (id)_initForProfileManagerTesting;
104 | - (id)_initWithApplicationProxy:(id)arg1;
105 | - (id)_initWithBundleIdentifier:(id)arg1 url:(id)arg2;
106 | - (id)_initWithBundleProxy:(id)arg1 overrideURL:(id)arg2;
107 | - (BOOL)_isInstalling;
108 | - (BOOL)_isUninstalling;
109 | - (void)_loadFromProxy:(id)arg1;
110 | - (int)_mapSignatureStateFromTrustState:(unsigned int)arg1;
111 | - (void)_once_loadFolderNamesIfNecessary;
112 | - (void)_overrideTags:(id)arg1;
113 | - (id)_profileManager;
114 | - (void)_setInstalling:(BOOL)arg1;
115 | - (void)_setProfileManager:(id)arg1;
116 | - (void)_setUninstalling:(BOOL)arg1;
117 | - (void)acceptApplicationSignatureIdentity;
118 | - (BOOL)builtOnOrAfterSDKVersion:(id)arg1;
119 | - (id)bundleContainerURL;
120 | - (id)customMachServices;
121 | - (id)dataContainerURL;
122 | - (void)dealloc;
123 | - (id)debugDescription;
124 | - (id)defaults;
125 | - (id)description;
126 | - (id)descriptionBuilderWithMultilinePrefix:(id)arg1;
127 | - (id)descriptionWithMultilinePrefix:(id)arg1;
128 | - (id)deviceFamilies;
129 | - (id)displayName;
130 | - (id)downloaderDSID;
131 | - (id)entitlements;
132 | - (id)environmentVariables;
133 | - (id)executableURL;
134 | - (id)externalAccessoryProtocols;
135 | - (id)fallbackFolderName;
136 | - (id)folderNames;
137 | - (BOOL)hasFreeDeveloperProvisioningProfile;
138 | - (BOOL)hasUniversalProvisioningProfile;
139 | - (BOOL)hasViewServicesEntitlement;
140 | - (id)initWithApplicationProxy:(id)arg1;
141 | - (BOOL)isBeta;
142 | - (BOOL)isBlocked;
143 | - (BOOL)isEnabled;
144 | - (BOOL)isExitsOnSuspend;
145 | - (BOOL)isNewsstand;
146 | - (BOOL)isProvisioningProfileValidated;
147 | - (BOOL)isRestricted;
148 | - (id)itemID;
149 | - (double)lastModifiedDate;
150 | - (float)minimumBrightnessLevel;
151 | - (id)preferenceDomain;
152 | - (id)purchaserDSID;
153 | - (int)ratingRank;
154 | - (id)requiredCapabilities;
155 | - (BOOL)requiresPersistentWiFi;
156 | - (id)sandboxURL;
157 | - (id)sdkVersion;
158 | - (int)signatureState;
159 | - (id)signerIdentity;
160 | - (BOOL)statusBarHiddenForInterfaceOrientation:(int)arg1 onDisplay:(id)arg2;
161 | - (id)succinctDescription;
162 | - (id)succinctDescriptionBuilder;
163 | - (unsigned int)supportedInterfaceOrientations;
164 | - (BOOL)supportsAllInterfaceOrientations;
165 | - (BOOL)supportsBackgroundMode:(id)arg1;
166 | - (BOOL)supportsDeviceFamily:(unsigned int)arg1;
167 | - (BOOL)supportsInterfaceOrientation:(int)arg1;
168 | - (id)tags;
169 | - (unsigned int)type;
170 |
171 | @end
172 |
--------------------------------------------------------------------------------
/MJAppTools/SystemHeaders/LSApplicationWorkspace.h:
--------------------------------------------------------------------------------
1 |
2 | @interface LSApplicationWorkspace : NSObject {
3 | NSXPCConnection * _connection;
4 | NSMutableDictionary * _createdInstallProgresses;
5 | BOOL _enhancedAppValidationEnabled;
6 | }
7 |
8 | @property (readonly) NSXPCConnection *connection;
9 | @property (readonly) NSMutableDictionary *createdInstallProgresses;
10 |
11 | + (id)activeManagedConfigurationRestrictionUUIDs;
12 | + (id)callbackQueue;
13 | + (id)defaultWorkspace;
14 |
15 | - (id)URLOverrideForURL:(id)arg1;
16 | - (id)URLSchemesOfType:(int)arg1;
17 | - (void)_LSClearSchemaCaches;
18 | - (void)_LSFailedToOpenURL:(id)arg1 withBundle:(id)arg2;
19 | - (BOOL)_LSPrivateDatabaseNeedsRebuild;
20 | - (BOOL)_LSPrivateRebuildApplicationDatabasesForSystemApps:(BOOL)arg1 internal:(BOOL)arg2 user:(BOOL)arg3;
21 | - (void)_LSPrivateSyncWithMobileInstallation;
22 | - (void)_LSSendApplicationIconDidChangeForBundleID:(id)arg1;
23 | - (void)addObserver:(id)arg1;
24 | - (id)allApplications;
25 | - (id)allInstalledApplications;
26 | - (BOOL)allowsAlternateIcons;
27 | - (id)applicationForOpeningResource:(id)arg1;
28 | - (id)applicationForUserActivityDomainName:(id)arg1;
29 | - (id)applicationForUserActivityType:(id)arg1;
30 | - (BOOL)applicationIsInstalled:(id)arg1;
31 | - (id)applicationProxiesWithPlistFlags:(unsigned long)arg1 bundleFlags:(unsigned long long)arg2;
32 | - (id)applicationsAvailableForHandlingURLScheme:(id)arg1;
33 | - (id)applicationsAvailableForOpeningDocument:(id)arg1;
34 | - (id)applicationsAvailableForOpeningURL:(id)arg1;
35 | - (id)applicationsAvailableForOpeningURL:(id)arg1 legacySPI:(BOOL)arg2;
36 | - (id)applicationsForUserActivityType:(id)arg1;
37 | - (id)applicationsForUserActivityType:(id)arg1 limit:(unsigned int)arg2;
38 | - (id)applicationsOfType:(unsigned int)arg1;
39 | - (id)applicationsWithAudioComponents;
40 | - (id)applicationsWithUIBackgroundModes;
41 | - (id)applicationsWithVPNPlugins;
42 | - (id)bundleIdentifiersForMachOUUIDs:(id)arg1 error:(id*)arg2;
43 | - (void)clearAdvertisingIdentifier;
44 | - (void)clearCreatedProgressForBundleID:(id)arg1;
45 | - (id)connection;
46 | - (id)createDeviceIdentifierWithVendorName:(id)arg1 bundleIdentifier:(id)arg2;
47 | - (id)createdInstallProgresses;
48 | - (void)dealloc;
49 | - (id)delegateProxy;
50 | - (id)deviceIdentifierForAdvertising;
51 | - (id)deviceIdentifierForVendor;
52 | - (id)directionsApplications;
53 | - (BOOL)downgradeApplicationToPlaceholder:(id)arg1 withOptions:(id)arg2 error:(id*)arg3;
54 | - (BOOL)enhancedAppLoggingEnabled;
55 | - (void)enumerateApplicationsForSiriWithBlock:(id /* block */)arg1;
56 | - (void)enumerateApplicationsOfType:(unsigned int)arg1 block:(id /* block */)arg2;
57 | - (void)enumerateApplicationsOfType:(unsigned int)arg1 legacySPI:(BOOL)arg2 block:(id /* block */)arg3;
58 | - (void)enumerateBundlesOfType:(unsigned int)arg1 block:(id /* block */)arg2;
59 | - (void)enumerateBundlesOfType:(unsigned int)arg1 legacySPI:(BOOL)arg2 block:(id /* block */)arg3;
60 | - (void)enumerateBundlesOfType:(unsigned int)arg1 usingBlock:(id /* block */)arg2;
61 | - (void)enumeratePluginsMatchingQuery:(id)arg1 withBlock:(id /* block */)arg2;
62 | - (BOOL)establishConnection;
63 | - (BOOL)getClaimedActivityTypes:(id*)arg1 domains:(id*)arg2;
64 | - (void)getKnowledgeUUID:(id*)arg1 andSequenceNumber:(id*)arg2;
65 | - (id)init;
66 | - (BOOL)installApplication:(id)arg1 withOptions:(id)arg2;
67 | - (BOOL)installApplication:(id)arg1 withOptions:(id)arg2 error:(id*)arg3;
68 | - (BOOL)installApplication:(id)arg1 withOptions:(id)arg2 error:(id*)arg3 usingBlock:(id /* block */)arg4;
69 | - (BOOL)installPhaseFinishedForProgress:(id)arg1;
70 | - (id)installProgressForApplication:(id)arg1 withPhase:(unsigned int)arg2;
71 | - (id)installProgressForBundleID:(id)arg1 makeSynchronous:(unsigned char)arg2;
72 | - (id)installedPlugins;
73 | - (BOOL)invalidateIconCache:(id)arg1;
74 | - (BOOL)isApplicationAvailableToOpenURL:(id)arg1 error:(id*)arg2;
75 | - (BOOL)isApplicationAvailableToOpenURL:(id)arg1 includePrivateURLSchemes:(BOOL)arg2 error:(id*)arg3;
76 | - (BOOL)isApplicationAvailableToOpenURLCommon:(id)arg1 includePrivateURLSchemes:(BOOL)arg2 error:(id*)arg3;
77 | - (id)legacyApplicationProxiesListWithType:(unsigned int)arg1;
78 | - (id)machOUUIDsForBundleIdentifiers:(id)arg1 error:(id*)arg2;
79 | - (id)observedInstallProgresses;
80 | - (BOOL)openApplicationWithBundleID:(id)arg1;
81 | - (BOOL)openSensitiveURL:(id)arg1 withOptions:(id)arg2;
82 | - (BOOL)openSensitiveURL:(id)arg1 withOptions:(id)arg2 error:(id*)arg3;
83 | - (BOOL)openURL:(id)arg1;
84 | - (BOOL)openURL:(id)arg1 withOptions:(id)arg2;
85 | - (BOOL)openURL:(id)arg1 withOptions:(id)arg2 error:(id*)arg3;
86 | - (void)openUserActivity:(id)arg1 withApplicationProxy:(id)arg2 completionHandler:(id /* block */)arg3;
87 | - (void)openUserActivity:(id)arg1 withApplicationProxy:(id)arg2 options:(id)arg3 completionHandler:(id /* block */)arg4;
88 | - (id)operationToOpenResource:(id)arg1 usingApplication:(id)arg2 uniqueDocumentIdentifier:(id)arg3 sourceIsManaged:(BOOL)arg4 userInfo:(id)arg5 delegate:(id)arg6;
89 | - (id)operationToOpenResource:(id)arg1 usingApplication:(id)arg2 uniqueDocumentIdentifier:(id)arg3 sourceIsManaged:(BOOL)arg4 userInfo:(id)arg5 options:(id)arg6 delegate:(id)arg7;
90 | - (id)operationToOpenResource:(id)arg1 usingApplication:(id)arg2 uniqueDocumentIdentifier:(id)arg3 userInfo:(id)arg4;
91 | - (id)operationToOpenResource:(id)arg1 usingApplication:(id)arg2 uniqueDocumentIdentifier:(id)arg3 userInfo:(id)arg4 delegate:(id)arg5;
92 | - (id)operationToOpenResource:(id)arg1 usingApplication:(id)arg2 userInfo:(id)arg3;
93 | - (id)placeholderApplications;
94 | - (id)pluginsMatchingQuery:(id)arg1 applyFilter:(id /* block */)arg2;
95 | - (id)pluginsWithIdentifiers:(id)arg1 protocols:(id)arg2 version:(id)arg3;
96 | - (id)pluginsWithIdentifiers:(id)arg1 protocols:(id)arg2 version:(id)arg3 applyFilter:(id /* block */)arg4;
97 | - (id)pluginsWithIdentifiers:(id)arg1 protocols:(id)arg2 version:(id)arg3 withFilter:(id /* block */)arg4;
98 | - (id)privateURLSchemes;
99 | - (id)publicURLSchemes;
100 | - (BOOL)registerApplication:(id)arg1;
101 | - (BOOL)registerApplicationDictionary:(id)arg1;
102 | - (BOOL)registerApplicationDictionary:(id)arg1 withObserverNotification:(int)arg2;
103 | - (BOOL)registerPlugin:(id)arg1;
104 | - (id)remoteObserver;
105 | - (void)removeDeviceIdentifierForVendorName:(id)arg1 bundleIdentifier:(id)arg2;
106 | - (void)removeInstallProgressForBundleID:(id)arg1;
107 | - (void)removeObserver:(id)arg1;
108 | - (id)removedSystemApplications;
109 | - (BOOL)restoreSystemApplication:(id)arg1;
110 | - (void)scanForApplicationStateChangesFromRank:(id)arg1 toRank:(id)arg2;
111 | - (void)scanForApplicationStateChangesWithWhitelist:(id)arg1;
112 | - (void)sendApplicationStateChangedNotificationsFor:(id)arg1;
113 | - (void)sendInstallNotificationForApp:(id)arg1 withPlugins:(id)arg2;
114 | - (void)sendNotificationForApp:(id)arg1 withExtensions:(id)arg2 OperationType:(unsigned int)arg3 success:(BOOL)arg4;
115 | - (void)sendUninstallNotificationForApp:(id)arg1 withPlugins:(id)arg2;
116 | - (BOOL)uninstallApplication:(id)arg1 withOptions:(id)arg2;
117 | - (BOOL)uninstallApplication:(id)arg1 withOptions:(id)arg2 error:(id*)arg3 usingBlock:(id /* block */)arg4;
118 | - (BOOL)uninstallApplication:(id)arg1 withOptions:(id)arg2 usingBlock:(id /* block */)arg3;
119 | - (BOOL)uninstallSystemApplication:(id)arg1 withOptions:(id)arg2 usingBlock:(id /* block */)arg3;
120 | - (BOOL)unregisterApplication:(id)arg1;
121 | - (BOOL)unregisterPlugin:(id)arg1;
122 | - (id)unrestrictedApplications;
123 | - (BOOL)updateRecordForApp:(id)arg1 withSINF:(id)arg2 iTunesMetadata:(id)arg3 error:(id*)arg4;
124 | - (BOOL)updateSINFWithData:(id)arg1 forApplication:(id)arg2 options:(id)arg3 error:(id*)arg4;
125 | - (BOOL)updateiTunesMetadataWithData:(id)arg1 forApplication:(id)arg2 options:(id)arg3 error:(id*)arg4;
126 |
127 | // Image: /System/Library/Frameworks/SafariServices.framework/SafariServices
128 |
129 | - (void)_sf_openURL:(id)arg1 withOptions:(id)arg2 completionHandler:(id /* block */)arg3;
130 |
131 | @end
132 |
--------------------------------------------------------------------------------
/MJAppTools/SystemHeaders/LSApplicationProxy.h:
--------------------------------------------------------------------------------
1 |
2 | @interface LSApplicationProxy : NSObject {
3 | NSArray * _activityTypes;
4 | NSString * _applicationVariant;
5 | long _bundleModTime;
6 | NSString * _companionApplicationIdentifier;
7 | NSString * _complicationPrincipalClass;
8 | NSArray * _deviceFamily;
9 | NSString * _deviceIdentifierVendorName;
10 | NSNumber * _downloaderDSID;
11 | NSNumber * _familyID;
12 | NSString * _genre;
13 | NSNumber * _genreID;
14 | unsigned int _installType;
15 | NSNumber * _itemID;
16 | NSString * _itemName;
17 | NSString * _minimumSystemVersion;
18 | unsigned int _originalInstallType;
19 | NSArray * _plugInKitPlugins;
20 | NSArray * _pluginUUIDs;
21 | NSString * _preferredArchitecture;
22 | NSArray * _privateDocumentIconNames;
23 | LSApplicationProxy * _privateDocumentTypeOwner;
24 | NSNumber * _purchaserDSID;
25 | NSString * _ratingLabel;
26 | NSNumber * _ratingRank;
27 | NSDate * _registeredDate;
28 | NSString * _sdkVersion;
29 | NSString * _shortVersionString;
30 | NSString * _sourceAppIdentifier;
31 | NSNumber * _storeFront;
32 | NSArray * _supportedComplicationFamilies;
33 | NSString * _teamID;
34 | BOOL _userInitiatedUninstall;
35 | NSString * _vendorName;
36 | NSNumber * _versionID;
37 | NSString * _watchKitVersion;
38 | }
39 |
40 | @property (nonatomic, readonly) NSNumber *ODRDiskUsage;
41 | @property (nonatomic, readonly) NSArray *UIBackgroundModes;
42 | @property (nonatomic, readonly) NSArray *VPNPlugins;
43 | @property (nonatomic, readonly) NSArray *activityTypes;
44 | @property (nonatomic, readonly) NSArray *appTags;
45 | @property (nonatomic, readonly) NSString *applicationDSID;
46 | @property (nonatomic, readonly) NSString *applicationIdentifier;
47 | @property (nonatomic, readonly) NSString *applicationType;
48 | @property (nonatomic, readonly) NSString *applicationVariant;
49 | @property (nonatomic, readonly) NSArray *audioComponents;
50 | @property (nonatomic, readonly) NSNumber *betaExternalVersionIdentifier;
51 | @property (nonatomic, readonly) long bundleModTime;
52 | @property (nonatomic, readonly) NSString *companionApplicationIdentifier;
53 | @property (readonly) NSString *complicationPrincipalClass;
54 | @property (nonatomic, readonly) NSArray *deviceFamily;
55 | @property (nonatomic, readonly) NSUUID *deviceIdentifierForAdvertising;
56 | @property (nonatomic, readonly) NSUUID *deviceIdentifierForVendor;
57 | @property (nonatomic, readonly) NSArray *directionsModes;
58 | @property (nonatomic, readonly) NSNumber *downloaderDSID;
59 | @property (nonatomic, readonly) NSNumber *dynamicDiskUsage;
60 | @property (nonatomic, readonly) NSArray *externalAccessoryProtocols;
61 | @property (nonatomic, readonly) NSNumber *externalVersionIdentifier;
62 | @property (nonatomic, readonly) NSNumber *familyID;
63 | @property (nonatomic, readonly) BOOL fileSharingEnabled;
64 | @property (getter=isGameCenterEnabled, nonatomic, readonly) BOOL gameCenterEnabled;
65 | @property (nonatomic, readonly) BOOL gameCenterEverEnabled;
66 | @property (nonatomic, readonly) NSString *genre;
67 | @property (nonatomic, readonly) NSNumber *genreID;
68 | @property (readonly) BOOL hasComplication;
69 | @property (nonatomic, readonly) BOOL hasCustomNotification;
70 | @property (nonatomic, readonly) BOOL hasGlance;
71 | @property (nonatomic, readonly) BOOL hasMIDBasedSINF;
72 | @property (nonatomic, readonly) BOOL hasSettingsBundle;
73 | @property (nonatomic, readonly) BOOL iconIsPrerendered;
74 | @property (nonatomic, readonly) NSProgress *installProgress;
75 | @property (nonatomic, readonly) unsigned int installType;
76 | @property (nonatomic, readonly) BOOL isAdHocCodeSigned;
77 | @property (nonatomic, readonly) BOOL isAppUpdate;
78 | @property (nonatomic, readonly) BOOL isBetaApp;
79 | @property (nonatomic, readonly) BOOL isInstalled;
80 | @property (nonatomic, readonly) BOOL isLaunchProhibited;
81 | @property (nonatomic, readonly) BOOL isNewsstandApp;
82 | @property (nonatomic, readonly) BOOL isPlaceholder;
83 | @property (nonatomic, readonly) BOOL isPurchasedReDownload;
84 | @property (nonatomic, readonly) BOOL isRestricted;
85 | @property (nonatomic, readonly) BOOL isStickerProvider;
86 | @property (nonatomic, readonly) BOOL isWatchKitApp;
87 | @property (nonatomic, readonly) NSNumber *itemID;
88 | @property (nonatomic, readonly) NSString *itemName;
89 | @property (nonatomic, readonly) NSString *minimumSystemVersion;
90 | @property (nonatomic, readonly) BOOL missingRequiredSINF;
91 | @property (nonatomic, readonly) unsigned int originalInstallType;
92 | @property (nonatomic, readonly) NSArray *plugInKitPlugins;
93 | @property (nonatomic, readonly) NSString *preferredArchitecture;
94 | @property (nonatomic, readonly) NSNumber *purchaserDSID;
95 | @property (nonatomic, readonly) NSString *ratingLabel;
96 | @property (nonatomic, readonly) NSNumber *ratingRank;
97 | @property (nonatomic, readonly) NSDate *registeredDate;
98 | @property (getter=isRemoveableSystemApp, nonatomic, readonly) BOOL removeableSystemApp;
99 | @property (getter=isRemovedSystemApp, nonatomic, readonly) BOOL removedSystemApp;
100 | @property (nonatomic, readonly) NSArray *requiredDeviceCapabilities;
101 | @property (nonatomic, readonly) NSString *sdkVersion;
102 | @property (nonatomic, readonly) NSString *shortVersionString;
103 | @property (nonatomic, readonly) BOOL shouldSkipWatchAppInstall;
104 | @property (nonatomic, readonly) NSString *sourceAppIdentifier;
105 | @property (nonatomic, readonly) NSNumber *staticDiskUsage;
106 | @property (nonatomic, readonly) NSArray *staticShortcutItems;
107 | @property (nonatomic, readonly) NSString *storeCohortMetadata;
108 | @property (nonatomic, readonly) NSNumber *storeFront;
109 | @property (nonatomic, readonly) NSArray *subgenres;
110 | @property (readonly) NSArray *supportedComplicationFamilies;
111 | @property (nonatomic, readonly) BOOL supportsAudiobooks;
112 | @property (nonatomic, readonly) BOOL supportsExternallyPlayableContent;
113 | @property (nonatomic, readonly) BOOL supportsODR;
114 | @property (nonatomic, readonly) BOOL supportsOpenInPlace;
115 | @property (nonatomic, readonly) BOOL supportsPurgeableLocalStorage;
116 | @property (nonatomic, readonly) NSString *teamID;
117 | @property (nonatomic) BOOL userInitiatedUninstall;
118 | @property (nonatomic, readonly) NSString *vendorName;
119 | @property (nonatomic, readonly) NSString *watchKitVersion;
120 | @property (getter=isWhitelisted, nonatomic, readonly) BOOL whitelisted;
121 |
122 | + (id)applicationProxyForBundleURL:(id)arg1;
123 | + (id)applicationProxyForCompanionIdentifier:(id)arg1;
124 | + (id)applicationProxyForIdentifier:(id)arg1;
125 | + (id)applicationProxyForIdentifier:(id)arg1 placeholder:(BOOL)arg2;
126 | + (id)applicationProxyForItemID:(id)arg1;
127 | + (id)applicationProxyWithBundleUnitID:(unsigned int)arg1;
128 | + (id)iconQueue;
129 | + (BOOL)supportsSecureCoding;
130 |
131 | - (id)ODRDiskUsage;
132 | - (id)UIBackgroundModes;
133 | - (BOOL)UPPValidated;
134 | - (id)VPNPlugins;
135 | - (id)_initWithBundleUnit:(unsigned int)arg1 applicationIdentifier:(id)arg2;
136 | - (id)activityTypes;
137 | - (id)alternateIconName;
138 | - (id)appState;
139 | - (id)appTags;
140 | - (id)applicationDSID;
141 | - (id)applicationIdentifier;
142 | - (id)applicationType;
143 | - (id)applicationVariant;
144 | - (id)audioComponents;
145 | - (id)betaExternalVersionIdentifier;
146 | - (long)bundleModTime;
147 | - (void)clearAdvertisingIdentifier;
148 | - (id)companionApplicationIdentifier;
149 | - (id)complicationPrincipalClass;
150 | - (void)dealloc;
151 | - (id)description;
152 | - (id)deviceFamily;
153 | - (id)deviceIdentifierForAdvertising;
154 | - (id)deviceIdentifierForVendor;
155 | - (id)directionsModes;
156 | - (id)diskUsage;
157 | - (id)downloaderDSID;
158 | - (id)dynamicDiskUsage;
159 | - (void)encodeWithCoder:(id)arg1;
160 | - (id)externalAccessoryProtocols;
161 | - (id)externalVersionIdentifier;
162 | - (id)familyID;
163 | - (BOOL)fileSharingEnabled;
164 | - (BOOL)gameCenterEverEnabled;
165 | - (id)genre;
166 | - (id)genreID;
167 | - (BOOL)hasComplication;
168 | - (BOOL)hasCustomNotification;
169 | - (BOOL)hasGlance;
170 | - (BOOL)hasMIDBasedSINF;
171 | - (BOOL)hasSettingsBundle;
172 | - (id)iconDataForVariant:(int)arg1;
173 | - (id)iconDataForVariant:(int)arg1 preferredIconName:(id)arg2 withOptions:(int)arg3;
174 | - (id)iconDataForVariant:(int)arg1 withOptions:(int)arg2;
175 | - (BOOL)iconIsPrerendered;
176 | - (id)iconStyleDomain;
177 | - (id)initWithCoder:(id)arg1;
178 | - (id)installProgress;
179 | - (id)installProgressSync;
180 | - (unsigned int)installType;
181 | - (BOOL)isAdHocCodeSigned;
182 | - (BOOL)isAppUpdate;
183 | - (BOOL)isBetaApp;
184 | - (BOOL)isGameCenterEnabled;
185 | - (BOOL)isInstalled;
186 | - (BOOL)isLaunchProhibited;
187 | - (BOOL)isNewsstandApp;
188 | - (BOOL)isPlaceholder;
189 | - (BOOL)isPurchasedReDownload;
190 | - (BOOL)isRemoveableSystemApp;
191 | - (BOOL)isRemovedSystemApp;
192 | - (BOOL)isRestricted;
193 | - (BOOL)isStickerProvider;
194 | - (BOOL)isSystemOrInternalApp;
195 | - (BOOL)isWatchKitApp;
196 | - (BOOL)isWhitelisted;
197 | - (id)itemID;
198 | - (id)itemName;
199 | - (id)localizedName;
200 | - (id)localizedNameForContext:(id)arg1;
201 | - (id)localizedShortName;
202 | - (id)minimumSystemVersion;
203 | - (BOOL)missingRequiredSINF;
204 | - (unsigned int)originalInstallType;
205 | - (id)plugInKitPlugins;
206 | - (id)preferredArchitecture;
207 | - (id)primaryIconDataForVariant:(int)arg1;
208 | - (id)privateDocumentIconNames;
209 | - (id)privateDocumentTypeOwner;
210 | - (BOOL)profileValidated;
211 | - (id)purchaserDSID;
212 | - (id)ratingLabel;
213 | - (id)ratingRank;
214 | - (id)registeredDate;
215 | - (id)requiredDeviceCapabilities;
216 | - (id)resourcesDirectoryURL;
217 | - (id)sdkVersion;
218 | - (void)setAlternateIconName:(id)arg1 withResult:(id /* block */)arg2;
219 | - (void)setPrivateDocumentIconNames:(id)arg1;
220 | - (void)setPrivateDocumentTypeOwner:(id)arg1;
221 | - (void)setUserInitiatedUninstall:(BOOL)arg1;
222 | - (id)shortVersionString;
223 | - (BOOL)shouldSkipWatchAppInstall;
224 | - (id)sourceAppIdentifier;
225 | - (id)staticDiskUsage;
226 | - (id)staticShortcutItems;
227 | - (id)storeCohortMetadata;
228 | - (id)storeFront;
229 | - (id)subgenres;
230 | - (id)supportedComplicationFamilies;
231 | - (BOOL)supportsAudiobooks;
232 | - (BOOL)supportsExternallyPlayableContent;
233 | - (BOOL)supportsODR;
234 | - (BOOL)supportsOpenInPlace;
235 | - (BOOL)supportsPurgeableLocalStorage;
236 | - (id)teamID;
237 | - (id)uniqueIdentifier;
238 | - (BOOL)userInitiatedUninstall;
239 | - (id)vendorName;
240 | - (id)watchKitVersion;
241 |
242 | // Image: /System/Library/Frameworks/Intents.framework/Intents
243 |
244 | - (BOOL)_inapptrust_isFirstParty;
245 |
246 | // Image: /System/Library/Frameworks/UIKit.framework/UIKit
247 |
248 | - (struct CGSize { float x1; float x2; })_defaultStyleSize:(id)arg1;
249 |
250 | // Image: /System/Library/PrivateFrameworks/ChatKit.framework/ChatKit
251 |
252 | - (id)__ck_messagesPluginKitProxy;
253 |
254 | // Image: /System/Library/PrivateFrameworks/ManagedConfiguration.framework/MDM.framework/MDM
255 |
256 | + (BOOL)applicationProxyIsMISAuthorizedForBundleID:(id)arg1;
257 |
258 | - (BOOL)isMISAuthorized;
259 |
260 | // Image: /System/Library/PrivateFrameworks/TVMLKit.framework/TVMLKit
261 |
262 | + (id)tvmlKitBundle;
263 |
264 | - (id)tv_applicationLaunchImageName;
265 |
266 | // Image: /System/Library/PrivateFrameworks/UserNotificationsServer.framework/UserNotificationsServer
267 |
268 | + (id)uns_bundleForBundleIdentifier:(id)arg1;
269 |
270 | - (BOOL)_uns_isReallyInstalled;
271 | - (id)uns_bundle;
272 | - (BOOL)uns_isSystemApplication;
273 | - (id)uns_path;
274 | - (BOOL)uns_requiresLocalNotifications;
275 | - (BOOL)uns_sdkVersionOnOrLaterThan:(id)arg1;
276 | - (BOOL)uns_shouldUseDefaultDataProvider;
277 | - (BOOL)uns_usesCloudKit;
278 | - (BOOL)uns_usesLocalNotifications;
279 |
280 | @end
281 |
--------------------------------------------------------------------------------
/Release/MJAppTools.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | allow-obliterate-device
6 |
7 | application-identifier
8 | com.apple.springboard
9 | aps-connection-initiate
10 |
11 | checklessPersistentURLTranslation
12 |
13 | com.apple.BTServer.allowRestrictedServices
14 |
15 | com.apple.BTServer.programmaticPairing
16 |
17 | com.apple.CallHistory.sync.allow
18 |
19 | com.apple.CommCenter.fine-grained
20 |
21 | spi
22 | preferences-reset
23 | voice
24 | identity
25 | phone
26 | carrier-settings
27 |
28 | com.apple.CoreRoutine.LocationOfInterest
29 |
30 | com.apple.MobileInternetSharing.allow
31 |
32 | com.apple.QuartzCore.displayable-context
33 |
34 | com.apple.QuartzCore.global-capture
35 |
36 | com.apple.QuartzCore.secure-capture
37 |
38 | com.apple.QuartzCore.secure-mode
39 |
40 | com.apple.SystemConfiguration.SCDynamicStore-write-access
41 |
42 | com.apple.SystemConfiguration.SCPreferences-write-access
43 |
44 | com.apple.AutoWake.xml
45 | preferences.plist
46 | com.apple.radios.plist
47 |
48 | com.apple.aosnotification.aosnotifyd-access
49 |
50 | com.apple.assistant.client
51 |
52 | com.apple.authkit.writer.internal
53 |
54 | com.apple.avfoundation.allow-still-image-capture-shutter-sound-manipulation
55 |
56 | com.apple.backboard.client
57 |
58 | com.apple.backboard.displaybrightness
59 |
60 | com.apple.backboardd.cancelsTouchesInHostedContent
61 |
62 | com.apple.backboardd.hostCanRequireTouchesFromHostedContent
63 |
64 | com.apple.backboardd.lastUserEventTime
65 |
66 | com.apple.backboardd.launchapplications
67 |
68 | com.apple.bulletinboard
69 |
70 | com.apple.bulletinboard.dataprovider
71 |
72 | com.apple.bulletinboard.observer
73 |
74 | com.apple.bulletinboard.serverconduit
75 |
76 | com.apple.bulletinboard.settings
77 |
78 | com.apple.bulletinboard.systemstate
79 |
80 | com.apple.bulletinboard.utilities
81 |
82 | com.apple.cards.all-access
83 |
84 | com.apple.coreaudio.allow-amr-decode
85 |
86 | com.apple.coreaudio.allow-speex-codec
87 |
88 | com.apple.coreduetd.allow
89 |
90 | com.apple.coreduetd.batterysaver.allow
91 |
92 | com.apple.coremedia.allow-pre-wiring-pixel-buffers
93 |
94 | com.apple.coremedia.allow-protected-content-playback
95 |
96 | com.apple.coremedia.virtualdisplaysession
97 |
98 | com.apple.developer.extension-host.widget-extension
99 |
100 | com.apple.duet.expertcenter.consumer
101 |
102 | com.apple.frontboard.app-badge-value-access
103 |
104 | com.apple.frontboard.shutdown
105 |
106 | com.apple.geoservices.navd.clientIdentifier
107 | /System/Library/LocationBundles/CalendarLocation.bundle
108 | com.apple.geoservices.navd.routehypothesis
109 |
110 | com.apple.iapd.accessibility
111 |
112 | com.apple.imagent
113 |
114 | com.apple.imagent.av
115 |
116 | com.apple.imagent.chat
117 |
118 | com.apple.itunesstored.private
119 |
120 | com.apple.keystore.device
121 |
122 | com.apple.keystore.lockassertion
123 |
124 | com.apple.keystore.stash.access
125 |
126 | com.apple.locationd.activity
127 |
128 | com.apple.locationd.authorizeapplications
129 |
130 | com.apple.locationd.effective_bundle
131 |
132 | com.apple.locationd.prompt_behavior
133 |
134 | com.apple.locationd.region_proxy_service
135 |
136 | com.apple.locationd.status
137 |
138 | com.apple.locationd.usage_oracle
139 |
140 | com.apple.locationd.vehicle_data
141 |
142 | com.apple.lsapplicationproxy.deviceidentifierforvendor
143 |
144 | com.apple.managedconfiguration.mdmd-access
145 |
146 | com.apple.managedconfiguration.profiled-access
147 |
148 | com.apple.mediastream.mstreamd-access
149 |
150 | com.apple.messages.composeclient
151 |
152 | com.apple.mobile.deleted.AllowFreeSpace
153 |
154 | com.apple.mobilemail.mailservices
155 |
156 | com.apple.multitasking.systemappassertions
157 |
158 | com.apple.multitasking.termination
159 |
160 | com.apple.nfcd.hwmanager
161 |
162 | com.apple.notificationcenter.widgetcontrollerhascontent
163 |
164 | com.apple.payment.configuration
165 |
166 | com.apple.payment.presentation
167 |
168 | com.apple.private.MobileGestalt.AllowedProtectedKeys
169 |
170 | InverseDeviceID
171 |
172 | com.apple.private.accounts.allaccounts
173 |
174 | com.apple.private.allow-webviewcontroller
175 |
176 | com.apple.private.bmk.allow
177 |
178 | com.apple.private.calendar.allow-suggestions
179 |
180 | com.apple.private.canGetAppLinkInfo
181 |
182 | com.apple.private.canModifyAppLinkPermissions
183 |
184 | com.apple.private.carkit
185 |
186 | com.apple.private.clouddocs.can-grant-access-to-document
187 |
188 | com.apple.private.corerecents
189 |
190 | com.apple.private.coreservices.canopenactivity
191 |
192 | com.apple.private.coreservices.lsuseractivityd.bestappsuggestion
193 |
194 | com.apple.private.game-center
195 |
196 | Account
197 | Games
198 |
199 | com.apple.private.game-center.bypass-authentication
200 |
201 | com.apple.private.healthkit
202 |
203 | com.apple.private.hid.client.event-dispatch
204 |
205 | com.apple.private.hid.client.service-protected
206 |
207 | com.apple.private.hid.manager.client
208 |
209 | com.apple.private.icfcallserver
210 |
211 | com.apple.private.ids.idsquery
212 |
213 | com.apple.private.ids.messaging
214 |
215 | com.apple.private.alloy.bulletinboard
216 | com.apple.madrid
217 | com.apple.private.alloy.siri.phrasespotter
218 |
219 | com.apple.private.ids.messaging.urgent-priority
220 |
221 | com.apple.private.alloy.bulletinboard
222 | com.apple.private.alloy.siri.phrasespotter
223 |
224 | com.apple.private.ids.registration-reset
225 |
226 | com.apple.private.imavcore.imavagent
227 |
228 | com.apple.private.imcore.imdpersistence.database-access
229 |
230 | com.apple.private.imcore.imremoteurlconnection
231 |
232 | com.apple.private.kernel.darkboot
233 |
234 | com.apple.private.kernel.jetsam
235 |
236 | com.apple.private.librarian.can-get-application-info
237 |
238 | com.apple.private.lockdown.finegrained-get
239 |
240 | NULL/ActivationState
241 | NULL/BrickState
242 | NULL/SBLockdownEverRegisteredKey
243 | com.apple.xcode.developerdomain/DeveloperStatus
244 | NULL/BuildExpireTime
245 |
246 | com.apple.private.lockdown.finegrained-remove
247 |
248 | com.apple.mobile.iTunes.store/AppleID
249 | com.apple.mobile.data_sync/Contacts
250 | com.apple.mobile.data_sync/Calendars
251 | com.apple.mobile.data_sync/Bookmarks
252 | com.apple.mobile.data_sync/Mail Accounts
253 |
254 | com.apple.private.mis.online_auth_agent
255 |
256 | com.apple.private.mobileinstall.allowedSPI
257 |
258 | UninstallForLaunchServices
259 | SetCapabilities
260 | Lookup
261 |
262 | com.apple.private.mobilesafari.searchengine
263 |
264 | com.apple.private.network.socket-delegate
265 |
266 | com.apple.private.suggestions
267 |
268 | com.apple.private.tcc.allow
269 |
270 | kTCCServiceAddressBook
271 | kTCCServiceCalendar
272 | kTCCServiceReminders
273 | kTCCServicePhotos
274 | kTCCServiceMicrophone
275 | kTCCServiceCamera
276 |
277 | com.apple.private.tcc.manager
278 |
279 | com.apple.private.ubiquity-kvstore-access
280 |
281 | com.apple.weather
282 | com.apple.stocks
283 |
284 | com.apple.private.xpc.launchd.app-server
285 |
286 | com.apple.remotenotification.access
287 |
288 | com.apple.remotenotification.preferences
289 |
290 | com.apple.securebackupd.access
291 |
292 | com.apple.security.application-groups
293 |
294 | group.com.apple.weather
295 |
296 | com.apple.springboard.activateawayviewplugins
297 |
298 | com.apple.springboard.opensensitiveurl
299 |
300 | com.apple.springboard.openurlswhenlocked
301 |
302 | com.apple.springboard.setbadgestring
303 |
304 | com.apple.springboard.statusbarstyleoverrides
305 |
306 | com.apple.springboard.xzfwk.fullaccess
307 |
308 | com.apple.symptom_analytics.query
309 |
310 | com.apple.symptom_analytics.refresh
311 |
312 | com.apple.symptoms.NetworkOfInterest
313 |
314 | com.apple.telephonyutilities.callservicesd
315 |
316 | access-calls
317 | modify-calls
318 |
319 | com.apple.timed
320 |
321 | com.apple.tzlink.allow
322 |
323 | com.apple.usernotification.notificationschedulerproxy
324 |
325 | com.apple.videoconference.allow-conferencing
326 |
327 | com.apple.visualvoicemail.client
328 |
329 | com.apple.voiceservices.tts.customvoice
330 |
331 | com.apple.voicetrigger.voicetriggerservice
332 |
333 | com.apple.wifi.manager-access
334 |
335 | fairplay-client
336 | 1172857363
337 | keychain-access-groups
338 |
339 | apple
340 | com.apple.preferences
341 |
342 | vm-pressure-level
343 |
344 |
345 |
346 |
--------------------------------------------------------------------------------
/MJAppTools.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 48;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 2D08A4EB201DE08D000C227D /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 2D08A4EA201DE08D000C227D /* Default-568h@2x.png */; };
11 | 2D373959201DA389006B6054 /* MJPrintTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D373958201DA389006B6054 /* MJPrintTools.m */; };
12 | 2DBBEB1D201C8C7000780B3C /* MJApp.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DBBEAFB201C6F3800780B3C /* MJApp.m */; };
13 | 2DBBEB1E201C8C7000780B3C /* MJAppTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DBBEAFD201C6F3800780B3C /* MJAppTools.m */; };
14 | 2DBBEB1F201C8C7000780B3C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DBBEAE5201C6E9C00780B3C /* main.m */; };
15 | 2DBBEB23201C8EE900780B3C /* NSFileHandle+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DBBEB21201C8EDD00780B3C /* NSFileHandle+Extension.m */; };
16 | 2DBBEB27201C8FA200780B3C /* MJMachO.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DBBEB26201C8FA200780B3C /* MJMachO.m */; };
17 | /* End PBXBuildFile section */
18 |
19 | /* Begin PBXFileReference section */
20 | 2D08A4EA201DE08D000C227D /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; };
21 | 2D373957201DA389006B6054 /* MJPrintTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MJPrintTools.h; sourceTree = ""; };
22 | 2D373958201DA389006B6054 /* MJPrintTools.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MJPrintTools.m; sourceTree = ""; };
23 | 2DBBEAE4201C6E9C00780B3C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
24 | 2DBBEAE5201C6E9C00780B3C /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
25 | 2DBBEAF6201C6F3800780B3C /* MJAppTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MJAppTools.h; sourceTree = ""; };
26 | 2DBBEAF8201C6F3800780B3C /* LSApplicationProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LSApplicationProxy.h; sourceTree = ""; };
27 | 2DBBEAF9201C6F3800780B3C /* LSApplicationWorkspace.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LSApplicationWorkspace.h; sourceTree = ""; };
28 | 2DBBEAFA201C6F3800780B3C /* FBApplicationInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBApplicationInfo.h; sourceTree = ""; };
29 | 2DBBEAFB201C6F3800780B3C /* MJApp.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MJApp.m; sourceTree = ""; };
30 | 2DBBEAFC201C6F3800780B3C /* MJApp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MJApp.h; sourceTree = ""; };
31 | 2DBBEAFD201C6F3800780B3C /* MJAppTools.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MJAppTools.m; sourceTree = ""; };
32 | 2DBBEB06201C8BB900780B3C /* MJAppTools.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MJAppTools.app; sourceTree = BUILT_PRODUCTS_DIR; };
33 | 2DBBEB21201C8EDD00780B3C /* NSFileHandle+Extension.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSFileHandle+Extension.m"; sourceTree = ""; };
34 | 2DBBEB22201C8EDD00780B3C /* NSFileHandle+Extension.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSFileHandle+Extension.h"; sourceTree = ""; };
35 | 2DBBEB25201C8FA200780B3C /* MJMachO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MJMachO.h; sourceTree = ""; };
36 | 2DBBEB26201C8FA200780B3C /* MJMachO.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MJMachO.m; sourceTree = ""; };
37 | 2DFA8508201ECF5700F3F555 /* FBBundleInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBBundleInfo.h; sourceTree = ""; };
38 | /* End PBXFileReference section */
39 |
40 | /* Begin PBXFrameworksBuildPhase section */
41 | 2DBBEB03201C8BB900780B3C /* Frameworks */ = {
42 | isa = PBXFrameworksBuildPhase;
43 | buildActionMask = 2147483647;
44 | files = (
45 | );
46 | runOnlyForDeploymentPostprocessing = 0;
47 | };
48 | /* End PBXFrameworksBuildPhase section */
49 |
50 | /* Begin PBXGroup section */
51 | 2D06C186201DF5CC00003BDD /* Tools */ = {
52 | isa = PBXGroup;
53 | children = (
54 | 2D373957201DA389006B6054 /* MJPrintTools.h */,
55 | 2D373958201DA389006B6054 /* MJPrintTools.m */,
56 | 2DBBEAF6201C6F3800780B3C /* MJAppTools.h */,
57 | 2DBBEAFD201C6F3800780B3C /* MJAppTools.m */,
58 | );
59 | path = Tools;
60 | sourceTree = "";
61 | };
62 | 2DBBEAAE201C6E7600780B3C = {
63 | isa = PBXGroup;
64 | children = (
65 | 2DBBEB07201C8BB900780B3C /* MJAppTools */,
66 | 2DBBEAB8201C6E7600780B3C /* Products */,
67 | );
68 | sourceTree = "";
69 | };
70 | 2DBBEAB8201C6E7600780B3C /* Products */ = {
71 | isa = PBXGroup;
72 | children = (
73 | 2DBBEB06201C8BB900780B3C /* MJAppTools.app */,
74 | );
75 | name = Products;
76 | sourceTree = "";
77 | };
78 | 2DBBEAF7201C6F3800780B3C /* SystemHeaders */ = {
79 | isa = PBXGroup;
80 | children = (
81 | 2DBBEAF8201C6F3800780B3C /* LSApplicationProxy.h */,
82 | 2DBBEAF9201C6F3800780B3C /* LSApplicationWorkspace.h */,
83 | 2DBBEAFA201C6F3800780B3C /* FBApplicationInfo.h */,
84 | 2DFA8508201ECF5700F3F555 /* FBBundleInfo.h */,
85 | );
86 | path = SystemHeaders;
87 | sourceTree = "";
88 | };
89 | 2DBBEB07201C8BB900780B3C /* MJAppTools */ = {
90 | isa = PBXGroup;
91 | children = (
92 | 2D06C186201DF5CC00003BDD /* Tools */,
93 | 2DBBEB24201C8F5600780B3C /* Models */,
94 | 2DBBEB20201C8ECC00780B3C /* Extensions */,
95 | 2DBBEAF7201C6F3800780B3C /* SystemHeaders */,
96 | 2DBBEAE5201C6E9C00780B3C /* main.m */,
97 | 2DBBEAE4201C6E9C00780B3C /* Info.plist */,
98 | 2D08A4EA201DE08D000C227D /* Default-568h@2x.png */,
99 | );
100 | path = MJAppTools;
101 | sourceTree = "";
102 | };
103 | 2DBBEB20201C8ECC00780B3C /* Extensions */ = {
104 | isa = PBXGroup;
105 | children = (
106 | 2DBBEB22201C8EDD00780B3C /* NSFileHandle+Extension.h */,
107 | 2DBBEB21201C8EDD00780B3C /* NSFileHandle+Extension.m */,
108 | );
109 | path = Extensions;
110 | sourceTree = "";
111 | };
112 | 2DBBEB24201C8F5600780B3C /* Models */ = {
113 | isa = PBXGroup;
114 | children = (
115 | 2DBBEAFC201C6F3800780B3C /* MJApp.h */,
116 | 2DBBEAFB201C6F3800780B3C /* MJApp.m */,
117 | 2DBBEB25201C8FA200780B3C /* MJMachO.h */,
118 | 2DBBEB26201C8FA200780B3C /* MJMachO.m */,
119 | );
120 | path = Models;
121 | sourceTree = "";
122 | };
123 | /* End PBXGroup section */
124 |
125 | /* Begin PBXNativeTarget section */
126 | 2DBBEB05201C8BB900780B3C /* MJAppTools */ = {
127 | isa = PBXNativeTarget;
128 | buildConfigurationList = 2DBBEB19201C8BB900780B3C /* Build configuration list for PBXNativeTarget "MJAppTools" */;
129 | buildPhases = (
130 | 2DBBEB02201C8BB900780B3C /* Sources */,
131 | 2DBBEB03201C8BB900780B3C /* Frameworks */,
132 | 2DBBEB04201C8BB900780B3C /* Resources */,
133 | 2DBBEB1C201C8BD200780B3C /* ShellScript */,
134 | );
135 | buildRules = (
136 | );
137 | dependencies = (
138 | );
139 | name = MJAppTools;
140 | productName = MJAppTools;
141 | productReference = 2DBBEB06201C8BB900780B3C /* MJAppTools.app */;
142 | productType = "com.apple.product-type.application";
143 | };
144 | /* End PBXNativeTarget section */
145 |
146 | /* Begin PBXProject section */
147 | 2DBBEAAF201C6E7600780B3C /* Project object */ = {
148 | isa = PBXProject;
149 | attributes = {
150 | LastUpgradeCheck = 0900;
151 | ORGANIZATIONNAME = "MJ Lee";
152 | TargetAttributes = {
153 | 2DBBEB05201C8BB900780B3C = {
154 | CreatedOnToolsVersion = 9.0;
155 | ProvisioningStyle = Automatic;
156 | };
157 | };
158 | };
159 | buildConfigurationList = 2DBBEAB2201C6E7600780B3C /* Build configuration list for PBXProject "MJAppTools" */;
160 | compatibilityVersion = "Xcode 8.0";
161 | developmentRegion = en;
162 | hasScannedForEncodings = 0;
163 | knownRegions = (
164 | en,
165 | Base,
166 | );
167 | mainGroup = 2DBBEAAE201C6E7600780B3C;
168 | productRefGroup = 2DBBEAB8201C6E7600780B3C /* Products */;
169 | projectDirPath = "";
170 | projectRoot = "";
171 | targets = (
172 | 2DBBEB05201C8BB900780B3C /* MJAppTools */,
173 | );
174 | };
175 | /* End PBXProject section */
176 |
177 | /* Begin PBXResourcesBuildPhase section */
178 | 2DBBEB04201C8BB900780B3C /* Resources */ = {
179 | isa = PBXResourcesBuildPhase;
180 | buildActionMask = 2147483647;
181 | files = (
182 | 2D08A4EB201DE08D000C227D /* Default-568h@2x.png in Resources */,
183 | );
184 | runOnlyForDeploymentPostprocessing = 0;
185 | };
186 | /* End PBXResourcesBuildPhase section */
187 |
188 | /* Begin PBXShellScriptBuildPhase section */
189 | 2DBBEB1C201C8BD200780B3C /* ShellScript */ = {
190 | isa = PBXShellScriptBuildPhase;
191 | buildActionMask = 2147483647;
192 | files = (
193 | );
194 | inputPaths = (
195 | );
196 | outputPaths = (
197 | );
198 | runOnlyForDeploymentPostprocessing = 0;
199 | shellPath = /bin/sh;
200 | shellScript = make;
201 | };
202 | /* End PBXShellScriptBuildPhase section */
203 |
204 | /* Begin PBXSourcesBuildPhase section */
205 | 2DBBEB02201C8BB900780B3C /* Sources */ = {
206 | isa = PBXSourcesBuildPhase;
207 | buildActionMask = 2147483647;
208 | files = (
209 | 2DBBEB23201C8EE900780B3C /* NSFileHandle+Extension.m in Sources */,
210 | 2DBBEB1D201C8C7000780B3C /* MJApp.m in Sources */,
211 | 2DBBEB1E201C8C7000780B3C /* MJAppTools.m in Sources */,
212 | 2DBBEB27201C8FA200780B3C /* MJMachO.m in Sources */,
213 | 2D373959201DA389006B6054 /* MJPrintTools.m in Sources */,
214 | 2DBBEB1F201C8C7000780B3C /* main.m in Sources */,
215 | );
216 | runOnlyForDeploymentPostprocessing = 0;
217 | };
218 | /* End PBXSourcesBuildPhase section */
219 |
220 | /* Begin XCBuildConfiguration section */
221 | 2DBBEACB201C6E7700780B3C /* Debug */ = {
222 | isa = XCBuildConfiguration;
223 | buildSettings = {
224 | ALWAYS_SEARCH_USER_PATHS = NO;
225 | CLANG_ANALYZER_NONNULL = YES;
226 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
227 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
228 | CLANG_CXX_LIBRARY = "libc++";
229 | CLANG_ENABLE_MODULES = YES;
230 | CLANG_ENABLE_OBJC_ARC = YES;
231 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
232 | CLANG_WARN_BOOL_CONVERSION = YES;
233 | CLANG_WARN_COMMA = YES;
234 | CLANG_WARN_CONSTANT_CONVERSION = YES;
235 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
236 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
237 | CLANG_WARN_EMPTY_BODY = YES;
238 | CLANG_WARN_ENUM_CONVERSION = YES;
239 | CLANG_WARN_INFINITE_RECURSION = YES;
240 | CLANG_WARN_INT_CONVERSION = YES;
241 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
242 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
243 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
244 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
245 | CLANG_WARN_STRICT_PROTOTYPES = YES;
246 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
247 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
248 | CLANG_WARN_UNREACHABLE_CODE = YES;
249 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
250 | CODE_SIGN_IDENTITY = "iPhone Developer";
251 | COPY_PHASE_STRIP = NO;
252 | DEBUG_INFORMATION_FORMAT = dwarf;
253 | ENABLE_STRICT_OBJC_MSGSEND = YES;
254 | ENABLE_TESTABILITY = YES;
255 | GCC_C_LANGUAGE_STANDARD = gnu11;
256 | GCC_DYNAMIC_NO_PIC = NO;
257 | GCC_NO_COMMON_BLOCKS = YES;
258 | GCC_OPTIMIZATION_LEVEL = 0;
259 | GCC_PREPROCESSOR_DEFINITIONS = (
260 | "DEBUG=1",
261 | "$(inherited)",
262 | );
263 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
264 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
265 | GCC_WARN_UNDECLARED_SELECTOR = YES;
266 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
267 | GCC_WARN_UNUSED_FUNCTION = YES;
268 | GCC_WARN_UNUSED_VARIABLE = YES;
269 | IPHONEOS_DEPLOYMENT_TARGET = 11.0;
270 | MTL_ENABLE_DEBUG_INFO = YES;
271 | ONLY_ACTIVE_ARCH = YES;
272 | SDKROOT = iphoneos;
273 | };
274 | name = Debug;
275 | };
276 | 2DBBEACC201C6E7700780B3C /* Release */ = {
277 | isa = XCBuildConfiguration;
278 | buildSettings = {
279 | ALWAYS_SEARCH_USER_PATHS = NO;
280 | CLANG_ANALYZER_NONNULL = YES;
281 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
282 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
283 | CLANG_CXX_LIBRARY = "libc++";
284 | CLANG_ENABLE_MODULES = YES;
285 | CLANG_ENABLE_OBJC_ARC = YES;
286 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
287 | CLANG_WARN_BOOL_CONVERSION = YES;
288 | CLANG_WARN_COMMA = YES;
289 | CLANG_WARN_CONSTANT_CONVERSION = YES;
290 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
291 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
292 | CLANG_WARN_EMPTY_BODY = YES;
293 | CLANG_WARN_ENUM_CONVERSION = YES;
294 | CLANG_WARN_INFINITE_RECURSION = YES;
295 | CLANG_WARN_INT_CONVERSION = YES;
296 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
297 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
298 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
299 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
300 | CLANG_WARN_STRICT_PROTOTYPES = YES;
301 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
302 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
303 | CLANG_WARN_UNREACHABLE_CODE = YES;
304 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
305 | CODE_SIGN_IDENTITY = "iPhone Developer";
306 | COPY_PHASE_STRIP = NO;
307 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
308 | ENABLE_NS_ASSERTIONS = NO;
309 | ENABLE_STRICT_OBJC_MSGSEND = YES;
310 | GCC_C_LANGUAGE_STANDARD = gnu11;
311 | GCC_NO_COMMON_BLOCKS = YES;
312 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
313 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
314 | GCC_WARN_UNDECLARED_SELECTOR = YES;
315 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
316 | GCC_WARN_UNUSED_FUNCTION = YES;
317 | GCC_WARN_UNUSED_VARIABLE = YES;
318 | IPHONEOS_DEPLOYMENT_TARGET = 11.0;
319 | MTL_ENABLE_DEBUG_INFO = NO;
320 | SDKROOT = iphoneos;
321 | VALIDATE_PRODUCT = YES;
322 | };
323 | name = Release;
324 | };
325 | 2DBBEB1A201C8BB900780B3C /* Debug */ = {
326 | isa = XCBuildConfiguration;
327 | buildSettings = {
328 | CODE_SIGN_STYLE = Automatic;
329 | DEVELOPMENT_TEAM = "";
330 | INFOPLIST_FILE = MJAppTools/Info.plist;
331 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
332 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
333 | PRODUCT_BUNDLE_IDENTIFIER = com.mj.mjapptools;
334 | PRODUCT_NAME = "$(TARGET_NAME)";
335 | TARGETED_DEVICE_FAMILY = "1,2";
336 | };
337 | name = Debug;
338 | };
339 | 2DBBEB1B201C8BB900780B3C /* Release */ = {
340 | isa = XCBuildConfiguration;
341 | buildSettings = {
342 | CODE_SIGN_STYLE = Automatic;
343 | DEVELOPMENT_TEAM = "";
344 | INFOPLIST_FILE = MJAppTools/Info.plist;
345 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
346 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
347 | PRODUCT_BUNDLE_IDENTIFIER = com.mj.mjapptools;
348 | PRODUCT_NAME = "$(TARGET_NAME)";
349 | TARGETED_DEVICE_FAMILY = "1,2";
350 | };
351 | name = Release;
352 | };
353 | /* End XCBuildConfiguration section */
354 |
355 | /* Begin XCConfigurationList section */
356 | 2DBBEAB2201C6E7600780B3C /* Build configuration list for PBXProject "MJAppTools" */ = {
357 | isa = XCConfigurationList;
358 | buildConfigurations = (
359 | 2DBBEACB201C6E7700780B3C /* Debug */,
360 | 2DBBEACC201C6E7700780B3C /* Release */,
361 | );
362 | defaultConfigurationIsVisible = 0;
363 | defaultConfigurationName = Release;
364 | };
365 | 2DBBEB19201C8BB900780B3C /* Build configuration list for PBXNativeTarget "MJAppTools" */ = {
366 | isa = XCConfigurationList;
367 | buildConfigurations = (
368 | 2DBBEB1A201C8BB900780B3C /* Debug */,
369 | 2DBBEB1B201C8BB900780B3C /* Release */,
370 | );
371 | defaultConfigurationIsVisible = 0;
372 | defaultConfigurationName = Release;
373 | };
374 | /* End XCConfigurationList section */
375 | };
376 | rootObject = 2DBBEAAF201C6E7600780B3C /* Project object */;
377 | }
378 |
--------------------------------------------------------------------------------