fishhook

  • fishhook是facebook维护的一个开源的可以替换方法的库
    fishhook的原理是:
    当app加载进内存调用系统方法的时候,dyld 告诉app调用系统方法的地址,这个时候将调用方法的方法函数地址换成我们自己的方法就可以达到交换方法的目的。
    hook的用法如下:
int (*p_strlen)(char *s);
int mystrlen(char *s){
//    NSLog(@"1111");
    return 999;
}
- (IBAction)fishHook:(id)sender {
    NSLog(@"测试fishhook");
    char *hookString = "good good study";
    NSLog(@"%lu",strlen(hookString));
    struct rebinding rebd;
    rebd.name = "strlen";
    rebd.replaced = (void*)&p_strlen;
    rebd.replacement = mystrlen;
    
    struct rebinding rebs[]= {rebd};
    
    rebind_symbols(rebs, 1);
    NSLog(@"%lu",strlen(hookString));
}

结果如下

2018-06-13 17:20:39.217093+0800 test[53965:923791] 测试fishhook
2018-06-13 17:20:39.217884+0800 test[53965:923791] 15
2018-06-13 17:20:42.360519+0800 test[53965:923791] 999
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Fishhook 是什么? 简单来说Fishhook就是hook函数的一种工具,当然它hook的原理和我们熟知...
    bland_Xu阅读 4,328评论 2 18
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,018评论 3 119
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,552评论 25 708
  • 苦恨何思忆当年 血浴染金当过悔 莫使金银何所谓 对空身似燕中薄
    南城北方阅读 305评论 0 1
  • 1 很多人不想单身,因为太孤独。而对于刚分手的人,这种孤独感往往很难以忍受,曾经被填满的生活好像一下被抽空了。 “...
    郴洁阅读 588评论 2 3