mirror of
https://github.com/opa334/TrollStore.git
synced 2025-04-12 23:33:11 +08:00
42 lines
892 B
Objective-C
42 lines
892 B
Objective-C
@import Foundation;
|
|
@import Darwin;
|
|
|
|
@interface RBSProcessPredicate
|
|
+ (instancetype)predicateMatchingBundleIdentifier:(NSString *)bundleID;
|
|
@end
|
|
|
|
@interface RBSProcessHandle
|
|
+ (instancetype)handleForPredicate:(RBSProcessPredicate *)predicate error:(NSError **)error;
|
|
- (int)rbs_pid;
|
|
@end
|
|
|
|
#define PT_DETACH 11
|
|
#define PT_ATTACHEXC 14
|
|
int ptrace(int _request, pid_t _pid, caddr_t _addr, int _data);
|
|
|
|
int main(int argc, const char* argv[]) {
|
|
RBSProcessPredicate *predicate = [RBSProcessPredicate predicateMatchingBundleIdentifier:@(argv[1])];
|
|
RBSProcessHandle* process = [RBSProcessHandle handleForPredicate:predicate error:nil];
|
|
|
|
int pid = process.rbs_pid;
|
|
if (!pid)
|
|
{
|
|
return ESRCH;
|
|
}
|
|
|
|
int ret = ptrace(PT_ATTACHEXC, pid, 0, 0);
|
|
if (ret == -1)
|
|
{
|
|
return errno;
|
|
}
|
|
|
|
usleep(100000);
|
|
ret = ptrace(PT_DETACH, pid, 0, 0);
|
|
if (ret == -1)
|
|
{
|
|
return errno;
|
|
}
|
|
return 0;
|
|
}
|
|
|