本文主要是介绍《iOS防护03》sysctl防护,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
可以使用系统函数 sysctl 来检测进程的状态。
int sysctl(int *, u_int, void *, size_t *, void *, size_t);
ViewController.m
#import "ViewController.h"
#import <sys/sysctl.h>@interface ViewController ()@end@implementation ViewController// int sysctl(int *, u_int, void *, size_t *, void *, size_t);
// #define P_TRACED 0x00000800 /* Debugged process being traced *///判断是否是调试状态
BOOL isDebugger() {int name[4]; //里面放字节码,查询的信息name[0] = CTL_KERN; //内核查询name[1] = KERN_PROC; //查询进程name[2] = KERN_PROC_PID; //传递的参数是进程的idname[3] = getpid(); //获取当前进程idstruct kinfo_proc info; //接收查询结果的结构体size_t info_size = sizeof(info);int error = sysctl(name, 4, &info, &info_size, 0, 0);if (error) {NSLog(@"查询失败");return NO;
这篇关于《iOS防护03》sysctl防护的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!