Отладка ядра Windows из Linux
Я использовал для отладки ядра Windows с помощью VirtualKD, WinDBG и одной виртуальной машины.
Недавно я получил машину Linux, и теперь мне интересно. Какой самый простой способ отладить ядро Windows, когда ваш хост не может запустить VirtualKD/WinDBG *?
Я предполагаю, что для решения потребуются две виртуальные машины, но у меня есть два экземпляра, размещенных на моей реальной машине, а не экземпляр, находящийся внутри другого виртуального экземпляра...
В любом случае, чтобы выполнить эту работу?
Спасибо заранее!
* Вино - последнее средство по причинам стабильности...
Ответы
Ответ 1
Решено! В основном, я закончил использование двух (VirtualBox) виртуальных машин, эмулирующих последовательное соединение (нуль-модемный кабель) через сокет Unix (на хосте). Для получения дополнительной информации прочитайте ниже:
Настройка оборудования *:
- отлаживаемый:
- Убедитесь, что устройство выключено и отредактировано Последовательные порты.
- Включить Порт 1 и присвоить значения следующим образом: Номер порта: COM1, Режим порта: Хост-труба, Создать трубку: Непроверено (клиент), Путь к портам/файлу: /tmp/win_link.
- Debugger:
- То же, что и выше (используя тот же путь), только на этот раз Create Pipe должен быть проверено (сервер).
Настройка отладчика:
- Запустите WinDBG и нажмите Ctrl + K, чтобы вызвать Отладка ядра.
- в COM, введите: Baudrate: 115200, Port: COM1, Сброс: 0 и убедитесь, что Труба и Повторное подключение не отмечено (важно).
- Вам будет представлен следующий вывод:
Opened \\\\.\com1 Waiting to reconnect...
Настройка Debuggee:
- Запустите bootcfg/debug on/port com1/baud 115200/id 1. Чтобы проверить, запустите bootcfg. **
- Reboot.
- Довольно рано на этапе загрузки WinDBG на другом компьютере должен обнаружить, что debuggee запущен.
* Предполагается использование VirtualBox. Пользователи VMWare/KVM, вероятно, смогут достичь тех же результатов после аналогичных шагов. Кроме того, для получения дополнительной информации см. Документы VirtualBox.
** Предполагая, что гости - Windows XP. Более поздние версии включают bcdedit, которые можно использовать, как описано здесь.
Ответ 2
Для QEMU\KVM следуйте этим инструкциям:
http://www.linux-kvm.org/page/WindowsGuestDrivers/GuestDebugging
Ответ 3
Очень полезно, но относится к машинам Windows XP. Вы можете обратиться к следующей ссылке, если вам нужно настроить 2 виртуальных машины на базе Windows7 на хосте Linux: http://www.aldeid.com/wiki/Category:Digital-Forensics/Computer-Forensics/Debugger/Kernel
Ответ 4
Еще один вариант - включить локальную отладку ядра. Это связано с некоторыми ограничениями, однако оно позволит вам получить доступ к данным ядра, используя только одну виртуальную машину.
Этот подход работает только в Windows 8.0 и Windows Server 2012 и более поздних версиях.
Выполните следующие действия:
- Откройте окно командной строки в качестве администратора.
- Введите
bcdedit /debug on
- Если компьютер еще не настроен в качестве цели отладки транспорта, введите
bcdedit /dbgsettings local
- Перезагрузите компьютер.
После перезагрузки системы вы можете выполнить WinDBG
как Administrator
, нажмите ctrl+k
или перейдите к File -> Attach to kernel -> Local
и нажмите OK.
![Прикрепить к варианту ядра]()
В этот момент вы сможете выполнять команды только для ядра и обращаться к структурам ядра:
![введите описание изображения здесь]()
Протестировано под Windows 10 и с новой версией WinDBG (предварительный просмотр).
Ссылка: Настройка локальной отладки ядра одного компьютера вручную