#include <substrate.h>
#import <objc/runtime.h>
#import <UIKit/UIKit.h>
// Original & replaced methods
static void (*original_objc_method)(id self, SEL selector, id value);
static void replaced_objc_method(id self, SEL selector, id value);
// Replaced method
static void replaced_objc_method(id self, SEL selector, id value)
{
// Call original method
original_objc_method(self, selector, value);
// TODO:
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"From SpringBoard"
message:@"SpringBoard hook success!"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil, nil];
[alert show];
}
static __attribute__((constructor)) void dylib_init()
{
// NSString or string can be hidden
SEL target = NSSelectorFromString(@"applicationDidFinishLaunching:");
MSHookMessageEx(objc_getClass("SpringBoard"), target, (IMP)&replaced_objc_method, (IMP *)&original_objc_method);
}