Прежде всего, ptrace () не является частью общедоступного API на iOS.В соответствии с политикой публикации AppStore использование закрытых API запрещено, и их использование может привести к отклонению приложения из AppStore, поэтому нам нужно вызывать его через указатель на функцию с помощью dlsym.
Полный код:
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import <dlfcn.h>
#import <sys/types.h>
typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);
void anti_debug() {
ptrace_ptr_t ptrace_ptr = (ptrace_ptr_t)dlsym(RTLD_SELF, "ptrace");
ptrace_ptr(31, 0, 0, 0); // PTRACE_DENY_ATTACH = 31
}
int main(int argc, char * argv[]) {
#ifndef DEBUG
anti_debug();
#endif
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
Затем вы можете изменить целевую конфигурацию сборки на Release и проверить, не отключен ли Xcode.Надеюсь, это поможет!