2011-08-12 37 views
8

Tôi đã tryign triển khai mã vi phạm bản quyền chống sau đây từ wiki này: http://theiphonewiki.com/wiki/index.php?title=Bugging_DebuggersTriển khai mã PT_DENY_ATTACH chống vi phạm bản quyền

Nhưng dù sau nó vào thư thoát khỏi ứng dụng của tôi với một

Program exited with status value:45. 

Khi tôi kiểm tra nó. Nếu tôi bình luận ra lệnh gọi hàm disable_gdb(); ứng dụng chạy như bình thường.

Tôi đang làm gì sai. Hoặc là nó mã đang làm như nó nên .. và thoát trong khi xcode được đính kèm?

#import <UIKit/UIKit.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) 

int main(int argc, char *argv[]) 
{ 
NSLog(@"Main Called "); 
disable_gdb(); 
NSLog(@"After cracker code"); 
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
int retVal = UIApplicationMain(argc, argv, nil, nil); 
[pool release]; 
return retVal; 
} 



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 main3(int argc, char *argv[]) 
{ 
return -1; 
} 

tử tế nhất mà Kính trọng, -Code

Trả lời

15

Mã này được vận hành như dự định. Điều đó nói rằng, tôi nên nói với bạn rằng bạn đang lãng phí thời gian của bạn. Cách tiếp cận này sẽ chỉ hoạt động nếu gdb và kẻ tấn công/lập trình viên hợp tác. Toàn bộ các công cụ như gdb là chúng là cực kỳ linh hoạt và nếu một "lỗi" đơn giản như thế này đã chặn chúng chết trong các tuyến đường của chúng, ai đó sẽ sửa chữa nó rất nhanh. :)

Như đã trình bày trên this trang, bạn chỉ có thể làm như sau từ bên trong gdb:

(gdb) break ptrace 
commands 1 
    return 
    continue 
end 
+7

Vì vậy, câu trả lời là không có điểm trong cố gắng để ngăn chặn một debugger từ gỡ lỗi ứng dụng của bạn? – Chicowitz

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