Tôi đang cố gắng gọi một hàm trên ptrace
như thế này ptrace(PT_DENY_ATTACH, 0, 0, 0);
Nhưng khi tôi cố gắng nhập nó bằng cách sử dụng #include <sys/ptrace.h>
Xcode cho tôi một lỗi 'sys/ptrace.h' file not found
. Tôi có thiếu cái gì không, tôi có cần phải nhập một thư viện hoặc điều này chỉ đơn giản là không có trên iOS?ptrace trên iOS 8
Trả lời
Điều này dường như đang hoạt động đối với tôi và sẽ ngăn việc đính kèm trình gỡ rối. Tôi chưa thử nghiệm #ifdef OPTIMIZE nếu nó hoạt động trong phân phối, vì vậy hãy cho tôi biết nếu bạn tìm thấy bất kỳ sự cố nào.
//#include <sys/ptrace.h>
#import <dlfcn.h>
#import <sys/types.h>
typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);
#if !defined(PT_DENY_ATTACH)
#define PT_DENY_ATTACH 31
#endif // !defined(PT_DENY_ATTACH)
void disable_gdb() {
void* handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);
ptrace_ptr_t ptrace_ptr = dlsym(handle, "ptrace");
ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0);
dlclose(handle);
}
int main(int argc, char *argv[]) {
//#ifndef DEBUG => use the following instead.
#ifdef __OPTIMIZE__
//ptrace(PT_DENY_ATTACH, 0, 0, 0);
disable_gdb();
#endif
Mã biên dịch, nhưng nó vẫn không hoạt động như mong đợi (từ chối phần đính kèm của trình gỡ lỗi). Tôi đã tạo một ứng dụng thử nghiệm iOS một lần xem và chỉ sửa đổi tệp main.m. Nếu tôi không hoàn toàn nhầm lẫn, Xcode (hoặc bất kỳ trình sửa lỗi) nào không thể đính kèm vào nó. Trong trường hợp của Xcode, nó thậm chí không nên khởi động. Nhưng ứng dụng chạy tốt ... Để kiểm tra kỹ hơn, tôi đã đặt một phương thức disable trong NSLog bên trong disable_gdb và nó chưa bao giờ được in. Có điều gì tôi cần làm để làm cho #ifndef DEBUG hoạt động không? – imas145
Có, tôi tự đặt DEBUG vào dự án của tôi dưới dạng định nghĩa biên dịch sẵn cho các bản dựng DEBUG. Có các cách mới hơn khác (usinf DEBUG_BUILD = 1) hoặc __OPTIMIZE__, nhưng tôi là mã cũ hơn. –
Vấn đề ở đây là Xcode được thêm vào trước đường đi của nó cơ bản SDK cho tất cả các đường dẫn hệ thống tiêu đề (ví dụ, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9. 0.sdk/usr/include /). Thật không may, ptrace.h không có nhưng được tìm thấy trong/usr/include/sys /. Vì vậy, để giải quyết việc này, bạn cần phải thay đổi bao gồm bạn tuyên bố là:
#include </usr/include/sys/ptrace.h>
Tôi không có ý tưởng tại sao ptrace.h không được bao gồm trong SDK nhưng các chức năng bạn đang tìm kiếm làm việc khi nó đang chạy trên điện thoại.
Cập nhật: Trong khi điều này không cho phép bạn sử dụng chức năng ptrace, tải lên Apple sẽ dẫn đến ứng dụng từ chối do:
Non-public API usage:
The app references non-public symbols in <app name>: _ptrace
- 1. Lỗi 8 UIImagePickerController trên iOS
- 2. EXC_BAD_ACCESS chỉ trên xcode 8 chạy iOS 8
- 3. MPVolumeView hình ảnh động trên iOS 8
- 4. Hiển thị NSMutableAttributedString trên iOS 8
- 5. ptrace và chủ đề
- 6. iOS Code Hoạt động trên iOS 9 chứ không phải trên iOS 8?
- 7. gọi ptrace bên trong một quá trình trên Linux ptraced
- 8. Làm thế nào để chơi với ptrace trên x86-64?
- 9. (ORIG_EAX * 4) trong ptrace gọi
- 10. iOS 8 NSInternalInconsistencyException
- 11. Sự khác biệt giữa ptrace (PTRACE_PEEKUSER) và ptrace (PTRACE_PEEKDATA) là gì?
- 12. ios 8 hộp bóng trên iPhone 6 Plus
- 13. Không thể chọn liên hệ trên iOS 8
- 14. UISearchBar trong UITableViewHình ảnh động lạ trên iOS 7/8
- 15. Chia sẻ video lên Facebook trên iOS 8
- 16. Khả năng hiển thị trên iOS 8 bị trì hoãn?
- 17. editActionsForRowAtIndexPath không thực thi trên iOS 8 với Xcode 7
- 18. Chia sẻ NSURLCache và UIWebView trên iOS 8
- 19. vụ tai nạn bí ẩn trên iOS 8
- 20. SKStoreProductViewController không làm việc trên iPad iOS 8
- 21. Thay đổi kích thước UIModalPresentationFormSheet trên iOS 8
- 22. NSURLConnectionDelegate willSendRequestForAuthenticationChallenge sẽ không được gọi trên iOS 8
- 23. Nhận số sê-ri thiết bị trên iOS 8
- 24. Nhận kích thước màn hình trên iOS 8
- 25. thỉnh thoảng thiếu PTRACE_EVENT_VFORK khi chạy ptrace
- 26. Chiều cao của UITabBar trên iOS 8, iOS 9, iOS 10 và iOS 11 là bao nhiêu?
- 27. Nhận UDID trong iOS 8 +
- 28. iOS 8 youtube video embed
- 29. Ứng dụng chạy tốt trong iOS 8, nhưng không chạy trên iOS 7
- 30. Cảnh báo có thể hoạt động trên iOS 7 và iOS 8
Tôi cũng phải đối mặt với problem.Did cùng bạn tìm ra giải pháp? – SandeepAggarwal
Không có gì, thật không may. – imas145