如何检测国际音标补丁程序?



我的应用程序是使用 Flutter 构建的,然后我们进行了一些渗透测试。收到结果后,安全风险之一是:

未找到 IPAPatch 保护

出于安全原因,我需要防止我的应用程序被 IPAPatch 修补。这种情况是非越狱IPA补丁。因为,我已经输入了检测越狱的代码。

我很难找到一种以编程方式检测 IPAPatcher 的方法。我已经用谷歌搜索并研究了它们,但仍然没有找到编程方式,无论是在 Swift 还是 Flutter 中原生的。

这真的可以防止我的应用程序被 IPAPatch 修改/修补,或者至少有一种方法可以检测 IPAPatch?

这是来自我的应用程序,它是用 objc 编写的,如果您愿意,您可以轻松用 swift 重写这些方法。

检查预配配置文件是否存在。苹果在上传到App Store时将其删除,但当旁加载时,它仍然存在

NSString *provisionPath = [[NSBundle mainBundle]] pathForResource:@"embedded" ofType:@"mobileprovision"];
if (nil != provisionPath) {
// app is cracked..
} 

验证应用程序捆绑标识符。在较新的iOS版本上旁加载应用程序时,它将修改捆绑标识符

NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
if(![@"com.yourcompany.yourapp" isEqualToString:bundleIdentifier]) {
// app is cracked
}

检查CydiaSubstrates或替代品。通常,在旁加载应用程序时,您还将注入CydiaSubstrate或Substitute以调整兼容性。

int max = _dyld_image_count();
for (int i = 0; i < max; i++) {
const char *name = _dyld_get_image_name(i);
NSString *names = [NSString stringWithUTF8String:name];
if (([names containsString:@"CydiaSubstrate"] || [names containsString:@"substitute])) {
// app could be cracked or user is just jailbroken 
}

有关检查加密状态等更多方法,您应该查看此线程: 如何在不检查 SignerIdentity 的情况下检测应用程序是否已被破解? 也不要认为这些方法不能被破解,因为它们是微不足道的,但保护你的应用程序的良好开端(:

最新更新