2014-04-10 21 views
5

Tôi giả mạo trong iOS, đặc biệt là trong API riêng tư.Làm cách nào để tải tiêu đề API riêng được tạo mới trong iOS?

Tôi có đơn đăng ký thử nghiệm và giờ tôi cần sử dụng API riêng tư (ứng dụng này không dành cho App Store).

Tôi đã tải xuống tiêu đề đã tạo từ iOS-Runtime-Headers và điều gì tiếp theo?

Dưới /System/Library/ Tôi có danh sách các thư viện có chứa Frameworks, ..., PrivateFrameworks.

Tôi có cần thay thế khung ban đầu bằng khung tôi đã sao chép từ iOS-Runtime-Headers không?

Vì tôi có các ứng dụng khác chỉ sử dụng Public API và tôi không muốn làm hỏng chúng.

Từ liên kết gửi họ nói để xác nhận thư viện ví dụ bằng cách:

NSBundle *b = [NSBundle 
     bundleWithPath:@"/System/Library/PrivateFrameworks/GAIA.framework"]; 
BOOL success = [b load]; 

Nhưng ở đây các điểm đường dẫn đến đường dẫn gốc.

Hoặc tôi nhớ một cái gì đó,

Cảm ơn bạn

Trả lời

6

Trước hết, không thay thế bất kỳ tiêu đề nào do Apple cung cấp.

Nói chung, nó được thực hiện một trong hai cách:

1) Bạn có thể sao chép một số các tiêu đề để dự án của bạn và chỉ bao gồm những tập tin theo cùng một cách như bạn bao gồm bất kỳ tiêu đề khác

#import "SomeHeader.h" 

2) Đôi khi bạn phải khử trùng chúng (chỉnh sửa) một chút. Khá thường xuyên, các tiêu đề này có nội dung giống như trong chúng:

#import "NSObject.h" 

Và trình compliller sẽ không thể tìm thấy nó, vì NSObject là lớp được tích hợp sẵn. Vì vậy, bạn cần phải loại bỏ như thế này.

3) Nếu bạn chỉ cần vài phương pháp trong số đó, thì giải pháp Tuukka Nori là đúng.

Trên hết, bạn sẽ cần phải liên kết (tĩnh hoặc động) với khung riêng tư phù hợp (chỉ bao gồm tiêu đề không đủ).

+0

Nói chung, tôi muốn làm cho thiết bị chuyển sang chế độ ngủ bằng cách sử dụng API riêng tư.Tôi biết rằng nó không đề cập đến câu hỏi của tôi nhưng tôi đã thấy câu trả lời của bạn trong hầu hết các câu hỏi liên quan đến API riêng tư. Bạn có ý tưởng nơi để tìm tiêu đề thích hợp? Bởi vì hầu hết các câu trả lời hôm nay không liên quan (tôi sử dụng 6.1). Cảm ơn bạn anyways – snaggs

+0

@fessy: Tôi đã không thể tìm thấy một giải pháp hoạt động hoàn toàn trên ios 6.x. Tất cả các màn hình DimScreen và BlankScreen này chỉ có một phần màn hình mờ (không hoàn toàn tắt màn hình). Vì vậy, tôi không chắc chắn. Bạn có thể thử đảo ngược kỹ sư Springboard và tìm kiếm trong đó. Tuy nhiên, nó có thể được bảo vệ bởi một số quyền lợi. –

4

Đừng thay thế bất kỳ tập tin. Thay vào đó, hãy viết một tệp tiêu đề có biểu tượng mà bạn định sử dụng. Nếu bạn cần phương pháp Mục tiêu-C, hãy thêm danh mục có tên duy nhất, ví dụ:

@interface NSString (MyOwnPrivateCategory) 
- (void) privateMethodDeclaredInRuntimeHeaders; 
@end 

Nhập và sử dụng phương thức theo ý muốn.

Mã mẫu được cung cấp cho biết cách tải khung trong thời gian chạy trong trường hợp bạn không muốn liên kết đến khung đó. Vì một số khung là riêng tư, chúng có thể không có sẵn trong tất cả các phiên bản iOS.

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