rjs*_*ing 78 iphone cocoa-touch objective-c jailbreak ios
如何(以编程方式)确定iPhone/iPod是否:
Pinch Media可以检测手机是否被打破或软件运行是否破裂,是否有人知道他们是如何做到这一点的?有图书馆吗?
rpe*_*ich 25
检测越狱手机就像检查/private/var/lib/apt/
文件夹的存在一样简单.虽然这不会检测仅安装程序用户,但现在大多数已经安装了Cydia,Icy或RockYourPhone(所有这些都使用apt)
要检测盗版用户,最简单的方法是检查SignerIdentity
应用中是否存在密钥Info.plist
.由于高级破解程序可以轻松找到标准[[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"]
检查,因此最好使用可通过的Objective C运行时来模糊这些调用,#import <objc/runtime.h>
或使用替代等效项.
Ben*_*jie 10
只是为了扩展zakovyrya的回复,您可以使用以下代码:
if ([[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"] != nil) {
// Jailbroken
}
Run Code Online (Sandbox Code Playgroud)
但是,越狱你的应用程序的人可以对你的程序进行hexedit,因此,他们可以编辑字符串@"SignerIdentity"来读取@"siNGeridentity"或其他会返回nil的东西,从而通过.
因此,如果您使用此(或http://thwart-ipa-cracks.blogspot.com/2008/11/detection.html中的任何其他建议):
小智 5
扩展yonel和Benjie上面的评论:
1)Landon Fuller的依赖于加密检查的方法,由yonel链接,似乎是唯一一个仍未被自动破解工具击败的方法.我不会过分担心Apple会很快改变LC_ENCRYPTION_INFO标题的状态.它似乎对越狱的iphone有一些不可预知的影响(即使用户购买了副本......)
无论如何,我不会根据该代码对用户采取任何草率行动......
2)补充本杰的评论.混淆(在处理反盗版代码中的任何字符串值时绝对必要):类似但可能更简单的方法是始终检查您正在寻找的值的盐渍 散列版本.例如(即使该检查不再有效),您可以将每个MainBundle的密钥名称检查为md5(keyName +"some secret salt"),而不是相应的常量...相当基本,但肯定会击败任何定位串.
当然,这要求您能够间接查询要比较的值(例如,通过浏览包含它的数组).但最常见的情况是这种情况.
归档时间: |
|
查看次数: |
42417 次 |
最近记录: |