#import <objc/runtime.h>


@interface NSArray(hook)
    -(id)myLastObject;
@end

@implementation NSArray(hook)

-(id)myLastObject
{
    NSLog(@"inject success!!!");
    return [self myLastObject];
}
@end

void HookMethod(Class aClass, SEL oldSEL, SEL newSel)
{
    Method oldMethod = class_getInstanceMethod(aClass, oldSEL);
    assert(oldMethod);
    Method newMethod = class_getInstanceMethod(aClass, newSel);
    assert(newMethod);
    method_exchangeImplementations(oldMethod, newMethod);
}

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        NSLog(@"Hello, P.Y.G!");
        HookMethod([NSArray class], @selector(lastObject), @selector(myLastObject));
        NSArray *array = @[@"piaoyun", @"nisy", @"Q", @"GG"];
        NSString *string = [array lastObject];
        NSLog(@"RET : %@", string);
    }
    return 0;
}

你可能感兴趣的文章

评论区

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。