Предотвращение доступа к памяти процесса
Я сделал пример, который записывает в память процесса, используя task_for_pid() и mach_vm_write().
task_for_pid(mach_task_self(), pid, &target_task);
mach_vm_write(target_task, address, '?', local_size);
Есть ли способ заблокировать доступ к памяти конкретного процесса из других процессов, таких как чит-движок в OS X.
Как я могу запретить другому процессу вызывать task_for_pid?
Не так много других приходит на ум, кроме как зацепка.
1 ответ
В OS X вызовы task_for_pid регулируются Taskgated. По сути, если это не ваша задача, или вы не являетесь пользователем root (или, в старых системах, членом группы procview), вы не получите этот неуловимый порт задачи. Но если вам позволено, то у вас есть порт, и вы можете делать все, что захотите.
Перехват не поможет, так как task_for_pid является ловушкой машины - люди могут вызывать ее напрямую, используя интерфейс системных вызовов. iOS имеет гораздо более жесткие элементы управления (благодаря AppleMobileFileIntegrity.kext). Если вы хотите контролировать ловушку, фактически единственный способ сделать это - написать небольшой кекст, который поможет вам.