2016年4月

程序跟踪想着代码

// ptrace(PT_DENY_ATTACH, 0, 0, 0);

size_t size = sizeof(struct kinfo_proc);
struct kinfo_proc info;
int ret, name[4];
memset(&info, 1, size);
name[0] = CTL_KERN;
name[1] = KERN_PROC;
name[2] = KERN_PROC_PID;
name[3] = getpid();

ret = sysctl(name, 4, &info, &size, NULL, 0);
NSLog(@"%d, %d, %d", ret, info.kp_proc.p_flag & P_TRACED, info.kp_proc.p_traceflag);

巧用 __attributes__

objc_boxable

OC可能你经常会看到@(100)等用法。不用奇怪,就是这个Function attributes
使用示例:

struct attribute((objc_boxable)) some_struct {
int i;
};
union attribute((objc_boxable)) some_union {
int i;
float f;
};
typedef struct attribute((objc_boxable)) _some_struct some_struct;

some_struct ss;
NSValue *boxed = @(ss);

- 阅读剩余部分 -