如何hook 结构体

原生代码

struct student{
    long number;
    char name[20];
    char gender;
    int age;
    float salary;
    char address[80];
};
@interface ViewController (){
    struct student _aa;
}
@end

@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    [self test1];
    NSLog(@"       _aa.number = %ld, _aa.age = %d",_aa.number,_aa.age);
}

- (void)test1{
    _aa.number = 11;
    _aa.age = 11;
    NSLog(@"test1: _aa.number = %ld, _aa.age = %d",_aa.number,_aa.age);
}

hook 代码

struct student {
    long long number;
    char name[20];
    char gender;
    int age;
    float salary;
    char address[80];
};
%hook ViewController
- (void)test1{
    %orig;
    struct student *aa = &MSHookIvar(self, "_aa");
    aa->age = 18;
}
%end

日志打印

test1: _aa.number = 11, _aa.age = 11
       _aa.number = 11, _aa.age = 18

你可能感兴趣的:(如何hook 结构体)