-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTweak.xm
138 lines (105 loc) · 2.86 KB
/
Tweak.xm
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
125
#import <SpringBoard/SBApplicationIcon.h>
#import <UIKit/UIKit2.h>
#import <AppSupport/CPDistributedMessagingCenter.h>
//#import "FloatHelper/YWMsgService.h"
//#import "FloatHelper/YWMsgClient.h"
#import "Controller/FloatApp.h"
#import "FloatHelper/FloatHelper.h"
/* * * * * * * * * * * * * * * * * Hook SBApplicationIcon * * * * * * * * * * * * * */
%hook SBApplicationIcon
//- (void)launchFromLocation:(int)arg1
-(void)launch
{
%orig;
}
%end
/* * * * * * * * * * * * * * * * * Hook SpringBoard * * * * * * * * * * * * * */
YWMsgService *msgService = nil;
static UIWindow *globalCoco= nil;
%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)application
{
%orig;
%log;
NSLog(@"applicationDidFinishLaunching:application");
//
// UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"aaaaa" message:@"bbbbbb" delegate:self cancelButtonTitle:@"退出" otherButtonTitles: nil];
// [alert show];
msgService = [[YWMsgService alloc] init];
}
//-(void)applicationDidFinishLaunching
//{
// %orig;
// %log;
// NSLog(@"applicationDidFinishLaunching");
// UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"aaaaa" message:@"bbbbbb" delegate:self cancelButtonTitle:@"退出" otherButtonTitles: nil];
// [alert show];
//
// msgService = [[YWMsgService alloc] init];
//}
%end
/* * * * * * * * * * * * * * * * * Hook UIApplication * * * * * * * * * * * * * */
YWMsgClient * msgClient = nil;
FloatApp *cocoFLoatApp= nil;
@interface UIApplication()
-(void)setupMsgClient;
-(bool)ifAppNeedToHook;
-(void)handleHook;
@end
%hook UIApplication
%new(v@:)
-(void)setupMsgClient
{
if ( nil == msgClient)
{
msgClient = [[YWMsgClient alloc] init];
};
}
%new(v@:)
-(bool)ifAppNeedToHook
{
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString *name = nil;
if (infoDictionary)
name = [infoDictionary objectForKey:@"CFBundleDisplayName"];
NSLog(@"BundleInfoDictionary : %@",infoDictionary);
NSLog(@"appName:%@ ",name);
bool ret = [msgClient sendMsgIfHookAppWithName:name];
return ret;
}
%new(v@:)
-(void)handleHook
{
if ( nil == cocoFLoatApp)
{
cocoFLoatApp = [FloatApp startFLoatApp];
};
}
-(void)_reportAppLaunchFinished{
%orig;
%log;
[self setupMsgClient];
bool ifAppHook = [self ifAppNeedToHook];
[GlobalFlag shareFlag].ifAppNeedToAddFloatmodul = ifAppHook;
NSLog(@"needToHook:%d ",ifAppHook);
if (ifAppHook)
{
[self handleHook];
}else
{}
}
-(id)init{
return %orig;
}
%end
/* * * * * * * * * * * * * * * * * Hook UIImage * * * * * * * * * * * * * */
%hook UIImage
+(UIImage *)imageNamed:(NSString *)name
{
if ([GlobalFlag shareFlag].ifAppNeedToAddFloatmodul) {
UIImage * img = [UIImage f_imageNamed:name];
return img;
};
return %orig(name);
}
%end