在一些逆向过程中常常通过代码注入的方式来hook,在OC里面我们常常通过runtime交换imp来hook,但是今天我们试试facebook开源的fishhook,来了解对系统C函数的hook
HOOK,俗称钩子,是iOS逆向中改变程序运行流程的一种技术,通过hook让别人的程序执行我们自己写代码.
今天我们主要来学习下fishhook,是Fachbook提供一个动态修改链接Mach-O文件的工具,利用MachO文件加载原理,通过懒加载/非懒加载两个表的指针达到C函数Hook的目的.
#import "ViewController.h"
#import "fishhook.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
struct rebinding nslog;
nslog.name = "NSLog";
nslog.replacement = myNslog;
nslog.replaced = (void *)&sys_nslog;
struct rebinding rebs[1] = {nslog};
rebind_symbols(rebs, 1);
}
static void (*sys_nslog)(NSString * format,...);
void myNslog(NSString * format,...){
format = [format stringByAppendingString:@"勾上了!\n"];
sys_nslog(format);
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEve