使用 ipapatch 逆向了一个 app, 但是一登录就 crash. 猜测是做了 bundle id 校验. 但是要编译到真机上, 需要打包证书, 就必须改 bundle id. 我能想到的就是得在越狱机下处理或者 hook 获取 bundleid 的方法. 但是后者我担心会影响其他系统逻辑导致异常. 请问有更好的办法吗?
同求, 我好象也是这样 我修改了 [bundle infoDictionary] 还是不管用
如果硬编码了bundleid,可以静态分析后直接修改二进制文件,改成你自己的。
长度问题的话你就按二进制里的长度来,反正自己的bundleID随便改。
原本的二进制文件才几十k,需要一个一个分析它framework下所有的framework库?
参考我的代码:
%hook NSBundle
%new
-
(BOOL)isCallFromTaker{
NSArray *address = [NSThread callStackReturnAddresses];
Dl_info info = {0};
if(dladdr((void *)[address[2] longLongValue], &info) == 0){
return NO;
}
NSString *path = [NSString stringWithUTF8String:info.dli_fname];
if ([path hasPrefix:NSBundle.mainBundle.bundlePath]) {
// 二进制来自 ipa 包内
if ([path.lastPathComponent isEqualToString:@“libTakerDylib.dylib”]) {
// 二进制是插件本身
return NO;
} else {
// 二进制是app
return YES;
}
} else {
// 二进制是系统或者越狱插件
return NO;
}
} -
(id)bundleIdentifier{
if([self isCallFromTaker]){
return @“your bundleIdentifier”;
}
return %orig;
}
%end
要打包到真机, 不能改包的 bundleid 吧?
wildcard provisioning profile 即可