有一种方法 是通过task_get_exception_ports 查找异常端口 ,但是找了一遍 都没看到有实现的源码
之前逆lazada的反调试,用了这玩意,看起来像是配合task_set_exception_ports自己实现了一个小调试器,自己调试自己,不让别人attach
是的 某些app 也会用到task_set_exception_ports 具体如何实现 确实不知道
它那块代码没混淆,记得当时反编译一下挺清楚的,源码奉上。这东西用的人确实少
我找来看看[quote=“lkttle, post:4, topic:24090, full:true, username:gfbdg”]
它那块代码没混淆,记得当时反编译一下挺清楚的,源码奉上。这东西用的人确实少
[/quote]
谢谢
#pragma mark - task_get_exception_ports
void anti_debug_exception_port(void) {
struct ios_execp_info {
exception_mask_t masks[EXC_TYPES_COUNT];
mach_port_t ports[EXC_TYPES_COUNT];
exception_behavior_t behaviors[EXC_TYPES_COUNT];
thread_state_flavor_t flavors[EXC_TYPES_COUNT];
mach_msg_type_number_t count;
};
struct ios_execp_info *info = malloc(sizeof(struct ios_execp_info));
__unused kern_return_t kr = task_get_exception_ports(mach_task_self(), EXC_MASK_ALL, info->masks, &info->count, info->ports, info->behaviors, info->flavors);
for (int i=0; i<info->count; i++) {
if (info->ports[i] != 0 || info->flavors[i] == THREAD_STATE_NONE) {
NSLog(@"being debugged");
exit(1);
}
}
free(info);
}
1 个赞