- Статус
- Оффлайн
- Регистрация
- 13 Фев 2026
- Сообщения
- 309
- Реакции
- 7
Народ, кто сейчас ковыряет маппинг памяти в кернел-моде, гляньте этот метод трансляции вирт-адреса в физику. Давно мурыжил этот вопрос, когда обновлял свой байпасс, и решил поделиться схемой, которую нарыл.
Суть в том, что вместо классического прохода по всем уровням пейдж-тейблов, можно юзать self-reference энтри, когда вы уже зааттачены к процессу. По факту, мы создаем PML4E, который указывает напрямую на целевой DTB.
Техническая база:
Почему это профитно:
Скорость трансляции взлетает в разы. Вы минимизируете количество обращений к памяти, так как читаете только финальный PFN через виртуальное чтение. По сути, это чит-код для тех, кто страдает от оверхеда при чтении памяти в больших объемах.
Нюансы реализации:
Конечно, это палится античитами на раз-два, если не замаскировать этот PML4E. Это жирный флаг для любого нормального кибер-детекта, который мониторит модификации таблиц страниц.
Кто-то уже тестил похожие манипуляции с MMU, чтобы не спалиться на проверках целостности таблиц? Есть идеи, как замаскировать подмену PML4E, чтобы не отлететь в пермач при первой же проверке? Братва, делитесь опытом, кто допиливал — кидайте свои соображения в тред.
Суть в том, что вместо классического прохода по всем уровням пейдж-тейблов, можно юзать self-reference энтри, когда вы уже зааттачены к процессу. По факту, мы создаем PML4E, который указывает напрямую на целевой DTB.
Техническая база:
- Если вы уже в кернеле, через self-ref энтри можно читать все уровни пейдж-тейблов напрямую.
- Создаем кастомный PML4E -> целимся в нужный DTB.
- Результат: MMU берет на себя весь пейдж-уок, мы получаем финальный PFN почти мгновенно.
Почему это профитно:
Скорость трансляции взлетает в разы. Вы минимизируете количество обращений к памяти, так как читаете только финальный PFN через виртуальное чтение. По сути, это чит-код для тех, кто страдает от оверхеда при чтении памяти в больших объемах.
Нюансы реализации:
Конечно, это палится античитами на раз-два, если не замаскировать этот PML4E. Это жирный флаг для любого нормального кибер-детекта, который мониторит модификации таблиц страниц.
В теории можно провернуть это без прямого инжекта PML4E, если найти виртуальный адрес, который мапит финальную PT-страницу. Я пока эту ветку не копал, но направление перспективное.
Кто-то уже тестил похожие манипуляции с MMU, чтобы не спалиться на проверках целостности таблиц? Есть идеи, как замаскировать подмену PML4E, чтобы не отлететь в пермач при первой же проверке? Братва, делитесь опытом, кто допиливал — кидайте свои соображения в тред.