2009-05-10 74 views
62

Phương pháp được chấp nhận để giảm vi phạm bản quyền ứng dụng iPhone, không vi phạm quy trình đánh giá của Apple là gì?Giảm vi phạm bản quyền của các ứng dụng iPhone

Nếu ứng dụng của tôi "điện thoại nhà" cung cấp ID thiết bị duy nhất chạy trên đó, tôi cần thu thập thông tin nào khác (ví dụ: ID Apple được sử dụng để mua ứng dụng) để tạo mã thông báo đăng ký hợp lệ cho phép sử dụng ứng dụng? Tương tự như vậy, tôi sẽ sử dụng mã nào để truy cập dữ liệu bổ sung đó?

Điều gì dường như là phương pháp tiếp cận kỹ thuật có sẵn tốt nhất cho vấn đề này, tại thời điểm hiện tại?

(Xin vui lòng tránh phi lập trình trả lời về cách vi phạm bản quyền là không thể tránh khỏi, vv Tôi biết vi phạm bản quyền là không thể tránh khỏi. Tôi quan tâm đến câu trả lời lập trình dựa trên rằng thảo luận làm thế nào để giảm bớt nó. Cảm ơn trước cho hiểu biết của bạn.)

+36

Tôi yêu các câu hỏi chỉ định trước câu trả lời họ muốn nghe. Đó là cách bạn nhận được câu trả lời tốt nhất. ;) – jalf

+2

Chỉ cố gắng cắt đứt các đường mòn triết học lúc bắt đầu. Câu trả lời kỹ thuật rõ ràng là thích hợp hơn. –

+0

@Alex nó dễ dàng hơn để tránh "bạn không thể làm điều đó" câu trả lời nếu bạn không sử dụng thuật ngữ như "thất bại" thay vì "giảm thiểu" –

Trả lời

48

CẬP NHẬT

Hãy visit and read

Nhờ chpwn trong các ý kiến.

Mã quá cũ! - 11 tháng 5 năm 2009

Hiện tại, có một cách dễ dàng hơn để phát hiện xem ứng dụng iPhone của bạn đã bị bẻ khóa để sử dụng vi phạm bản quyền chưa. Điều này không liên quan đến bạn để kiểm tra ID duy nhất của iPhone so với danh sách ID được chấp nhận.

Hiện nay có ba thứ bánh làm:

  1. Chỉnh sửa file Info.plist
  2. Giải mã Info.plist từ nhị phân để UTF-8 hoặc ASCII
  3. Thêm một cặp khóa để Info.plist {SignerIdentity, Apple Application OS Signing}

Cách cuối cùng là dễ nhất để kiểm tra mã này:

NSBundle *bundle = [NSBundle mainBundle]; 
NSDictionary *info = [bundle infoDictionary]; 
if ([info objectForKey: @"SignerIdentity"] != nil) 
{ /* do something */ } 

Nói chung, chúng tôi không có SignerIdentity trong bất kỳ ứng dụng App Store nào mà chúng tôi xây dựng để kiểm tra nil, sau đó thực hiện hướng dẫn thiết lập sẽ khiến bánh quy và cướp biển trở nên khó khăn hơn.

Tôi không thể nhận tín dụng cho điều này vì vậy hãy truy cập How to Thwart iPhone IPA Crackers. Có vô số thông tin về vi phạm bản quyền trên iPhone và cách hạn chế vi phạm bản quyền.

+0

Cảm ơn bạn đã trả lời câu hỏi mà tôi đã hỏi. –

+3

@David Câu hỏi nhanh mà không ai có thể có câu trả lời cho: Nếu đây là một sửa chữa dễ dàng (có khả năng 5 dòng), tại sao nó không được triển khai thường xuyên hơn? Có một nhược điểm mà bạn biết không? Phần lớn ứng dụng VAST trên cửa hàng ứng dụng đã bị bẻ khóa và có sẵn để tải xuống. – mmc

+7

Rất dễ dàng cho trình bẻ khóa để kiểm tra chuỗi ký tự bằng chữ SignerIdentity, hoặc cho cuộc gọi chọn từ điển infoDictionary. Bạn có thể muốn che khuất chúng. Phần “làm điều gì đó” cũng phức tạp: bạn không thể thất bại ngay lập tức, vì điều này sẽ báo động cho cracker.Vì vậy, bạn cần phải thất bại với một sự chậm trễ lớn (có thể cung cấp cho họ một thử nghiệm 30 ngày, và sau đó yêu cầu mua một bản sao hợp pháp). Hãy xem, làm cho điều này hữu ích không đơn giản nữa. –

5

Như được chỉ ra bởi Andrey Tarantsov trong các ý kiến, tìm kiếm chuỗi "SignerIdentity" trong nhị phân (sử dụng một ứng dụng như HexEdit) và thay thế nó là khá dễ dàng.

Bạn có thể mã hóa chuỗi đó, nhưng sau đó tất cả những gì bạn phải làm là thay đổi một char và ứng dụng sẽ không tìm khóa "SignerIdentity" nữa nhưng đối với một số khóa khác có thể không tồn tại (do đó là null). Chìa khóa đó là null, ứng dụng cho rằng nó không bị nứt (vì SignerIdentity phải là null nếu ứng dụng không bị nứt).

Thay vào đó, tôi muốn kiểm tra kích thước của info.plist và so sánh nó với giá trị tham chiếu.Tôi nhận thấy các bản dựng Trình mô phỏng và thiết bị không có cùng kích thước tệp info.plist. Cũng tương tự cho các bản dựng Debug, Release và Distribution. Do đó, hãy đảm bảo bạn đặt giá trị tham chiếu bằng cách sử dụng kích thước tệp info.plist cho Bản phân phối thiết bị.

Làm thế nào để tìm kiếm các filesize at launch:

-1

Kiểm tra iTunesMetadata.plist cho ngày nơi bạn mua như đôi khi, khi một ứng dụng được nứt, ngày đó được thay đổi thành một cái gì đó thái quá.

Đồng thời kiểm tra xem trường tên người mua có tồn tại hay không. Theo kinh nghiệm của tôi với các ứng dụng bẻ khóa để sử dụng cá nhân, thường bị xóa. Nếu bất cứ ai biết cách bảo vệ chống phá hủy của Temple Run hoạt động, bạn có thể sử dụng kết hợp với một số bảo vệ mà poackCrod không thể nhận được (google poedCrackMod tạo tài khoản hackulo.us, đi tới trung tâm dev tìm poedCrackMod, cài đặt nó trên iDevice) .

Ly hợp sẽ không làm hỏng mọi thứ với Temple Run như bảo vệ, có một tính năng gọi là OverDrive nhằm tắt tiếng phát hiện vết nứt của ứng dụng. poedCrackMod có LamestPatch, mà không phải là tốt. Ngoài ra poedCrackMod là một mã bash mã nguồn mở có thể được thiết kế ngược. Tóm lại, bạn có một ứng dụng có bảo vệ bản sao mà không thể bị phá vỡ bằng ly hợp/overdrive nhưng có thể bị bẻ khóa với poedCrackMod. Tuy nhiên poedCrackMod không thể phá vỡ các ứng dụng trong kiểm tra vi phạm bản quyền ứng dụng. Thật khó để tự vá các kiểm tra tích hợp trong tệp thực thi của ứng dụng. Vì vậy, ứng dụng của bạn khó crack.

0

Dường như lưu MD5 checksum của Plist và kiểm tra CryptID sẽ hoạt động tốt cho đến một thời gian.

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