Что меняется в взломанном ядре?

Увидев этот вопрос о защите вашего приложения от взлома я увидел, что лучший ответчик упомянул что-то о возможности увидеть, было ли устройство взломано из-за какого-то внутреннего дисбаланса в ядре. Изучив его немного подробнее, я обнаружил Обзор архитектуры ядра и знать способы взаимодействия с ядром Mach-BSD. Все, что мне нужно знать, это: Что я ищу? Есть ли какой-то ключ или внутреннее состояние, которое меняется при взломе устройства в контексте ядра?

Чтобы было ясно, я не ищу код (я сам умею это делать), я ищу, что искать... Как бы странно это ни звучало. Я видел ответы на связанные вопросы, я знаю, что они работают, но меня интересует маршрут все ядро, который кажется более общим и эффективным способом проверки вместо поиска каталоги, которые могут измениться, или plist ключи, которые могут иметь разные имена.

Я также не собираюсь отключать какие-либо функции со стороны приложения из-за пиратства (просто показать сообщение или что-то в зависимости от условия).


person CodaFi    schedule 04.05.2012    source источник
comment
это простой системный вызов: beTharPiratesHere()   -  person Chris Eberle    schedule 04.05.2012
comment
Используйте предложение о создании неправильно подписанного приложения из упомянутого вами вопроса, которое кажется мне наиболее надежным.   -  person Jesus Ramos    schedule 04.05.2012
comment
О, я знаю об этом. Я спрашиваю конкретно о маршруте ядра (мне он кажется более точным из того, о чем говорили ответчики). Это более гипотетично/концептуально, чем что-либо еще.   -  person CodaFi    schedule 04.05.2012
comment
Я нахожу довольно странным голосовать против этого вопроса. Он достаточно ясен в письменном виде, на него можно ответить, намекнув на кодовое решение, он исследуется и в такой форме ранее не задавался.   -  person Till    schedule 04.05.2012
comment
@ Крис, если бы был способ отклонить комментарии, я бы сделал это с твоими. Побег из тюрьмы был придуман не для пиратства, это просто побочный продукт   -  person YllierDev    schedule 06.05.2012
comment
@ Пока я не соглашусь, это отличный вопрос для сайта. Я хотел бы, чтобы на этот вопрос было опубликовано больше ответов, это может быть отличным справочником для нынешних и будущих пользователей (кашель, как и я).   -  person Mick MacCallum    schedule 06.05.2012
comment
@YllierDev явно не знаком с понятием сарказм. Это шутка.   -  person Chris Eberle    schedule 06.05.2012
comment
@Chris Прости, если это действительно был чистый сарказм. Я злюсь на разработчиков и людей, которые ставят джейлбрейк на один уровень с пиратством. И, как вы, возможно, знаете, комментарии, подобные вашему, обычно выражают именно это :(   -  person YllierDev    schedule 06.05.2012


Ответы (2)


Все «современные» исправления ядра основаны на исправлениях Comex.

основные вещи, которые исправляются:

  • security.mac.proc_enforce
  • cs_enforcement_disable (kernel and AMFI)
  • PE_i_can_has_debugger
  • vm_map_enter
  • vm_map_protect

О, и есть еще патчи для песочницы. Если вы хотите узнать больше обо всех этих исправлениях, я предлагаю вам взглянуть на Справочник iOS-хакера.

Редактировать: мне пришла в голову простая идея проверить, взломано ли устройство, но я не уверен, разрешает ли Apple использовать эти функции:

  1. выделить часть памяти с помощью mach_vm_allocate()

  2. измените защиту этой страницы с помощью mach_vm_protect() на VM_PROT_READ | VM_PROT_EXECUTE | VM_PROT_COPY

  3. Поскольку стандартная iOS не позволяет использовать VM_PROT_EXECUTE внутри вашего приложения, это не удастся, проверьте возвращаемое значение mach_vm_protect(), если оно не взломано, но успешно, если устройство взломано.

person YllierDev    schedule 05.05.2012
comment
Наконец, ответ, который не является саркастическим. +1 за клон репозитория Comex. - person CodaFi; 06.05.2012
comment
Извините, давно здесь не был. вам все еще нужно подтверждение? - person YllierDev; 19.06.2012
comment
Мне жаль, что я не был рядом с этим делом. К сожалению, iOS не поддерживает mach_vm_allocate(), поскольку заголовок ‹mach/vm_user› недоступен. - person CodaFi; 02.07.2012

Около года назад saurik написал комментарий на Hacker News со списком "лучших практических" исправлений. что джейлбрейки устанавливаются по умолчанию". Я бы посоветовал прочитать этот комментарий, чтобы узнать все подробности, но вот предварительный просмотр того, что он говорит (с большим количеством объяснений, которые я вырезал):

  1. AFC2: позволяет получить доступ через USB ко всему / как root, а не только к /var/mobile/Media as mobile.

  2. fstab /rw: позволяет /монтироваться для чтения-записи.

  3. fstab /var suid dev: разрешает исполняемые файлы setuid и узлы устройств в разделе пользовательских данных.

  4. codesign: разрешить выполнение кода, который никем не подписан.

  5. codehash: разрешить выполнение процессов с «поврежденными» страницами кода.

  6. rw->rx: поддерживает изменение страницы памяти с доступной для записи на исполняемую.

  7. rwx: позволяет одновременно помечать память для записи и выполнения.

  8. песочница: разрешить процессам доступ к файлам, находящимся за пределами их песочницы, на основе разрешений Unix, а не по обычным правилам песочницы.

  9. crazeles: смехотворно сложный хак от Planetbeing, который нейтрализует проверки FairPlay DRM, из-за которых iBooks отказывается корректно работать на устройствах с джейлбрейком.

person britta    schedule 30.08.2013
comment
Так же, как анекдотическая информация, iBooks, похоже, отлично работает на моем evasi0n iPhone 5. Однако отличный ответ, и я ранее ссылался на ту же суперполезную тему. - person Nate; 12.09.2013