2011-01-18 28 views
12

Tôi đang xây dựng dịch vụ danh sách đen cho các ứng dụng iPhone bị nứt và tôi tò mò nếu tôi bỏ lỡ phương pháp phát hiện ứng dụng bị nứt.Cách phát hiện ứng dụng iPhone bị nứt và thiết bị bẻ khóa (các phương pháp khác nhau)

Trong thời điểm hiện tại sau phương pháp phát hiện ứng dụng vết nứt có sẵn cho các dịch vụ:

  1. kiểm tra kích thước plist
  2. kiểm tra danh tính người ký
  3. kiểm tra nếu nhị phân là crypted (không chắc chắn nếu điều này hoạt động chính xác vì không có ứng dụng bị nứt nào được phát hiện theo cách này)
  4. kiểm tra ngày sửa đổi của info.plist chống lại ngày sửa đổi của gói (không chắc chắn nếu điều này đang làm việc - sử dụng mã như: http://snippie.net/snip/f7530ff2 để làm điều đó)

Tôi cũng tự hỏi, nếu chúng ta có thể kiểm tra xem thiết bị là jailbroken ? Điều này cũng sẽ giúp ích bởi vì dịch vụ sẽ hoạt động giống như danh sách đen spam và jailbreak có thể được sử dụng để tăng điểm số.

Tôi cũng đã bao gồm một honeypot, trong đó cho tôi thấy rằng các công cụ được sử dụng bởi các bánh quy loại bỏ một số kiểm tra tôi làm. Ví dụ, kiểm tra plist cho kích thước hoặc nhận dạng người ký.

Câu hỏi của tôi bây giờ là:

  • Có kiểm tra nhiều hơn "tốt" tôi nên sử dụng?

  • Có cách nào để phát hiện Jailbreak?

Cảm ơn bạn đã được trợ giúp!

+2

Nhiều kỹ thuật được thảo luận trong câu hỏi này để phát hiện các ứng dụng bẻ khóa: [Giảm vi phạm bản quyền của các ứng dụng iPhone] (http://stackoverflow.com/questions/846309/ giảm vi phạm bản quyền-of-iphone-ứng dụng). Khi nói đến phát hiện jailbreak, hãy xem tại đây: [Làm cách nào để phát hiện thấy một ứng dụng SDK đang chạy trên một điện thoại đã được bẻ khóa?] (Http: // stackoverflow.com/questions/413242/how-do-i-detect-that-an-sdk-app-đang-chạy-trên-một-bẻ khóa-điện thoại) –

+0

Cảm ơn bạn Brad, đây là những tài nguyên tốt. – Robse

Trả lời

18

KHÔNG BAO GIỜ thử và chặn các thiết bị đã bẻ khóa bằng cách sử dụng ứng dụng của bạn, chỉ cần bẻ khóa các ứng dụng đó. Nếu bạn chặn các thiết bị bẻ khóa, chúng sẽ buộc phải sử dụng phiên bản được vá với tất cả các kiểm tra đã bị xóa.
Ngoài ra TẤT CẢ các thiết bị của tôi bị bẻ khóa vì vậy nếu nhà phát triển chặn các thiết bị đã bị bẻ khóa, tôi sẽ phải bỏ qua các ứng dụng của họ. Hơn 10% tất cả các iDevices đều bị bẻ khóa vì vậy đây là một ý tưởng rất tồi.

EDIT: Khi tôi nhận được nhiều phiếu bầu cho điều này, tôi sẽ đăng một số phương pháp để phát hiện một bẻ khóa.

- (BOOL)fileExistsAtPath:(NSString *)path{ 
    NSLog(@"Check if file '%@' exists", path); 

    struct stat buffer; 
    return stat([path UTF8String], &buffer) == 0; 
} 

- (BOOL)jailbroken{ 
    return ([self fileExistsAtPath:@"/Applications/Cydia.app"]); 
} 
+3

Hoặc họ sẽ bị buộc phải xóa bẻ khóa, tắt mạng và ngừng sử dụng ứng dụng từ App Store. 9% trong số 10% này đã bị bẻ khóa vì vi phạm bản quyền ... – Robse

+6

Tôi không hiểu những người đó bỏ phiếu cho bạn. Bản thân tôi, tôi đã jailbroke để kiểm tra ứng dụng của tôi để bảo vệ vi phạm bản quyền. Liệu những kẻ bỏ phiếu xuống có gửi tôi đến Guantanamo ngay bây giờ không? –

+6

Tôi biết rất nhiều người đã Jailbreak chỉ để thêm các chỉnh sửa và ứng dụng cụ thể không được phép trong App Store. Những người này vẫn chọn mua ứng dụng từ App Store. – MattyG

7
-(IBAction)rootCheck:(id)sender { 

    NSArray *jailbrokenPath = [NSArray arrayWithObjects: 
           @"/Applications/Cydia.app", 
           @"/Applications/RockApp.app", 
           @"/Applications/Icy.app", 
           @"/usr/sbin/sshd", 
           @"/usr/bin/sshd", 
           @"/usr/libexec/sftp-server", 
           @"/Applications/WinterBoard.app", 
           @"/Applications/SBSettings.app", 
           @"/Applications/MxTube.app", 
           @"/Applications/IntelliScreen.app", 
           @"/Library/MobileSubstrate/DynamicLibraries/Veency.plist", 
           @"/Applications/FakeCarrier.app", 
           @"/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist", 
           @"/private/var/lib/apt", 
           @"/Applications/blackra1n.app", 
           @"/private/var/stash", 
           @"/private/var/mobile/Library/SBSettings/Themes", 
           @"/System/Library/LaunchDaemons/com.ikey.bbot.plist", 
           @"/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist", 
           @"/private/var/tmp/cydia.log", 
           @"/private/var/lib/cydia", nil]; 

    NSString *rooted; 
    for(NSString *string in jailbrokenPath) 
     if ([[NSFileManager defaultManager] fileExistsAtPath:string]) 
      [email protected]"y"; 
     else 
      [email protected]"n"; 

    NSLog(@"%@", rooted); 
} 

mẫu mã: http://www.evernote.com/shard/s13/sh/e45f27ee-3dd5-4eb1-9f56-1981cdd3286b/bc156eb773315647c13c2c7ee4191866

+2

Tốt. Nhưng wow phải là mã cũ! RockApp đã được mua bởi cydia hơn một năm trước đây và băng giá đã bị hủy bỏ lâu hơn (+ blackra1n là jailbreak cho 3.1). –

+1

Ngoài ra, khi 'rooted' được in ra, bạn sẽ chỉ thấy kết quả của tệp [[NSFileManager defaultManager ]ExistsAtPath: @"/private/var/lib/cydia "]? @ "y": @ "n"; ', tức là phần tử cuối cùng trong mảng. Tất cả các kết quả khác đều bị bỏ qua/ghi đè/loại bỏ bởi mã này. – Sam

Các vấn đề liên quan