-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathLCTaskForPIDTweak.m
More file actions
52 lines (48 loc) · 1.64 KB
/
LCTaskForPIDTweak.m
File metadata and controls
52 lines (48 loc) · 1.64 KB
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
#import "LCTaskForPIDTweak.h"
@implementation LCTaskForPIDTweak
+ (NSString *)exceptionPortName {
NSString *appGroupPrefix = [PrivClass(LCSharedUtils) appGroupID];
return [appGroupPrefix stringByAppendingFormat:@".lc.host.tfptweak.exc_port"];
}
+ (NSString *)kernelPortName {
NSString *appGroupPrefix = [PrivClass(LCSharedUtils) appGroupID];
return [appGroupPrefix stringByAppendingFormat:@".lc.host.tfptweak.kernel_port"];
}
+ (NSString *)taskPortNameForPID:(pid_t)pid {
NSString *appGroupPrefix = [PrivClass(LCSharedUtils) appGroupID];
return [appGroupPrefix stringByAppendingFormat:@".lc.guest.tfptweak.tfp_%d", pid];
}
@end
@implementation NSXPCListener(LCTaskForPIDTweak)
- (mach_port_t)machPort {
return xpc_endpoint_copy_listener_port_4sim(self.endpoint._endpoint);
}
@end
@implementation NSXPCListenerEndpoint(LCTaskForPIDTweak)
- (instancetype)initWithBootstrapName:(NSString *)name {
mach_port_t port;
kern_return_t kr = bootstrap_look_up(bootstrap_port, name.UTF8String, &port);
if(kr != KERN_SUCCESS) {
NSLog(@"[LCTaskForPIDTweak] Failed to look up bootstrap port for %@: %s", name, mach_error_string(kr));
return nil;
}
self = [self init];
self._endpoint = xpc_endpoint_create_mach_port_4sim(port);
return self;
}
@end
__attribute__((constructor))
static void init(void) {
if(PrivClass(LCUtils)) {
init_livecontainer();
} else {
init_guest_apps();
}
}
void LCShowAlert(NSString *msg) {
dispatch_async(dispatch_get_main_queue(), ^{
void (*func)(NSString* message) = dlsym(RTLD_DEFAULT, "LCShowAlert");
assert(func);
func(msg);
});
}