เดนเดฒเต, เดนเดฌเตเตผ! MacOS-เดฒเต เดเดเตเดฐเดฎเดฃเดเดพเดฐเดฟเดเดณเตเดเต เดเดเตเดฐเดฎเดฃเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดฐเดเตเดฐเดฟเดฏเดเดณเต เดเดเตเดเดจเต เดธเดเดฐเดเตเดทเดฟเดเตเดเดพเด เดเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดจเตเดจเต เดธเดเดธเดพเดฐเดฟเดเตเดเดพเตป เดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดคเต เดเดฐเต เดเดจเตเดฑเดฟเดตเตเดฑเดธเดฟเดจเต เดฌเดพเดเตเดเดชเตเดชเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเต เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดฃเต, เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเตเด MacOS-เดจเต เดเตเดดเดฟเตฝ เดเดฐเต เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเต "เดเตเดฒเตเดฒเดพเตป" เดจเดฟเดฐเดตเดงเดฟ เดฎเดพเตผเดเดเตเดเดณเตเดฃเตเดเต. เดเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเด เดเดเตเดเดฟเดจเต เดเตเดดเดฟเดฒเตเดณเตเดณ เดธเดเดฐเดเตเดทเดฃ เดฐเตเดคเดฟเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเตเด เดตเดพเดฏเดฟเดเตเดเตเด.
เดเดฐเต เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเต "เดเตเดฒเตเดฒเดพเดจเตเดณเตเดณ" เดเตเดฒเดพเดธเดฟเดเต เดฎเดพเตผเดเด
เดเดฐเต เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเต "เดเตเดฒเตเดฒเดพเตป" เด เดฑเดฟเดฏเดชเตเดชเตเดเตเดจเตเดจ เดเดฐเต เดฎเดพเตผเดเตเดเด, เดชเตเดฐเตเดธเดธเตเดธเดฟเดฒเตเดเตเดเต เดเดฐเต SIGKILL เดธเดฟเดเตเดจเตฝ เด เดฏเดฏเตเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต. เดฌเดพเดทเดฟเดฒเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดฒเตเดฒเดพเตป เดธเตเดฑเตเดฑเดพเตปเดกเตเตผเดกเต โkill -SIGKILL PIDโ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ โpkill -9 NAMEโ เดเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเดพเด. "เดเดฟเตฝ" เดเดฎเดพเตปเดกเต UNIX-เดจเตเดฑเต เดเดพเดฒเด เดฎเตเดคเตฝ เด เดฑเดฟเดฏเดชเตเดชเตเดเตเดจเตเดจเต, เดเดคเต macOS-เตฝ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดฎเดฑเตเดฑเต UNIX-เดชเตเดฒเตเดณเตเดณ เดธเดฟเดธเตเดฑเตเดฑเดเตเดเดณเดฟเดฒเตเด เดฒเดญเตเดฏเดฎเดพเดฃเต.
เดฏเตเดฃเดฟเดเตโเดธเต เดชเตเดฒเตเดณเตเดณ เดธเดฟเดธเตเดฑเตเดฑเดเตเดเดณเดฟเดฒเตเดจเตเดจเดชเตเดฒเต, เดธเดฟเดเตโเดเดฟเตฝ, เดธเดฟเดเตโเดธเตเดฑเตเดฑเตเดชเตเดชเต เดเดจเตเดจเดฟเดต เดเดดเดฟเดเตเดฏเตเดณเตเดณ เดเดฐเต เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเดฟเดฒเตเดเตเดเตเดณเตเดณ เดธเดฟเดเตเดจเดฒเตเดเดณเต เดคเดเดธเตเดธเดชเตเดชเตเดเตเดคเตเดคเดพเตป macOS เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เด เดฒเตเดเดจเด เดชเตเดฐเดพเดฅเดฎเดฟเดเดฎเดพเดฏเดฟ SIGKILL เดธเดฟเดเตเดจเดฒเดฟเตฝ เดถเตเดฐเดฆเตเดง เดเตเดจเตเดฆเตเดฐเตเดเดฐเดฟเดเตเดเตเด, เด เดคเต เดเดฐเต เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเต เดจเดถเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดพเดฐเดฃเดฎเดพเดเตเดจเตเดจเต.
macOS เดชเตเดฐเดคเตเดฏเตเดเดคเดเตพ
MacOS-เตฝ, XNU เดเตเตผเดฃเดฒเดฟเดฒเต เดเดฟเตฝ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ psignal(SIGKILL,...) เดซเดเดเตโเดทเดจเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต. เดเดชเดฏเตเดเตเดคเตเดธเตโเดชเตเดธเดฟเดฒเต เดฎเดฑเตเดฑเต เดเดชเดฏเตเดเตเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเต เดธเดฟเดเตเดจเตฝ เดซเดเดเตโเดทเตป เดเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเดพเดฎเตเดจเตเดจเต เดจเตเดเตเดเดพเด. เดเตเตผเดฃเดฒเดฟเดจเตเดฑเต เดเดจเตเดคเดฐเดฟเด เดฎเตเดเตเดเดพเดจเดฟเดธเดเตเดเดณเดฟเดฒเต เดธเดฟเดเตเดจเตฝ เดซเดเดเตโเดทเดจเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเตเดณเตเดเตพ เดจเดฎเตเดเตเดเต เดเดดเดฟเดตเดพเดเตเดเดพเด (เด เดต เดจเดฟเดธเตเดธเดพเดฐเดฎเดฒเตเดฒเตเดเตเดเดฟเดฒเตเด, เดเดเตเดเตพ เด เดตเดฏเต เดฎเดฑเตเดฑเตเดฐเต เดฒเตเดเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดตเดฟเดเตเด ๐ - เดเดชเตเดชเต เดชเดฐเดฟเดถเตเดงเดจ, เดฎเตเดฎเตเดฎเดฑเดฟ เดชเดฟเดถเดเตเดเตพ, เดเดเตโเดธเดฟเดฑเตเดฑเต/เดเตเตผเดฎเดฟเดจเตเดฑเตเดฑเต เดนเดพเตปเดกเตโเดฒเดฟเดเดเต, เดซเดฏเตฝ เดธเดเดฐเดเตเดทเดฃ เดฒเดเดเดจเดเตเดเตพ เดฎเตเดคเดฒเดพเดฏเดต. .
เดชเตเดฐเดตเตผเดคเตเดคเดจเดตเตเด เด
เดจเตเดฌเดจเตเดง เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเด เดเดชเดฏเตเดเดฟเดเตเดเต เด
เดตเดฒเตเดเดจเด เดเดฐเดเดญเดฟเดเตเดเดพเด
static int
terminate_with_payload_internal(struct proc *cur_proc, int target_pid, uint32_t reason_namespace,
uint64_t reason_code, user_addr_t payload, uint32_t payload_size,
user_addr_t reason_string, uint64_t reason_flags)
{
...
target_proc = proc_find(target_pid);
...
if (!cansignal(cur_proc, cur_cred, target_proc, SIGKILL)) {
proc_rele(target_proc);
return EPERM;
}
...
if (target_pid == cur_proc->p_pid) {
/*
* psignal_thread_with_reason() will pend a SIGKILL on the specified thread or
* return if the thread and/or task are already terminating. Either way, the
* current thread won't return to userspace.
*/
psignal_thread_with_reason(target_proc, current_thread(), SIGKILL, signal_reason);
} else {
psignal_with_reason(target_proc, SIGKILL, signal_reason);
}
...
}
เดตเดฟเดเตเดทเตเดชเดฟเดเตเดเต
เดธเดฟเดธเตเดฑเตเดฑเด เดธเตเดฑเตเดฑเดพเตผเดเตเดเดชเตเดชเดฟเตฝ เดกเตเดฎเดฃเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เด เดตเดฏเตเดเต เดเดฏเตเดธเตเดธเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดธเตเดฑเตเดฑเดพเตปเดกเตเตผเดกเต เดฎเดพเตผเดเด เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเต. MacOS 10.10 เดตเดฐเตเดฏเตเดณเตเดณ launchctl-เดจเตเดฑเต เดชเดดเดฏ เดชเดคเดฟเดชเตเดชเดฟเดจเดพเดฃเต เดเดฑเดตเดฟเดเดเตเดเตพ เดเดจเตเดจ เดเดพเดฐเตเดฏเด เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด, เดเตเดกเต เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดเดฟเดคเตเดฐเตเดเดฐเดฃ เดเดตเดถเตเดฏเดเตเดเตพเดเตเดเดพเดฏเดฟ เดจเตฝเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดงเตเดจเดฟเด เดฒเตเดเตเดเตโเดเตโเดเตฝ เดเดเตเดธเตโเดชเดฟเดธเดฟ เดตเดดเดฟ เดฒเตเดเตเดเต เดเตเดฏเตโเดค เดธเดฟเดเตเดจเดฒเตเดเตพ เด เดฏเดฏเตโเดเตเดเตเดจเตเดจเต, เดฒเตเดเตเดเตเดเตโเดเตฝ เดฒเตเดเดฟเดเต เด เดคเดฟเดฒเตเดเตเดเต เดจเตเดเตเดเดฟ.
เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดเตเดคเตเดฏเดฎเดพเดฏเดฟ เดจเดฟเตผเดคเตเดคเตเดจเตเดจเดคเต เดเดเตเดเดจเตเดฏเตเดจเตเดจเต เดจเตเดเตเดเดพเด. SIGTERM เดธเดฟเดเตเดจเตฝ เด เดฏเดฏเตโเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, "proc_terminate" เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดจเดฟเตผเดคเตเดคเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเต.
<launchctl src/core.c>
...
error = proc_terminate(j->p, &sig);
if (error) {
job_log(j, LOG_ERR | LOG_CONSOLE, "Could not terminate job: %d: %s", error, strerror(error));
job_log(j, LOG_NOTICE | LOG_CONSOLE, "Using fallback option to terminate job...");
error = kill2(j->p, SIGTERM);
if (error) {
job_log(j, LOG_ERR, "Could not signal job: %d: %s", error, strerror(error));
}
...
<>
เดนเตเดกเดฟเดจเต เดเตเดดเดฟเตฝ, proc_terminate, เด เดคเดฟเดจเตเดฑเต เดชเตเดฐเต เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดเตเดเตเด, SIGTERM เดเดชเดฏเตเดเดฟเดเตเดเต เดธเดฟเดเตเดจเตฝ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, SIGKILL-เดจเตเด เด เดฏเดฏเตเดเตเดเดพเตป เดเดดเดฟเดฏเตเด.
เดชเดฐเตเดเตเดท เดเดฟเตฝ - เดฑเดฟเดธเตเดดเตเดธเต เดชเดฐเดฟเดงเดฟ
เดฎเดฑเตเดฑเตเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดฟเตฝ เดเตเดเตเดคเตฝ เดฐเดธเดเดฐเดฎเดพเดฏ เดเดฐเต เดเตเดธเต เดเดพเดฃเดพเด
เด เดธเดฟเดธเตโเดฑเตเดฑเด เดเตเดณเดฟเดจเต เดเดฐเต เดชเตเดฐเตเดธเดธเตเดธเดฟเดจเต เดเดฒเตเดฒเดพเดคเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเดฎเตเดเตเดเดฟเดฒเตเด, เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเตเดฏเตเดฏเตเดจเตเดจ เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเดเต เด
เดตเดเดพเดถเดเตเดเตพ เดธเดฟเดธเตเดฑเตเดฑเด เดตเตเดฃเตเดเดคเตเดฐ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดฟเดฒเตเดฒ. เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต
เด เดคเดฟเดจเดพเตฝ, เดจเดฟเดเตเดเตพ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดฑเต CPU เดเดชเดฏเตเด เดเตเดตเดพเดเตเด "เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเตเดเตเดคเตเดคเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ" (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, 1 ns เดฎเดพเดคเตเดฐเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต), เด เดชเตเดชเตเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต เดเดคเต เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเด เดเดฒเตเดฒเดพเดคเดพเดเตเดเดพเด. เด เดคเดฟเดจเดพเตฝ, เดเตปเดฑเดฟเดตเตเดฑเดธเต เดชเตเดฐเดเตเดฐเดฟเดฏ เดเตพเดชเตเดชเตเดเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต เดเดคเต เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเดฏเตเด เดเตเดทเตเดฆเตเดฐเดตเตเดฏเดฑเดฟเดจเต เดเดฒเตเดฒเดพเดคเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด. Pid 1 (launchctl) เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดชเตเดฐเตเดธเดธเตเดธเต เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเดฎเตเดชเตเตพ เดเดฃเตเดเดพเดเตเดจเตเดจ เดซเดฒเดตเตเด เดฐเดธเดเดฐเดฎเดพเดฃเต - SIGKILL เดธเดฟเดเตเดจเตฝ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเตเตผเดฃเตฝ เดชเดพเดจเดฟเดเต :)
เดชเตเดฐเดถเตเดจเด เดเดเตเดเดจเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเด?
เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเตเดฌเดฟเดณเดฟเดฒเต เดซเดเดเตโเดทเตป เดชเตเดฏเดฟเดจเตเดฑเตผ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เดเดฐเต เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเต เดจเดถเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเต เดคเดเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด เดฒเดณเดฟเดคเดฎเดพเดฏ เดฎเดพเตผเดเด. เดจเดฟเตผเดญเดพเดเตเดฏเดตเดถเดพเตฝ, เด เดฐเตเดคเดฟ เดชเดฒ เดเดพเดฐเดฃเดเตเดเดณเดพเตฝ เดจเดฟเดธเตเดธเดพเดฐเดฎเดฒเตเดฒ.
เดเดฆเตเดฏเด, sysent-เดจเตเดฑเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฒเตเดเตเดเตเดทเตป เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฟเดนเตเดจเด XNU เดเตเตผเดฃเตฝ เดเดฟเดนเตเดจเดคเตเดคเดฟเดจเตเดฑเต เดธเตเดตเดเดพเดฐเตเดฏเด เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดเตเตผเดฃเตฝ เดเดฟเดนเตเดจเดเตเดเดณเดฟเตฝ เดเดฃเตเดเตเดคเตเดคเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ. เดซเดเดเตโเดทเตป เดกเตเดจเดพเดฎเดฟเดเตเดเดพเดฏเดฟ เดกเดฟเดธเตเด เดธเดเดฌเตเดฒเดฟเดเดเต เดเตเดฏเตเดฏเตเด, เด เดคเดฟเตฝ เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเดฑเดฟเดจเดพเดฏเดฟ เดคเดฟเดฐเดฏเตเด เดคเตเดเดเตเดเดฟเดฏ เดนเตเดฏเตเดฑเดฟเดธเตเดฑเตเดฑเดฟเดเต เดคเดฟเดฐเดฏเตฝ เดฐเตเดคเดฟเดเตพ เดจเดฟเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต.
เดฐเดฃเตเดเดพเดฎเดคเดพเดฏเดฟ, เดชเดเตเดเดฟเดเดฏเดฟเดฒเต เดเตปเดเตเดฐเดฟเดเดณเตเดเต เดเดเดจ เดเตเตผเดฃเตฝ เดเดเดชเตเตฝ เดเตเดฏเตเดค เดซเตเดฒเดพเดเตเดเดณเต เดเดถเตเดฐเดฏเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. CONFIG_REQUIRES_U32_MUNGING เดซเตเดฒเดพเดเต เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเดเดพเตฝ, เดเดเดจเดฏเตเดเต เดตเดฒเตเดชเตเดชเด เดฎเดพเดฑเตเด - เดเดฐเต เด
เดงเดฟเด เดซเตเตฝเดกเต เดเตเตผเดเตเดเตเด
struct sysent { /* system call table */
sy_call_t *sy_call; /* implementing function */
#if CONFIG_REQUIRES_U32_MUNGING || (__arm__ && (__BIGGEST_ALIGNMENT__ > 4))
sy_munge_t *sy_arg_munge32; /* system call arguments munger for 32-bit process */
#endif
int32_t sy_return_type; /* system call return types */
int16_t sy_narg; /* number of args */
uint16_t sy_arg_bytes; /* Total size of arguments in bytes for
* 32-bit system calls
*/
};
เดญเดพเดเตเดฏเดตเดถเดพเตฝ, MacOS-เดจเตเดฑเต เดเดงเตเดจเดฟเด เดชเดคเดฟเดชเตเดชเตเดเดณเดฟเตฝ, เดชเตเดฐเตเดธเดธเตเดเดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดชเตเดชเดฟเตพ เดเดฐเต เดชเตเดคเดฟเดฏ API เดจเตฝเดเตเดจเตเดจเต. เดเตปเดกเตโเดชเตเดฏเดฟเดจเตเดฑเต เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟ API เดเตเดฒเดฏเดจเตเดฑเตเดเดณเต เดฎเดฑเตเดฑเต เดชเตเดฐเตเดธเดธเตเดธเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดจเดฟเดฐเดตเดงเดฟ เด เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เด เดเดเตเดเดฐเดฟเดเตเดเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เด เดคเดฟเดจเดพเตฝ, เดฎเตเดเดณเดฟเตฝ เดธเตเดเดฟเดชเตเดชเดฟเดเตเด API เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต SIGKILL เดธเดฟเดเตเดจเตฝ เดเตพเดชเตเดชเตเดเตเดฏเตเดณเตเดณ เดชเตเดฐเตเดธเดธเตเดธเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดคเต เดธเดฟเดเตเดจเดฒเตเดเดณเตเด เดคเดเดฏเดพเตป เดเดดเดฟเดฏเตเด.
#include <bsm/libbsm.h>
#include <EndpointSecurity/EndpointSecurity.h>
#include <unistd.h>
int main(int argc, const char * argv[]) {
es_client_t* cli = nullptr;
{
auto res = es_new_client(&cli, ^(es_client_t * client, const es_message_t * message) {
switch (message->event_type) {
case ES_EVENT_TYPE_AUTH_SIGNAL:
{
auto& msg = message->event.signal;
auto target = msg.target;
auto& token = target->audit_token;
auto pid = audit_token_to_pid(token);
printf("signal '%d' sent to pid '%d'n", msg.sig, pid);
es_respond_auth_result(client, message, pid == getpid() ? ES_AUTH_RESULT_DENY : ES_AUTH_RESULT_ALLOW, false);
}
break;
default:
break;
}
});
}
{
es_event_type_t evs[] = { ES_EVENT_TYPE_AUTH_SIGNAL };
es_subscribe(cli, evs, sizeof(evs) / sizeof(*evs));
}
printf("%dn", getpid());
sleep(60); // could be replaced with other waiting primitive
es_unsubscribe_all(cli);
es_delete_client(cli);
return 0;
}
เด เดคเตเดชเตเดฒเต, เดเดฐเต เดธเดฟเดเตเดจเตฝ เดชเดฐเดฟเดฐเดเตเดทเดฃ เดฐเตเดคเดฟ (policy proc_check_signal) เดจเตฝเดเตเดจเตเดจ เดเตเตผเดฃเดฒเดฟเตฝ เดเดฐเต MAC เดชเตเดณเดฟเดธเดฟ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเดพเดตเตเดจเตเดจเดคเดพเดฃเต, เดเดจเตเดจเดพเตฝ API เดเดฆเตเดฏเตเดเดฟเดเดฎเดพเดฏเดฟ เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ.
เดเตเตผเดฃเตฝ เดตเดฟเดชเตเดฒเตเดเดฐเดฃ เดธเดเดฐเดเตเดทเดฃเด
เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต เดชเตเดฐเดเตเดฐเดฟเดฏเดเตพ เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดชเตเดฑเดฎเต, เดเตเตผเดฃเตฝ เดเดเตเดธเตเดฑเตเดฑเตปเดทเตป เดคเดจเตเดจเต (เดเตเดเตเดธเตเดฑเตเดฑเต) เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดฃเตเดเดคเตเด เดเดตเดถเตเดฏเดฎเดพเดฃเต. เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเตผเดเตเดเต IOKit เดกเดฟเดตเตเดธเต เดกเตเดฐเตเดตเดฑเตเดเตพ เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเดเตเดเดเตเดเตเดเต macOS เดจเตฝเดเตเดจเตเดจเต. เดเดชเดเดฐเดฃเดเตเดเดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเตเดณเตเดเตพ เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเต เดชเตเดฑเดฎเต, C++ เดเตเดฒเดพเดธเตเดเดณเตเดเต เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต IOKit เดกเตเดฐเตเดตเตผ เดธเตเดฑเตเดฑเดพเดเตเดเดฟเดเดเต เดฐเตเดคเดฟเดเตพ เดจเตฝเดเตเดจเตเดจเต. เดเดฐเต เดเตเตผเดฃเตฝ-เดเดชเดฏเตเดเตเดคเตเดธเตโเดชเตเดธเต เดฌเดจเตเดงเด เดธเตเดฅเดพเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเตเดฒเดพเดธเตเดธเดฟเดจเตเดฑเต เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดค เดเดฆเดพเดนเดฐเดฃเด "เดเดฃเตเดเตเดคเตเดคเดพเตป" เดฏเตเดธเตผเดธเตโเดชเตเดธเดฟเดฒเต เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเต เดเดดเดฟเดฏเตเด.
เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต เดเตเดฒเดพเดธเต เดเตปเดธเตโเดฑเตเดฑเตปเดธเตเดเดณเตเดเต เดเดฃเตเดฃเด เดเดฃเตเดเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต, ioclasscount เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ เดเดฃเตเดเต.
my_kext_ioservice = 1
my_kext_iouserclient = 1
เดกเตเดฐเตเดตเตผ เดธเตเดฑเตเดฑเดพเดเตเดเดฟเตฝ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจ เดเดคเตเดฐเต เดเตเตผเดฃเตฝ เดเดเตเดธเตเดฑเตเดฑเตปเดทเดจเตเด IOService-เตฝ เดจเดฟเดจเตเดจเต เดชเดพเดฐเดฎเตเดชเดฐเตเดฏเดฎเดพเดฏเดฟ เดฒเดญเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเตเดฒเดพเดธเต เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเดเดฃเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต my_kext_ioservice เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดชเดฏเตเดเตเดคเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดเดฃเดเตเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเต IOUserClient-เตฝ เดจเดฟเดจเตเดจเต เด เดตเดเดพเดถเดฎเดพเดเตเดเตเดจเตเดจ เดเตเดฒเดพเดธเดฟเดจเตเดฑเต เดเดฐเต เดชเตเดคเดฟเดฏ เดเดฆเดพเดนเดฐเดฃเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดพเดฐเดฃเดฎเดพเดเตเดจเตเดจเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ my_kext_iouserclient.
เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดกเตเดฐเตเดตเตผ เด เตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดฎเตเดชเตเตพ (kextunload เดเดฎเดพเตปเดกเต), เดตเตเตผเดเตเดตเตฝ เดซเดเดเตเดทเตป "bool Terminate (IOOptionBits เดเดชเตเดทเดจเตเดเตพ)" เดเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต. เดเตเดเตโเดธเตเดฑเตเดฑเตบเดฒเตเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดเตเดเดพเตป เด เตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเตเตผเดฎเดฟเดจเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เดเตเดณเดฟเตฝ เดคเตเดฑเตเดฑเดพเดฏเดฟ เดจเตฝเดเดฟเดฏเดพเตฝ เดฎเดคเดฟ.
bool Kext::terminate(IOOptionBits options)
{
if (!IsUnloadAllowed)
{
// Unload is not allowed, returning false
return false;
}
return super::terminate(options);
}
เดฒเตเดกเตเดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ IOUserClient-เดจเต IsUnloadAllowed เดซเตเดฒเดพเดเต เดธเดเตเดเตเดเดฐเดฟเดเตเดเดพเดจเดพเดเตเด. เดเดฐเต เดกเตเตบเดฒเตเดกเต เดชเดฐเดฟเดงเดฟ เดเดณเตเดณเดชเตเดชเตเตพ, kextunload เดเดฎเดพเตปเดกเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดเตเดเตเดชเตเดเตเดเต เดจเตฝเดเตเด:
admin@admins-Mac drivermanager % sudo kextunload ./test.kext
Password:
(kernel) Can't remove kext my.kext.test; services failed to terminate - 0xe00002c7.
Failed to unload my.kext.test - (iokit/common) unsupported function.
IOUserClient-เดจเต เดธเดฎเดพเดจเดฎเดพเดฏ เดธเดเดฐเดเตเดทเดฃเด เดจเตฝเดเดฃเด. "IOCatalogueTerminate(mach_port_t, uint32_t flag, io_name_t description);" IOKitLib เดเดชเดฏเตเดเตเดคเตเดธเตโเดชเตเดธเต เดซเดเดเตโเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเดฒเดพเดธเตเดเดณเตเดเต เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เด เตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด. "เดเตเตผเดฎเดฟเดจเตเดฑเตเดฑเต" เดเดฎเดพเตปเดกเต เดตเดฟเดณเดฟเดเตเดเตเดฎเตเดชเตเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดคเตเดฑเตเดฑเดพเดฏเดฟ เดจเตฝเดเดพเด, เดเดชเดฏเตเดเตเดคเตเดธเตเดชเตเดธเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป "เดกเตเดฏเตเดธเต" เดตเดฐเต, เด เดคเดพเดฏเดคเต, "เดเตเดฒเดฏเดจเตเดฑเต เดกเตเดกเต" เดซเดเดเตเดทเตป เดตเดฟเดณเดฟเดเตเดเดชเตเดชเตเดเดฟเดฒเตเดฒ.
เดซเดฏเตฝ เดธเดเดฐเดเตเดทเดฃเด
เดซเดฏเดฒเตเดเตพ เดชเดฐเดฟเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดซเดฏเดฒเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดเตเดธเดธเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจ Kauth API เดเดชเดฏเตเดเดฟเดเตเดเดพเตฝ เดฎเดคเดฟเดฏเดพเดเตเด. เดตเตเดฏเดคเตเดฏเดธเตโเดค เดชเดฐเดฟเดชเดพเดเดฟเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เด เดฑเดฟเดฏเดฟเดชเตเดชเตเดเตพ เดเดชเตเดชเดฟเตพ เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเตผเดเตเดเต เดจเตฝเดเตเดจเตเดจเต; เดเดเตเดเดณเต เดธเดเดฌเดจเตเดงเดฟเดเตเดเดฟเดเดคเตเดคเตเดณเด, KAUTH_VNODE_DELETE, KAUTH_VNODE_WRITE_DATA, KAUTH_VNODE_DELETE_CHILD เดเดจเตเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต. เดซเดฏเดฒเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดเตโเดธเดธเต เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเตเดเตเดคเตเดคเดพเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด เดเดณเตเดชเตเดช เดฎเดพเตผเดเด เดชเดพเดคเตเดคเต เดตเดดเดฟเดฏเดพเดฃเต - เดซเดฏเดฒเดฟเดฒเตเดเตเดเตเดณเตเดณ เดชเดพเดคเตเดคเต เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดชเดพเดคเตเดคเต เดชเตเดฐเดฟเดซเดฟเดเตโเดธเต เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดเดเตเดเตพ โvn_getpathโ API เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เดซเดฏเตฝ เดซเตเตพเดกเตผ เดชเดพเดฅเตเดเดณเตเดเต เดชเตเดจเตผเดจเดพเดฎเดเดฐเดฃเด เดเดชเตเดฑเตเดฑเดฟเดฎเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดธเดฟเดธเตเดฑเตเดฑเด เดเดฐเต เดซเดฏเดฒเดฟเดฒเตเดเตเดเตเด เดชเตเดฐเดตเตเดถเดจเด เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ, เดฎเดฑเดฟเดเตเดเต เดชเตเดฐเตเดฎเดพเดฑเตเดฑเดฟเดฏ เดซเตเตพเดกเดฑเดฟเดฒเตเดเตเดเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต. เดชเดพเดฐเดจเตเดฑเต เดชเดพเดคเตเดคเต เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเตเดเดฏเตเด เด เดคเดฟเดจเดพเดฏเดฟ KAUTH_VNODE_DELETE เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเตเดเตเดคเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดฃเตเดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต.
เดชเตเดฐเดฟเดซเดฟเดเตเดธเตเดเดณเตเดเต เดเดฃเตเดฃเด เดตเตผเดฆเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ เด เดธเดฎเตเดชเดจเดคเตเดคเดฟเดจเตเดฑเต เดชเตเดฐเดพเดฏเตเดฎ เดเตเดฑเดเตเด เดชเตเดฐเดเดเดจเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเดพเด. เดชเตเดฐเดฟเดซเดฟเดเตโเดธเต เดเดจเตเดจเดคเต เดชเตเดฐเดฟเดซเดฟเดเตโเดธเตเดเดณเตเดเต เดเดฃเตเดฃเดตเตเด เดจเตเดณเด เดเดจเตเดจเดคเต เดธเตโเดเตเดฐเดฟเดเดเดฟเดจเตเดฑเต เดจเตเดณเดตเตเด เดเดฏ O(เดชเตเดฐเดฟเดซเดฟเดเตโเดธเต*เดฆเตเตผเดเตเดฏเดคเตเดคเดฟเดจเต) เดคเตเดฒเตเดฏเดฎเดฒเตเดฒ เดคเดพเดฐเดคเดฎเตเดฏเดฎเตเดจเตเดจเต เดเดฑเดชเตเดชเดพเดเตเดเดพเตป, เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดฐเดฟเดซเดฟเดเตโเดธเตเดเดณเดพเตฝ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเด เดเดฐเต เดกเดฟเดฑเตเดฑเตผเดฎเดฟเดจเดฟเดธเตเดฑเตเดฑเดฟเดเต เดซเดฟเดจเดฟเดฑเตเดฑเต เดเดเตเดเตเดฎเดพเดฑเตเดฑเตบ (DFA) เดเดชเดฏเตเดเดฟเดเตเดเดพเด.
เดจเตฝเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเตเดเตเดเด เดชเตเดฐเดฟเดซเดฟเดเตเดธเตเดเตพเดเตเดเดพเดฏเดฟ เดเดฐเต เดกเดฟเดเดซเตเด เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดฐเตเดคเดฟ เดจเดฎเตเดเตเดเต เดชเดฐเดฟเดเดฃเดฟเดเตเดเดพเด. เดเดฐเต เดชเตเดฐเดฟเดซเดฟเดเตโเดธเดฟเดจเตเดฑเตเดฏเตเด เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดเดดเตโเดธเดฑเตเดเตพ เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต. เดเดฒเตเดฒเดพ เดเดดเตโเดธเดฑเตเดเดณเตเด เดเดฐเต เดชเตเดฐเดคเตเดเดคเตเดคเดฟเดฒเตเดเตเดเต เดเตเดฃเตเดเดฟเดเตเดเดพเดฃเดฟเดเตเดเตเดจเตเดจเตเดตเตเดเตเดเดฟเตฝ, เดเดฐเต เดเดดเตโเดธเดฑเตเด เดเดฐเต เดชเตเดฐเดคเตเดเด เดเตเดฃเตเดเต เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เด เดคเต เดตเดฐเดฟเดฏเตเดเต เดจเตเดณเด เดเดจเตเดจเดพเดฏเดฟ เดเตเดเตเดคเดฒเดพเดฃเตเดจเตเดจเต เดเตผเดฎเตเดฎเดฟเดเตเดเตเด. เดตเตเดฏเดคเตเดฏเดธเตโเดค เดเดฟเดนเตเดจเดเตเดเดณเตเดณเตเดณ เดฐเดฃเตเดเต เดเดดเตโเดธเดฑเตเดเตพ เดเดฃเตเดเตเดเตเดเดฟเตฝ, เด เดตเตผ เดเตเดฃเตเดเดฟเดเตเดเดพเดฃเดฟเดเตเดเตเดจเตเดจ เดเดฟเดนเตเดจเดฎเดจเตเดธเดฐเดฟเดเตเดเต เดเดดเตโเดธเดฑเตเดเดณเต เดเตเดฐเตเดชเตเดชเตเดเดณเดพเดฏเดฟ เดตเดฟเดญเดเดฟเดเตเดเต เดเดฐเต เดเตเดฐเตเดชเตเดชเดฟเดจเตเด เด เตฝเดเตเดฐเดฟเดคเด เดเดตเตผเดคเตเดคเดฟเดเตเดเตเด.
เดเดฆเตเดฏ เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเตฝ (เดเตผเดธเดฑเตเดเตพเดเตเดเต เดเตเดดเดฟเดฒเตเดณเตเดณ เดเดฒเตเดฒเดพ เดชเตเดฐเดคเตเดเดเตเดเดณเตเด เดเดจเตเดจเตเดคเดจเตเดจเตเดฏเดพเดฃเต), เดเดฐเต เดฒเตเดจเดฟเดฒเตเดเต เดเดฐเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดฎเดพเดคเตเดฐเดฎเตเดณเตเดณ เดเดฐเต DFA เด เดตเดธเตเดฅ เดจเดฎเตเดเตเดเต เดฒเดญเดฟเดเตเดเตเด. เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดซเดเดเตโเดทเดจเต เดเดตเตผเดคเตเดคเดฟเดเตเดเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเต เดฒเดญเดฟเดเตเดเตเดจเตเดจ เดคเตเดเตผเดจเตเดจเตเดณเตเดณ เด เดตเดธเตเดฅเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ 256 เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเดจเตเดฑเต (เด เดเตเดทเดฐเดเตเดเดณเตเดเต เดเดฃเตเดฃเดตเตเด เดชเดฐเดฎเดพเดตเดงเดฟ เดเตเดฐเตเดชเตเดชเตเดเดณเตเดเต เดเดฃเตเดฃเดตเตเด) เดธเดเดเตเดฐเดฎเดฃเดเตเดเดณเตเดเต เดเดฐเต เดชเดเตเดเดฟเด เดจเดฎเตเดเตเดเต เดฒเดญเดฟเดเตเดเตเด.
เดจเดฎเตเดเตเดเต เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดจเตเดเตเดเดพเด. เดเดฐเต เดเตเดเตเดเด เดชเตเดฐเดฟเดซเดฟเดเตเดธเตเดเตพเดเตเดเดพเดฏเดฟ (โ/foo/bar/tmp/โ, โ/var/db/foo/โ, โ/foo/bar/aba/โ, โfoo/bar/aac/โ) เดจเดฟเดเตเดเตพเดเตเดเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดฒเดญเดฟเดเตเดเตเด เดกเดฟเดเดซเตเด. เดฎเดฑเตเดฑเต เดธเดเดธเตเดฅเดพเดจเดเตเดเดณเดฟเดฒเตเดเตเดเต เดจเดฏเดฟเดเตเดเตเดจเตเดจ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเดเตเดเตพ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดเดฟเดคเตเดฐเด เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเดคเต; เดฎเดฑเตเดฑเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเดเตเดเตพ เด เดจเตเดคเดฟเดฎเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเดฟเดฒเตเดฒ.
DKA เดธเดเดธเตเดฅเดพเดจเดเตเดเดณเดฟเดฒเตเดเต เดชเตเดเตเดฎเตเดชเตเตพ, 3 เดเตเดธเตเดเตพ เดเดฃเตเดเดพเดเดพเด.
- เด เดจเตเดคเดฟเดฎ เด เดตเดธเตเดฅเดฏเดฟเตฝ เดเดคเตเดคเดฟ - เดชเดพเดค เดชเดฐเดฟเดฐเดเตเดทเดฟเดเตเดเดชเตเดชเตเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, KAUTH_VNODE_DELETE, KAUTH_VNODE_WRITE_DATA, KAUTH_VNODE_DELETE_CHILD เดเดจเตเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดเดเตเดเตพ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเต
- เด เดจเตเดคเดฟเดฎ เด เดตเดธเตเดฅเดฏเดฟเตฝ เดเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ, เดชเดเตเดทเต เดชเดพเดค "เด เดตเดธเดพเดจเดฟเดเตเดเต" (เดจเตพ เดเตเตผเดฎเดฟเดจเตเดฑเตเดฑเดฑเดฟเตฝ เดเดคเตเดคเดฟ) - เดชเดพเดค เดเดฐเต เดฐเดเตเดทเดฟเดคเดพเดตเดพเดฃเต, KAUTH_VNODE_DELETE เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเตเดเตเดคเตเดคเตเดฃเตเดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต. vnode เดเดฐเต เดซเตเตพเดกเดฑเดพเดฃเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพ เด เดตเดธเดพเดจเด เดเดฐเต '/' เดเตเตผเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต, เด เดฒเตเดฒเดพเดคเตเดคเดชเดเตเดทเด เด เดคเต "/for/bar/t" เดเดจเตเดจ เดซเดฏเดฒเดฟเดฒเตเดเตเดเต เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเตเดเตเดเดพเด, เด เดคเต เดคเตเดฑเตเดฑเดพเดฃเต.
- เด เดจเตเดคเดฟเดฎ เด เดตเดธเตเดฅเดฏเดฟเตฝ เดเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ, เดชเดพเดค เด เดตเดธเดพเดจเดฟเดเตเดเดฟเดฒเตเดฒ. เดชเตเดฐเดฟเดซเดฟเดเตโเดธเตเดเดณเตเดจเตเดจเตเด เดเดคเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจเดฟเดฒเตเดฒ, เดเดเตเดเตพ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดเตเดเตพ เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ.
เดคเตเดฐเตเดฎเดพเดจเด
เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเตเดเตเดฃเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดธเตเดฐเดเตเดทเดพ เดชเดฐเดฟเดนเดพเดฐเดเตเดเดณเตเดเต เดฒเดเตเดทเตเดฏเด เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดฑเตเดฏเตเด เด เดตเดจเตเดฑเต เดกเดพเดฑเตเดฑเดฏเตเดเตเดฏเตเด เดธเตเดฐเดเตเดทเดฏเตเดเต เดจเดฟเดฒเดตเดพเดฐเด เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต. เดเดฐเต เดตเดถเดคเตเดคเต, เด เดเตเดฐเตเดฃเดฟเดธเต เดธเตเดซเตเดฑเตเดฑเตเดตเตเดฏเตผ เดเตฝเดชเตเดชเดจเตเดจเดคเตเดคเดฟเดจเตเดฑเต เดตเดฟเดเดธเดจเด เดตเดดเดฟ เด เดฒเดเตเดทเตเดฏเด เดเตเดตเดฐเดฟเดเตเดเตเดจเตเดจเต, เด เดคเต เดเดชเตเดชเดฑเตเดฑเตเดฑเดฟเดเดเต เดธเดฟเดธเตเดฑเตเดฑเด เดคเดจเตเดจเต "เดฆเตเตผเดฌเดฒเดฎเดพเดฏ" เด เดเตเดเตเดชเดพเดเตเดเตพ เด เดเดฏเตเดเตเดเตเดจเตเดจเต. เดฎเดฑเตเดตเดถเดคเตเดคเต, OS เดตเดถเดคเตเดคเต เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดธเตเดฐเดเตเดทเดพ เดตเดถเดเตเดเตพ เดถเดเตเดคเดฟเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเดคเต เดเดเตเดเตพ เด เดตเดเดฃเดฟเดเตเดเดฐเตเดคเต, เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเตเด เด เดคเตเดคเดฐเด เดเตเดเตเดชเดพเดเตเดเตพ เด เดเดฏเตเดเตเดเตเดจเตเดจเดคเต เดเดฐเต เดเตฝเดชเตเดชเดจเตเดจเดฎเตเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ เดจเดฎเตเดฎเตเดเต เดธเตเดตเดจเตเดคเด เดธเตเดฅเดฟเดฐเดค เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ. เด เดชเดเดเดธเดพเดงเตเดฏเดค Apple Product Security Team-เดจเต เดฑเดฟเดชเตเดชเตเตผเดเตเดเต เดเตเดฏเตเดคเต, macOS 10.14.5 (https://support.apple.com/en-gb/HT210119)-เตฝ เด เดคเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเต.
เดจเดฟเดเตเดเดณเตเดเต เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ เดเดฆเตเดฏเตเดเดฟเดเดฎเดพเดฏเดฟ เดเตเตผเดฃเดฒเดฟเตฝ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดคเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต เดเดคเตเดฒเตเดฒเดพเด เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเต. เด
เดคเดพเดฏเดคเต, เดฌเดพเดนเตเดฏเดตเตเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดคเดคเตเดฎเดพเดฏ เดธเตเดซเตโเดฑเตเดฑเตโเดตเตเดฏเดฑเตเดเตพเดเตเดเต เด
เดคเตเดคเดฐเด เดชเดดเตเดคเตเดเดณเตเดจเตเดจเตเดฎเดฟเดฒเตเดฒ. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดเดจเตเดฑเดฟเดตเตเดฑเดธเตเด เดฌเดพเดเตเดเดชเตเดชเต เดธเดฟเดธเตเดฑเตเดฑเดเตเดเดณเตเด เดชเตเดฒเตเดณเตเดณ เดจเดฟเดฏเดฎเดพเดจเตเดธเตเดค เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดชเดฐเดฟเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดชเตเดฒเตเด เดเตเดฒเดฟ เดเดตเดถเตเดฏเดฎเดพเดฃเต. เดเดจเตเดจเดพเตฝ เดเดชเตเดชเตเตพ MacOS-เดจเตเดณเตเดณ เดชเตเดคเดฟเดฏ เด
เดเตเดฐเตเดฃเดฟเดธเต เดเตฝเดชเตเดชเดจเตเดจเดเตเดเตพเดเตเดเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เด
เตบเดฒเตเดกเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดคเดฟเดฐเต เด
เดงเดฟเด เดชเดฐเดฟเดฐเดเตเดท เดฒเดญเดฟเดเตเดเตเด.
เด
เดตเดฒเดเดฌเด: www.habr.com