-
Notifications
You must be signed in to change notification settings - Fork 3
/
Tweak.x
124 lines (88 loc) · 2.19 KB
/
Tweak.x
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#import <dlfcn.h>
#import <Foundation/Foundation.h>
#define YT_BUNDLE_ID @"com.google.ios.youtube"
#define YT_NAME @"YouTube"
@interface SSOConfiguration : NSObject
@end
%hook YTVersionUtils
+ (NSString *)appName {
return YT_NAME;
}
+ (NSString *)appID {
return YT_BUNDLE_ID;
}
%end
%hook GCKBUtils
+ (NSString *)appIdentifier {
return YT_BUNDLE_ID;
}
%end
%hook GPCDeviceInfo
+ (NSString *)bundleId {
return YT_BUNDLE_ID;
}
%end
%hook OGLBundle
+ (NSString *)shortAppName {
return YT_NAME;
}
%end
%hook GVROverlayView
+ (NSString *)appName {
return YT_NAME;
}
%end
%hook OGLPhenotypeFlagServiceImpl
- (NSString *)bundleId {
return YT_BUNDLE_ID;
}
%end
%hook APMAEU
+ (BOOL)isFAS {
return YES;
}
%end
%hook GULAppEnvironmentUtil
+ (BOOL)isFromAppStore {
return YES;
}
%end
%hook SSOConfiguration
- (id)initWithClientID:(id)clientID supportedAccountServices:(id)supportedAccountServices {
self = %orig;
[self setValue:YT_NAME forKey:@"_shortAppName"];
[self setValue:YT_BUNDLE_ID forKey:@"_applicationIdentifier"];
return self;
}
%end
BOOL isSelf() {
NSArray *address = [NSThread callStackReturnAddresses];
Dl_info info = {0};
if (dladdr((void *)[address[2] longLongValue], &info) == 0) return NO;
NSString *path = [NSString stringWithUTF8String:info.dli_fname];
return [path hasPrefix:NSBundle.mainBundle.bundlePath];
}
%hook NSBundle
- (NSString *)bundleIdentifier {
return isSelf() ? YT_BUNDLE_ID : %orig;
}
- (NSDictionary *)infoDictionary {
NSDictionary *dict = %orig;
if (!isSelf())
return %orig;
NSMutableDictionary *info = [dict mutableCopy];
if (info[@"CFBundleIdentifier"]) info[@"CFBundleIdentifier"] = YT_BUNDLE_ID;
if (info[@"CFBundleDisplayName"]) info[@"CFBundleDisplayName"] = YT_NAME;
if (info[@"CFBundleName"]) info[@"CFBundleName"] = YT_NAME;
return info;
}
- (id)objectForInfoDictionaryKey:(NSString *)key {
if (!isSelf())
return %orig;
if ([key isEqualToString:@"CFBundleIdentifier"])
return YT_BUNDLE_ID;
if ([key isEqualToString:@"CFBundleDisplayName"] || [key isEqualToString:@"CFBundleName"])
return YT_NAME;
return %orig;
}
%end