8

我的朋友有一个越狱的 iPad。当他从 Installous 安装 Business Model Generation App 并尝试使用它时,应用程序显示UIAlertView以下消息: 破解版

有人知道该怎么做吗?

我有两个想法:

  1. 如果您从 App Store 下载应用程序时设置了一些标志,那么您可以使用此标志:如果flag = NO,则显示UIAlertView.
  2. 带有服务器的东西(但在这种情况下,您应该知道所有设备 ID 以及谁从 App Store 安装了您的应用程序)。

我对吗?如何实现此功能?

4

5 回答 5

11

您可以检测两个文件:SC_InfoiTunesMetadata.​plist.

如果您找不到它们,那么您的应用程序被盗版:这些文件是在从 App Store 下载后安装的。

这是要检查的代码:

NSString * bundlePath = [ [NSBundle mainBundle] bundlePath ];
if ( ! [ [NSFileManager defaultManager] fileExistsAtPath: ( @"%@/SC_Info", bundlePath ) ] )
{
    // jailbroken
}
if ( ! [ [NSFileManager defaultManager] fileExistsAtPath: ( @"%@/iTunesMetadata.​plist", bundlePath ) ] )
{
    // jailbroken
}
于 2012-07-24T04:44:14.493 回答
2

有一些库可以检测应用程序是否被破解(以及越狱),这个问题提供了一个很好的概述,但基本上它是通过检查签名者身份来完成的

一个库是AntiCrack。我没有使用过这个库,所以我不知道它的效果如何

于 2012-07-23T09:43:06.770 回答
1

这是一个老问题,但作为一名越狱开发人员,我认为它可以帮助那些在寻找越狱检测绕过或类似的东西时偶然发现它的人,这些东西现在越来越相关。OP 的问题现在经常出现,比以前更多。

即使在 2020 年的今天,这类应用程序也会检测到各种越狱实用程序。我自己是一名越狱开发人员。当我们为任何 iOS 版本构建越狱时,我们会添加相当多的基础二进制文件以进一步提供帮助。

现在我们将它们放置在各种隐藏文件夹中,例如/jb/binor/jailbreak/binbag//jb/jbstuff/等,而在过去,它们通常被放置在默认的 iOS 目录中,例如 /bin/sbin等。

具有越狱检测功能的应用程序会[NSFileManager defaultManager] fileExistsAtPath:...检查Cydia这些基本二进制文件是否存在(大多数情况下它们会检查/bin/bash,但现在检查更多),而今天,它们甚至会检查是否ROOT FS已重新安装为R/W(通常RO是只能/var写)。

下载的调整Cydia通常不会检查越狱检测(嗯,大多数时候 - 各种越狱开发人员之间存在戏剧性,所以即使在今天也存在人为限制),但他们会检查您下载的存储库。

AppSync Unified大多数时候,它就像调整最终所做的一样简单。

调整的代码中有一个变量或#define某处具有正确的Cydia回购 URL 或标识符,调整检查Cydia列表以查看调整是否已从那里下载。如果没有,它将显示警报。

一些调整实现了奇怪的 DRM,每次重新启动手机时都会从服务器端下载许可证(这很奇怪,在越狱社区中很少使用)。

以下是 AppSync 统一调整功能的示例:

#define DPKG_PATH "/var/lib/dpkg/info/net.angelxwind.appsyncunified.list"

....

if (access(DPKG_PATH, F_OK) == -1) {
        NSLog(@"You seem to have installed AppSync Unified from a Cydia/APT repository that is not cydia.akemi.ai (package ID net.angelxwind.appsyncunified).");
        NSLog(@"If someone other than Linus Yang (laokongzi) or Karen/あけみ is taking credit for the development of this tweak, they are likely lying.");
        NSLog(@"Please only download AppSync Unified from the official repository to ensure file integrity and reliability.");

}

....

所以在这个越狱调整的情况下,它只是检查它被下载的 repo。这里的一个简单补丁就是将其加载AppSyncUnified.dylib到诸如 Hopper 或 IDA 甚至 Radare2 之类的 arm64/arm 反汇编程序中并修补分支。将其设为 aB而不是条件分支,以便永远不会考虑比较的结果。就如此容易。如果您想分析 AppSync Unified 的完整源代码,请访问GitHub 存储库

当然,正如我所说,许多调整使用更复杂的方案,如服务器端 DRM,但它们都不是防故障的。

*请理解我不容忍tweak 盗版。此回复旨在帮助新用户访问此页面,旨在提供有关越狱检测和越狱调整 DRM 的当前状态的一些见解。请从适当的回购购买付费调整,它们只需一美元左右。

于 2020-03-01T11:06:13.500 回答
1

我在 swift 上使用此代码:

if Bundle.main.infoDictionary?["SignerIdentity"] != nil
     || !FileManager.default.fileExists(atPath: ("\(Bundle.main.bundlePath)/SC_Info"))
     || !FileManager.default.fileExists(atPath: ("\(Bundle.main.bundlePath)/iTunesMetadata.​plist")){
        // Jailbroken
}
于 2020-02-14T08:18:14.827 回答
-3

这相当简单,但您可以检查是否安装了 cydia 应用程序(通过检查它的文件夹是否存在)。如果已安装,则您不信任该设备。这留下了错误地释放从应用商店下载您的应用的越狱 iPhone/iPad 的风险。

于 2012-07-23T09:52:32.627 回答