Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import <Foundation/Foundation.h>
- #import <mach/mach.h>
- #import <mach/mach_vm.h>
- int main(int argc, char *argv[])
- {
- @autoreleasepool {
- NSString *ResourcePath = [[NSBundle mainBundle] resourcePath];
- NSTask *Target = [NSTask launchedTaskWithLaunchPath: [ResourcePath stringByAppendingString: @"/target"] arguments: [NSArray array]];
- const pid_t TargetPID = [Target processIdentifier];
- vm_map_t RemoteTask;
- mach_error_t err = task_for_pid(mach_task_self(), TargetPID, &RemoteTask);
- if (err != KERN_SUCCESS)
- {
- printf("Not running as root?\n");
- [Target terminate];
- return EXIT_FAILURE;
- }
- NSTask *Feedface = [NSTask launchedTaskWithLaunchPath: [ResourcePath stringByAppendingString: @"/feedface"] arguments: [NSArray arrayWithObjects:
- [[NSNumber numberWithInt: TargetPID] stringValue],
- @"-string",
- @"works\\x00",
- @"rel[0x100000f28]",
- nil]];
- [Feedface waitUntilExit];
- task_resume(RemoteTask);
- [Target waitUntilExit];
- printf("Feedface: %s\nTarget: %s\n", [Feedface terminationStatus] == EXIT_SUCCESS ? "Success" : "Failed", [Target terminationStatus] == EXIT_SUCCESS ? "Success" : "Failed");
- }
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement