Сейчас на форуме: igorcauret, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Microsoft Virtual PC 2007 SP1. Опкод 0F 3F . Где обработчик исключений?
Посл.ответ Сообщение

Ранг: 6.8 (гость), 1thx
Активность: 0.020
Статус: Участник

Создано: 26 февраля 2015 19:45
· Личное сообщение · #1

Microsoft Virtual PC 2007 SP1
http://www.microsoft.com/en-us/download/details.aspx?id=24439

Жесткий диск можно взять отсюда : http://www.microsoft.com/en-us/download/confirmation.aspx?id=11575
, но запускать гостевую ОС надо в безопасном режиме, т.к. уже истек испытательный срок.

Есть статья http://www.symantec.com/avcenter/reference/Virtual_Machine_Threats.pdf , но из нее ничего не ясно.
Whereas VMware uses a special port to perform guest-to-
host and host-to-guest communication, VirtualPC relies on the
execution of illegal opcodes to raise exceptions that the kernel
will catch. This method is very similar to the illegal opcode
execution that Windows NT and later operating systems use in
their DOS box to communicate with the operating system. By
reverse-engineering the VirtualPC executable file, the author
found that the opcodes are the following:

0F 3F x1 x2
0F C7 C8 y1 y2

In ordinary circumstances, execution of these opcodes
causes an exception to be generated. The 0F 3F opcode causes
an exception because it is an otherwise undefined opcode.
The 0F C7 C8 opcode causes an exception because it is an
illegal encoding of an existing opcode. This exception can be
trapped by an application. However, if VirtualPC is running,
no exception is generated, depending on the values of x1, x2,
y1, and y2.

The full list of allowed values for x1 and x2 is not known.
However, the BIOS code in VirtualPC uses the values 0A 00,
11 00, 11 01, and 11 02. The file-sharing module that can be
installed uses value 02 followed by 01-13, and 07 0b. These
appear to be examples of guest-to-host communication. An
example of host-to-guest communication is given in the
following: if x1 is 03 and x2 is 00, then the current host time
(in hour:minute:second notation) is placed into the DX, CX,
and AX, registers respectively (see VIRTUALPC TIME
demo). Other values for x1 and x2, such as 02 00, return
other values in the CPU registers. The values 10 01-03 and 10
06 alter the Z flag. The IsRunningInsideVirtualMachine()
API uses the value 07 0B.


Делались попытки споймать GetLocalTime при выполнении 0f 3f 03 00 на гостевой ОС, но никакого времени никуда не передается (оно якобы должно передаваться согласно VIRTUALPC TIME ), исключение перехватывается внутри гостевой ОС.

Подскажите, где в файле \Program Files\Microsoft Virtual PC\Virtual PC.exe обработчик этого опкода 0F 3F , который перехватывает обработчик на гостевой ОС.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 26 февраля 2015 19:51
· Личное сообщение · #2

накой это надо когда есть vbox или qemu с открытым кодом



Ранг: 6.8 (гость), 1thx
Активность: 0.020
Статус: Участник

Создано: 26 февраля 2015 20:54
· Личное сообщение · #3

vbox пробовался, но не произвел впечатления (что-то не пошло)


 eXeL@B —› Вопросы новичков —› Microsoft Virtual PC 2007 SP1. Опкод 0F 3F . Где обработчик исключений?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати