![]() |
eXeL@B —› Вопросы новичков —› remote debugging ring 3 + ring 0 |
Посл.ответ | Сообщение |
|
Создано: 15 апреля 2011 02:42 · Личное сообщение · #1 Хочу продебажить программу, исполняемую на виртуальной машине, с помощью remote debugging хоста. Как "идеалогически" установить breakpoint на её первой инструкции? когда я коннекчу дебаггер, он начинает дебажить ядро операционки на VM. Если внутри программы я "натыкаюсь" на инструкцию типа sysenter, как перехватить её исполнение в ядре гостевой ОС? ![]() |
|
Создано: 15 апреля 2011 13:43 · Личное сообщение · #2 |
|
Создано: 16 апреля 2011 10:10 · Личное сообщение · #3 |
|
Создано: 16 апреля 2011 10:22 · Личное сообщение · #4 |
|
Создано: 16 апреля 2011 10:28 · Поправил: Coderess · Личное сообщение · #5 Я когда драйвер писал, ставил бряк в нем допустим в DriverEntry() потом загружал его с помощью Syser -> Loader и ловил исключение с помощью Syser'а потом уже как обычно трасировал код, плюс можно же брейкпоинты ставить на функции IoCreateDevice(), IoCreateSymbolicLink() и уже выезжаешь к нужному коду ----- Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes ![]() |
|
Создано: 16 апреля 2011 11:03 · Личное сообщение · #6 |
|
Создано: 17 апреля 2011 19:47 · Поправил: DenCoder · Личное сообщение · #7 Для WinDbg Если запускаем под проводником Получаем EPROCESS !process 0 0 explorer.exe ставим ядерный бряк bp /p <полученный EPROCESS> nt!NtCreateThread; g Бряк сработал, получаем адрес точки входа dd /c 1 @esp + 0x18 L1; dt nt!_CONTEXT Eax @@masm($p) Получаем информацию об указанном в параметрах хендле процесса dd /c 1 @esp + 0x10 L1; !handle @@masm($p) Убеждаемся, что получаем правильный Type: Process. Да - берем EPROCESS нового процесса из поля Object. В меню Edit->Breakpoints находим ранее установленный бряк и отключаем его, ОК Дальше ставим бряк на точку входа программы bp /p <EPROCESS нового процесса> <адрес точки входа>; g В WinDbg предусмотрен отлов исключения при создании процесса. Только у меня не работает почему-то, может это для Kernel-mode... ----- IZ.RU ![]() |
|
Создано: 18 апреля 2011 10:20 · Личное сообщение · #8 |
|
Создано: 18 апреля 2011 16:48 · Личное сообщение · #9 |
![]() |
eXeL@B —› Вопросы новичков —› remote debugging ring 3 + ring 0 |