2009-07-16 40 views
78

你如何確定(編程)如果iPhone/iPod的是:確定如果iPhone被監獄編程破

  1. 監獄打破
  2. 運行軟件的破解副本

Pinch Media可以檢測到手機是否被監禁或軟件運行是否被破解,有誰知道他們是如何做到的?有沒有圖書館?

+1

蘋果知道如何確定:p – JoshJordan 2009-07-16 23:48:34

+2

另請參閱:http://stackoverflow.com/questions/413242/how-do-i-detect-that-an-sdk-app-is-running-on-a -jailbroken-phone – 2009-07-21 03:44:23

+2

如果你對這個問題感興趣,爲什麼不支持Area [51]的[jail-breaking Stack Exchange site]提案(http://area51.stackexchange.com/proposals/18154/ios-jailbreaking-development?referrer = EuWVi6IpN0_KzzEhC7I-Qw2) – rjstelling 2012-01-02 14:19:41

回答

38

Here是檢測您的應用程序是否被破解的方法之一。

總之:破解通常需要更改Info.plist。由於您可以訪問常規文件,因此確定這樣的更改非常容易。

25

檢測越獄手機就像檢查是否存在/private/var/lib/apt/文件夾一樣簡單。雖然這並不檢測安裝程序用戶,但是現在大多數用戶已經安裝了Cydia,Icy或RockYourPhone(所有這些都使用apt)

要檢測盜版用戶,最簡單的方法是檢查是否存在SignerIdentity鍵入您的應用程序的Info.plist。由於高級餅乾可以很容易地找到標準的[[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"]檢查,所以最好使用可通過#import <objc/runtime.h>獲得的Objective C運行庫來掩蓋這些調用,或者使用替代等價物。

10

只是對zakovyrya的答覆擴大,你可以使用下面的代碼:

if ([[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"] != nil) { 
    // Jailbroken 
} 

但是,越獄你的應用程序的人可以hexedit的程序,因此,他們可以編輯字符串@「SignerIdentity」來閱讀@「siNGeridentity」或其他將返回零,從而通過的其他東西。

所以,如果你使用這個(或任何來自http://thwart-ipa-cracks.blogspot.com/2008/11/detection.html其他建議):

  • 不要指望它的工作永遠
  • 不要使用這些信息來打破/阻礙你的應用程序中任何方式(否則他們將有理由hexedit它,所以你的應用程序不會知道它是越獄)
  • 可能明智地混淆了這一點的代碼。例如,您可以將base64編碼的反轉字符串放入您的代碼中,然後通過反轉該過程在應用程序中對其進行解碼。後來
  • 驗證您的驗證在你的代碼(例如,當我說SignerIdentity,做到了實說SignerIdentity或siNGeridentity?)
  • 不要告訴人們一個公共網站就像計算器上你是怎麼做到的
  • 記住它只是一個引導,不是防萬無一失的(也不是防爆的!) - 擁有巨大的權力將會帶來巨大的責任。
5

要擴大yonel的和Benjie的上述評論:

1)Landon Fuller's method依靠加密檢查,通過yonel上面鏈接,似乎是唯一一個還沒有被自動破解工具擊敗。我不會過分擔心Apple很快改變LC_ENCRYPTION_INFO標題的狀態。它似乎有一些不可預知的越獄手機的影響(即使當用戶購買了副本...)

無論如何,我不會採取任何基於該代碼的用戶皮疹行動...

2)補充本傑的評論。混淆(在處理反盜版代碼中的任何字符串值時絕對必要):類似但可能更簡單的方法是始終檢查鹽漬哈希您正在查找的值的版本。例如(即使該檢查不再有效),您將檢查每個MainBundle的密鑰名稱爲md5(keyName +「一些祕密鹽」)與合適的常量......相當基本,但肯定會擊敗任何嘗試定位串。

當然,這要求您能夠間接查詢要比較的值(例如,通過包含它的數組)。但這是最常見的情況。

相關問題