检测iOS应用程序是否被黑客入侵
我的朋友得到了一台越狱的iPad。当他从Installous安装业务模型生成应用程序并尝试使用该应用程序时,该应用程序显示一个带有以下消息的检测iOS应用程序是否被黑客入侵,ios,xcode,app-store,jailbreak,Ios,Xcode,App Store,Jailbreak,我的朋友得到了一台越狱的iPad。当他从Installous安装业务模型生成应用程序并尝试使用该应用程序时,该应用程序显示一个带有以下消息的UIAlertView: 有人知道怎么做吗 我有两个想法: 如果从应用商店下载应用时有一些设置标志,则可以使用此标志:如果flag=NO,则显示UIAlertView 服务器(但在本例中,您应该知道所有设备ID以及谁从应用商店安装了您的应用程序) 我说得对吗?如何实现此功能?有一些库可以检测应用程序是否被破解(以及越狱),这提供了一个很好的概述,但基本上是
UIAlertView
:
有人知道怎么做吗
我有两个想法:
flag=NO
,则显示UIAlertView
我说得对吗?如何实现此功能?有一些库可以检测应用程序是否被破解(以及越狱),这提供了一个很好的概述,但基本上是通过检查签名者身份来完成的
一个图书馆是。我没有使用过这个库,所以我不知道它的工作情况如何。它相当简单,但是你可以检查cydia应用程序是否已安装(通过检查它的文件夹是否存在)。如果已安装,则表示您不信任该设备。这就留下了被越狱的iPhone/iPad从app store下载你的应用的风险。你可以检测到两个文件:
SC\u Info
和iTunesMetadata。plist
如果你找不到,那么你的应用是盗版的:这些文件是从应用商店下载后安装的
这是要检查的代码:
NSString * bundlePath = [ [NSBundle mainBundle] bundlePath ];
if ( ! [ [NSFileManager defaultManager] fileExistsAtPath: ( @"%@/SC_Info", bundlePath ) ] )
{
// jailbroken
}
if ( ! [ [NSFileManager defaultManager] fileExistsAtPath: ( @"%@/iTunesMetadata.plist", bundlePath ) ] )
{
// jailbroken
}
我在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
}
这是一个老生常谈的问题,但作为越狱开发者,我认为它可以帮助那些在搜索越狱检测旁路或诸如此类的东西时偶然发现它的人,这些东西现在越来越相关。OP的问题现在经常出现,比过去更多 即使在2020年的今天,这些类型的应用程序也可以检测各种越狱实用程序。我自己也是一个越狱开发者。当我们为任何iOS版本构建越狱时,我们添加了相当多的基本二进制文件以进一步提供帮助 如今,我们将它们放在各种隐藏文件夹中,如
/jb/bin
或/jailbreak/binbag/
或/jbstuff/
等,而在过去,它们通常被放在默认的iOS目录中,如/bin/sbin
等
具有越狱检测功能的应用程序执行[NSFileManager defaultManager]fileExistsAtPath:…
以检查是否存在Cydia
,这些基本二进制文件(大多数时候它们检查/bin/bash
,但现在检查得更多),今天,他们甚至会检查根FS
是否已作为R/W
重新装载(它通常是RO
,只有/var
是可写的)
从Cydia
下载的调整通常不会检查越狱检测(好吧,大多数情况下-各种越狱开发者之间存在戏剧性的冲突,因此即使在今天也存在人为限制),但它们会检查您从中下载的回购协议
大多数情况下,它就像AppSync Unified
tweak所做的一样简单
在带有适当的Cydia
repo URL或标识符的调整代码中的某个地方有一个变量或#define
,调整检查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.");
}
....
因此,在这个越狱调整的情况下,它只是检查从中下载的回购协议。这里的一个简单补丁就是将AppSyncUnified.dylib加载到一个arm64/arm反汇编程序中,比如Hopper或IDA,甚至Radare2,然后对分支进行补丁。将其设为一个B
,而不是一个条件分支,这样就不会考虑比较的结果。就这么简单。如果你想分析AppSync Unified的完整源代码,这里有
当然,正如我所说,许多调整使用更复杂的方案,如服务器端DRM,但没有一个是防故障的
*请务必理解,我不宽恕盗版行为。这个回复是为了帮助新用户进入这个页面,它的目的是提供一些关于越狱检测和越狱调整DRM当前状态的见解。请从适当的回购协议中购买付费调整,它们只花了一美元左右。我敢打赌,第二种方法在大多数情况下都会使用,我应该如何知道所有正确的ID?也许他们在越狱商店中添加了一个特殊版本的应用程序,具有特殊的警报视图,并保持正常的应用程序商店版本不变,但有些人在越狱时可以购买应用程序。。这就是为什么这不是一个选项这也不起作用,因为应用商店应用程序是沙盒的,所以检查沙盒之外的目录不是一个好办法option@WrightsCS这就是重点。当越狱时,沙箱限制被移除,因此检查cydia是有效越狱测试的一部分。它只是不表明某个应用程序是否被破解,或者实际上@Wattson 12你是错的。越狱设备上的应用商店访问沙盒外文件的唯一方法是安装“sandcastle”。除此之外,即使在越狱的设备上,应用商店的应用程序仍然处于沙箱中。Cydia应用程序安装在~/应用程序中(没有沙箱),只有这些应用程序才能访问系统范围内的文件。你对越狱行为的看法似乎有偏差。越狱本身并没有消除沙箱限制。为什么你认为Cydia应用程序安装在不同的位置-因为沙箱restrictions@WrightsCS我承认我不知道标准越狱安装是什么样的,但我见过的每一个越狱测试都包括一个检查,看看应用程序是否可以访问某些目录,以及是否可以访问pres