Вопрос Аппаратный брейкпоинт

Новичок
Новичок
Статус
Оффлайн
Регистрация
23 Авг 2023
Сообщения
1
Реакции
0
Прочитал, что при обращении к регистрам DrX (установка hardware breakpoint), процессор проверяет откуда поступил запрос на изменение этих регистров и если не от ядра (драйвера) - процессор не даёт изменить регистры (или сразу их обнуляет, тут тоже вопрос). Так же прочитал, что можно в реальном режиме попробовать ставить регистры, но тоже сомневаюсь. Цель - считать регистр RAX и RCX, когда вызывается инструкция по адресу, который находится через сигу (поиск уже реализован как часы).

Есть ли простой способ решения? Возможно ли изменить CS регистр для маскировки под ядро или упор в ту же проблему доступа? Насколько сложно написать драйвер? Я бы хотел разобраться, если можете скиньте статей.
 
Прочитал, что при обращении к регистрам DrX (установка hardware breakpoint), процессор проверяет откуда поступил запрос на изменение этих регистров и если не от ядра (драйвера) - процессор не даёт изменить регистры (или сразу их обнуляет, тут тоже вопрос). Так же прочитал, что можно в реальном режиме попробовать ставить регистры, но тоже сомневаюсь. Цель - считать регистр RAX и RCX, когда вызывается инструкция по адресу, который находится через сигу (поиск уже реализован как часы).

Есть ли простой способ решения? Возможно ли изменить CS регистр для маскировки под ядро или упор в ту же проблему доступа? Насколько сложно написать драйвер? Я бы хотел разобраться, если можете скиньте статей.
попроси ядро за тебя поставить эти дебаг регистры(через syscall).
(Nt)SetThreadContext тебе нужен
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Прочитал, что при обращении к регистрам DrX (установка hardware breakpoint), процессор проверяет откуда поступил запрос на изменение этих регистров и если не от ядра (драйвера) - процессор не даёт изменить регистры (или сразу их обнуляет, тут тоже вопрос). Так же прочитал, что можно в реальном режиме попробовать ставить регистры, но тоже сомневаюсь. Цель - считать регистр RAX и RCX, когда вызывается инструкция по адресу, который находится через сигу (поиск уже реализован как часы).

Есть ли простой способ решения? Возможно ли изменить CS регистр для маскировки под ядро или упор в ту же проблему доступа? Насколько сложно написать драйвер? Я бы хотел разобраться, если можете скиньте статей.
Советую почитать - https://vk.com/@haccking1-skrytyi-potencial-registrov-otladki-dr0-dr7
Ты можешь написать драйвер используя dr0, чтобы ставить брикпоинты и считывать регистры какие тебе нужны - RAX, RCX. Нашел на гитхабе что-то похожее, но для x86:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Назад
Сверху Снизу