关于 iOS hook [fopen] 函数返回 NULL 会崩溃

各位大佬好,小弟新手

在过 JB 特征检测的时候,hook 【fopen】函数如果返回 NULL 部分应用启动会崩溃

FILE *fopen(const char *path, const char *mode);
%hookf(FILE *, fopen, const char *path, const char *mode) {

    NSString *pathString = [NSString stringWithUTF8String:path];
    NSString *app_BundleId = filterPkgName();

    // if([app_BundleId isEqualToString:@"指定应用包名"]) return %orig;

    if (isJailbreakFile(path)) {
		return NULL;
	}
	return %orig;

}

如上代码,注释的地方只能指定应用包名不过fopen检测,否则如果走进判断 返回NULL 会崩溃
但是这种方式治标不治本

有没有合适的hook fopen 的方案,能解决这一问题。

希望能有这方面经验的大佬 指点一二

小弟感谢了

1 个赞

可以不改返回值,直接改path的值