勾app一个类所有方法的执行顺序

https://github.com/codesourse...
https://github.com/zhangkn/Bi...

https://github.com/qhd/ANYMet...

具体请看帖子

前言

打日志的printf 改成 nslog

原理

把类及实例方法的实现都交换给了 _objc_msgForward,然后在每个类/元类都加上了forwardInvocation:方法:

 `class_addMethod(hookClass, @selector(forwardInvocation:), forwardInvocationImpl, "v@:@");`
利用objc_msgSend的快速消息转发机制来实现调回原方法。



微信

[BigBang hookClass:@"WCPayLogicMgr"];

[BigBang hookClass:@"WCRedEnvelopesLogicMgr"];

[BigBang hookClass:@"ContactUpdateHelper"];

[BigBang hookClass:@"WCRedEnvelopesNetworkHelper"];

[BigBang hookClass:@"WCRedEnvelopesReceiveHomeView"]

例子


%hook MicroMessengerAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // 打印某个类的所有方法的,查看所有方法的执行顺序

    [KNHook hookClass:@"WCRedEnvelopesMakeRedEnvelopesViewController"];
    //  清空剪切板
    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    [pasteboard setString:@""];
    NSLog(@"pasteboard:%@", pasteboard.string);

    return %orig;
}
%end

观察到

Nov  2 15:30:12 iPhone WeChat[2589] <Warning>: KNHooklog :-(void)refreshViewWithData:(have 1 value)
    return:(null)
    value1:WCRedEnvelopesControlData--><WCRedEnvelopesControlData: 0x17d94b10>
    object:<WCRedEnvelopesMakeRedEnvelopesViewController: 0x175fa800>
     ##########################################
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值