Skip to content

Commit 310413d

Browse files
committed
bug fix
1 parent 57ffae0 commit 310413d

2 files changed

Lines changed: 45 additions & 0 deletions

File tree

BaseBin/libjailbreak/src/primitives_IOSurface.m

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,13 @@ int IOSurface_map(uint64_t pa, uint64_t size, void **uaddr)
125125

126126
IOSurfaceRef mappedSurfaceRef = IOSurfaceLookupFromMachPort(surfaceMachPort);
127127
*uaddr = IOSurfaceGetBaseAddress(mappedSurfaceRef);
128+
129+
/*********************** roothide specific **************************************/
130+
vm_prot_t cur_prot, max_prot;
131+
kern_return_t kr = vm_remap(mach_task_self(), uaddr, size, 0, VM_FLAGS_ANYWHERE, mach_task_self(), (vm_address_t)*uaddr, FALSE, &cur_prot, &max_prot, VM_INHERIT_NONE);
132+
assert (kr == KERN_SUCCESS);
133+
/*********************************************************************************/
134+
128135
return 0;
129136
}
130137

BaseBin/roothidehooks/lsd.x

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ static const void *kBlockSchemeTagKey = &kBlockSchemeTagKey;
155155
%orig(identifier, options, useClientProcessHandle, newcallback);
156156
}
157157

158+
//16.2(?)+
158159
-(void)openURL:(NSURL*)url fileHandle:(id)fileHandle options:(id)options completionHandler:(void(^)(BOOL,NSError*))completionHandler
159160
{
160161
BOOL blocked = NO;
@@ -191,6 +192,43 @@ static const void *kBlockSchemeTagKey = &kBlockSchemeTagKey;
191192
%orig(url, fileHandle, options, newcallback);
192193
}
193194

195+
//15.0~16.0(?)
196+
- (void)openURL:(NSURL*)url options:(id)options completionHandler:(void(^)(BOOL,NSError*))completionHandler
197+
{
198+
BOOL blocked = NO;
199+
200+
if(self.XPCConnection)
201+
{
202+
pid_t pid = self.XPCConnection.processIdentifier;
203+
204+
NSLog(@"_LSDOpenClient openURL:%@ options:%@ completionHandler:%p XPCConnection=%p proc:%d,%s", url, options, completionHandler, self.XPCConnection, pid, proc_get_path(pid,NULL));
205+
206+
if(jbclient_blacklist_check_pid(pid)==true)
207+
{
208+
if(isJailbreakURLScheme(url.scheme))
209+
{
210+
NSLog(@"_LSDOpenClient: block openURL:%@", url);
211+
212+
objc_setAssociatedObject(url, kBlockSchemeTagKey, @YES, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
213+
214+
blocked = YES;
215+
}
216+
}
217+
}
218+
219+
id newcallback = ^(BOOL success, NSError* error) {
220+
NSLog(@"_LSDOpenClient completionHandler(%@) success:%d result:%@", url, success, error);
221+
222+
if(blocked) {
223+
assert(success == NO);
224+
}
225+
226+
return completionHandler(success, error);
227+
};
228+
229+
%orig(url, options, newcallback);
230+
}
231+
194232
%end
195233

196234

0 commit comments

Comments
 (0)