Какие изменения в jailbroken ядре?
Увидев этот вопрос о защите вашего приложения от взлома, я увидел, что главный ответчик упомянул что-то о возможности увидеть, было ли устройство взломанным каким-то внутренним дисбаланс в ядре. Изучив это немного, я обнаружил "Обзор архитектуры ядра" и узнал о способах взаимодействия с ядром Mach-BSD. Все, что мне нужно знать: что я ищу? Есть ли какое-то ключевое или внутреннее состояние, которое изменяется, когда устройство джейлбрейкнуто в контексте ядра?
Чтобы быть ясным, я не ищу код (я знаю, как это делать самому), я ищу, что искать... Как это ни странно. Я видел ответы в связанных вопросах, я знаю, что они работают, но мне интересно, какой маршрут ядра яв ляется более общим и эффективным способом вместо поиска каталогов, которые могут изменить или использовать клавиши которые могут иметь разные имена.
Я также не собираюсь отключать какие-либо функции со стороны приложения из-за пиратства (просто покажите сообщение или что-то на основе условия).
Ответы
Ответ 1
Все "современные" патчи ядра основаны на исправлениях comex.
основные элементы, которые исправляются:
-
security.mac.proc_enforce
-
cs_enforcement_disable (kernel and AMFI)
-
PE_i_can_has_debugger
-
vm_map_enter
-
vm_map_protect
- ...
О, и есть также песочницы. Если вы хотите узнать больше обо всех этих исправлениях, я предлагаю вам взглянуть на iOS Hacker Handbook.
Изменить:
Я просто придумал простую идею проверить, что устройство было взломанным, но я не уверен, что Apple разрешает использовать эти функции:
-
выделить некоторую память, используя mach_vm_allocate()
-
изменить защиту этой страницы с помощью mach_vm_protect() на VM_PROT_READ | VM_PROT_EXECUTE | VM_PROT_COPY
-
Так как запас iOS не позволяет VM_PROT_EXECUTE изнутри вашего приложения, это не сработает, проверьте возвращаемое значение mach_vm_protect(), если оно не было взломанным, но успешно, если устройство было взломанным.
Ответ 2
Около года назад saurik написал комментарий к Hacker News со списком исправлений "лучшей практики" , которые по умолчанию устанавливают джейлбрейки". Я бы предложил прочитать этот комментарий для всех деталей, но вот предварительный просмотр того, что он говорит (с большим количеством объяснений, которые я вырвал):
-
AFC2: позволяет вам получить доступ через USB, все/как root, а не просто /var/mobile/Media как мобильные.
-
fstab/rw: делает/монтируется чтение-запись.
-
fstab/var suid dev: позволяет исполняемым файлам setuid и узлам устройства в разделе пользовательских данных.
-
codeign: разрешить код, который не был подписан кем-либо для выполнения.
-
codehash: разрешить процессы с "поврежденными" страницами кода для выполнения.
-
rw- > rx: поддерживает изменение страницы памяти от записи до исполняемого файла.
-
rwx: позволяет отмечать память для записи и выполнения в одно и то же время.
-
песочница: разрешить процессам доступ к файлам, находящимся за пределами их песочницы, на основе разрешений Unix, а не обычной песочнице правила.
-
crazeles: смехотворно сложный взлом на планете, когда Neur FairPlay DRM проверяет, что iBooks отказывается работать правильно на джейлбрейк-устройствах.