R0 CREW

Linux+VMware+WinDbg: Отладка одной виртуальной машины из другой виртуальной машины

Intro

На момент написания этой заметки мы производим перевод курса, посвященного реверсу руткита Max++. Для успешного прохождения данного курса, требуется как минимум одна хостовая система с ОС Windows XP, одна виртуальная машина, также c OC Windows XP и отладчик WinDbg.

Учитывая тот факт, что многие из наших посетителей сейчас либо сидят, либо задумываются о миграции на Linux, не может не возникать вопрос:

Можно ли отлаживать при помощи одной виртуальной машины Windows, другую виртуальную машину Windows?

Этот же вопрос, в свое время задавал себе и я. И ответом на него будет твердое «ДА». Отлаживать одну виртуальную машину, использую для этого другую - можно! Как это сделать я опишу ниже. Так как в качестве виртуальной среды я всегда использую продукты VMware, то и рецепт будет для виртуальных машин VMware.

1. Подготовка

Итак, начнем. Для нашей демонстрации, нам понадобится:

  • VMware
  • Виртуальная машина Windows XP #1 (далее именуемая Host XP)
  • Виртуальная машина Windows XP #2 (далее именуемая Guest XP)

Если все это есть, переходим к настройке.

2. Настройка образов

Вначале подготовим образы (конфиги) виртуальных машин. Нам нужно связать между собой виртуальные машины при помощи «именованного канала» (pipe), в Linux версии VMware это именуется «сокетом» (socket).

2.1. Настройка Guest XP

Зайдите в настройки виртуальной машины Guest XP (Рис. 1).

Рис. 1. Окно настроек виртуальной машины

Нажмите «Add». В появившемся окне (Рис. 2) выберите «Serial Port».

Рис. 2. Окно выбора типа добавляемого устройства

Затем в следующем окне (Рис. 3) выберите «Output to socket».

Рис. 3. Выбор типа интерфейса

Далее в следующем окне (Рис. 4) установите:

  • Socket: /tmp/windbg
  • From: Server
  • To: A Virtual Machine

Рис. 4. Настройки сокета для Guest XP

После того, как нажмете «Finish», в окне настроек (Рис. 5) виртуальной машины появится добавленный «Serial Port». У меня это «Serial Port 2». В свое время, он мне доставил одну проблему… Я по привычке юзал COM1, вместо требуемого в моем случае COM2. Так что будьте внимательней :wink:

Рис. 5. Окно настроек виртуальной машины

Последнее, что нам нужно тут сделать - это установить флажок «Yield CPU on poll».

2.2. Настройка Host XP

Настройка Host XP практически идентична настройке Guest XP, за исключением двух деталей.

  1. Когда дойдете до (Рис. 4), то в поле «From» вместо «Server» выберите «Client» (Рис. 6).
  2. Для Host XP, в настройках «Serial Port» не устанавливайте флажок «Yield CPU on poll».

Рис. 6. Настройки сокета для Host XP

3. Настройка внутренней среды виртуальных машин

Теперь, когда образы готовы, приступим к их внутренней настройке.

3.1 Guest XP

  1. Запустите Guest XP.
  2. Добавьте дополнительную опцию загрузки в файл boot.ini. Например, у меня он выглядит так:
[boot loader]
timeout=5
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
[B]multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional - DEBUGGED" /noexecute=optin /fastdetect /sos /bootlog /debug /debugport=com2 /baudrate=115200[/B]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

Где: «/sos» - отвечает за отображение загружаемых драйверов, во время загрузки ОС; «/bootlog» - активизирует протоколирование загрузки ОС в файл «%SYSTEMROOT%\NTBTLOG.txt»; «/debug» - переводит ОС в отладочный режим; «/debugport» - устанавливает COM-порт, через который будет вестись отладка, у меня он равен «COM2», у вас он может быть «COM1» (смотрите на префикс «Serial Port», Рис. 5), «/baudrate» - устанавливает скорость передачи информации, в нашем случае устанавливается максимая скорость, для COM-порта, в 115200 бит/с.

  1. Выключите Guest XP.

3.2 Host XP

  1. Запустите Host XP.
  2. Установите WinDbg.
  3. В ярлыке, запуска WinDbg (Рис. 7), в поле «Target», пропишите следующие настройки:
C:\PATH\windbg.exe -b -k com:port=com2,baud=115200 -y SRV*C:\Symbols\SP3*[url]http://msdl.microsoft.com/download/symbols[/url]

Рис. 7. Настройки ярлыка WinDbg

Где: «C:\PATH\windbg.exe» - путь к WinDbg; «-b» - отвечает за остановку отлаживаемой ОС при подключении отладчика; «-k com:port=com2,baud=115200» - устанавливает настройки COM-порта и скорость передачи информации (обратите особое внимание на эту строчку, в ней мы устанавливаем COM-порт, а не pipe); «SRVC:\Symbols\SP3http://msdl.microsoft.com/download/symbols» - устанавливает путь к «Символам» (Symbols) требуемых для отладки.

На этом настройка Host XP - закончена. Приступаем к тестированию нашей среды.

4. Тестирование отладочной среды

Тут все предельно просто:

  1. На Host XP запустите WinDbg (через настроенный нами ярлык).
  2. Далее запустите Guest XP.
  3. Ожидайте.
  4. Если все следано правильно, то в окне WinDbg должна отобразиться примерно следующая информация (Рис. 8):

Рис. 8. Окно WinDbg

На этом наша настройка закончена.

Успехов!

© Prosper-H (r0 Crew)

Для QEMU KVM еще надо попробовать сделать:-)

very informative thread
keep the good work and thank you for this