Mac OS X进程隐藏后 关机卡住问题

来源:互联网 发布:毕业后悔做程序员2016 编辑:程序博客网 时间:2024/05/17 02:58

实现进程隐藏后,关机的时候,有一定概率会出现卡住死机,关不了现象(灰苹果,菊花转~~)


原因应该是 系统进程表被改掉了,关机的时候你的进程关不掉? 具体不清楚,但是有解决方案了:


在你的agents/daemons 进程中,截获: SIGTERM 和 SIGKILL这两个信号, 关机或者重启的时候,系统会给每个进程发送该信号的样子

signal(SIGTERM, &catch_term);signal(SIGKILL, &sig_kill);

catch_term
sig_kill
这两个函数是回调,接受信号的时候触发~


然后你可以把该程序的pid值 发送到内核kext中,进行进程隐藏恢复

<pre name="code" class="objc">uint showPid = getpid();sysctlbyname(SYSCTL_DEBUG_SHOW_NUM, NULL, 0, &showPid, 4);



kext中部分代码:

sysctl_register_oid(&sysctl__debug_show_num); //init中代码

int sysctl_ired_show_pid_numSYSCTL_HANDLER_ARGS;SYSCTL_PROC(_debug,OID_AUTO, show_num, (CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_ANYBODY), &G_SHOW_PID_NUM, 0, sysctl_ired_show_pid_num, "IU", "");

// 进程隐藏恢复int sysctl_ired_show_pid_num SYSCTL_HANDLER_ARGS{int error =  sysctl_handle_int(oidp, oidp->oid_arg1, oidp->oid_arg2, req);if (error == 0){        IOLog("\n开始恢复进程隐藏\n");        IOThread myThread;          // 这个什么时候dealloc?        kernel_thread_start(start_show_proc, NULL, &myThread);    }return error;}


0 0
原创粉丝点击