如果我希望我的应用在越狱的iPhone上表现不同,我该如何确定呢?
需要检查的一些常见文件:
/Library/MobileSubstrate/MobileSubstrate.dylib
/Applications/Cydia.app
/var/cache/apt
/var/lib/apt
/var/lib/cydia
/var/log/syslog
/var/tmp/cydia.log
/bin/bash
/bin/sh
/usr/sbin/sshd
/usr/libexec/ssh-keysign
/etc/ssh/sshd_config
/etc/apt
大多数情况下是检查Cydia相关文件。
我建议查找那些在“原版”iPhone上不存在的文件。我见过的所有越狱工具都会安装ssh。这可能是判断是否越狱的一个好指标。
然后您可以处理用户交互并采取适当的行动,例如表现不同等...一些越狱设备存在问题,我们制作了一个黑客工具来解决这些问题,但我们需要知道这是否是越狱设备,请点击此处以便应用程序解决问题。如果您回到正常状态即删除越狱,请点击此处。
尝试查找Cydia或越狱设备创建的文件。或者尝试在应用程序黑盒子之外的文件中写入内容。如果您成功执行此操作,则设备已被破解/越狱 :)
- (BOOL)jailbroken
{
NSFileManager * fileManager = [NSFileManager defaultManager];
return [fileManager fileExistsAtPath:@"/private/var/lib/apt/"];
}
步骤1
extension UIDevice {
func isJailBroken() -> Bool {
let cydiaPath = "/Applications/Cydia.app"
let aptPath = "/private/var/lib/apt/"
if FileManager.default.fileExists(atPath: cydiaPath) || FileManager.default.fileExists(atPath: aptPath) {
return true
}
return false
}
}
viewDidLoad()
中调用它: // show a blank screen or some other view controller
let viewController = UIDevice.current.isJailBroken() ? JailBrokenViewController() : NextViewController()
self.navigationController?.present(viewController, animated: true, completion:nil)
尝试访问/Application/Preferences.app/General.plist 在越狱的iPhone上,您应该能够这样做。 在非越狱手机上,您将无法访问它。