рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЗрдВрдЯреЗрд▓ VMX рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рддрдХрдиреАрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ
рд╕рд╛рдзрд╛рд░рдг рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░ рдмрдирд╛рдиреЗ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд╣рд▓реБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдПрдХ рдмрд▓реНрдХрд┐ рд╕рдВрдХреАрд░реНрдг рд░реВрдк рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░ рд╣реИ рдФрд░ рд░реВрд╕ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рд╕рдореБрджрд╛рдп рдирд╣реАрдВ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧреА рдЬреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдФрд░ рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдП рдмрд┐рдирд╛ рд╕рд┐рд░реНрдл рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд╣рд▓реВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ x86-64 рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ рдФрд░ рдХрдо рд╕реЗ рдХрдо VMX рддрдВрддреНрд░ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рд╣реИред
рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕реВрддреНрд░ ред
рдЪрд▓реЛ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ
- рдЕрддрд┐рдерд┐ OS рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
- рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ 4 рдЬреАрдмреА рдЕрддрд┐рдерд┐ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
- рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рдЕрддрд┐рдерд┐ OS рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдиреБрдорд╛рдирд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
- VMexits рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг
- рдкрд╣рд▓реЗ рдХрдорд╛рдВрдб рд╕реЗ рдЕрддрд┐рдерд┐ рдУрдПрд╕ рдХреЛ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
- COM рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдЖрдЙрдЯрдкреБрдЯ (рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╡рд┐рдзрд┐, рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди)
рдЕрддрд┐рдерд┐ OS рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬ 7 x32 рдЪреБрдирд╛, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдП рдЧрдП рдереЗ:
- рдХреЗрд╡рд▓ рдПрдХ рд╕реАрдкреАрдпреВ рдХреЛрд░ рд╢рд╛рдорд┐рд▓ рд╣реИ
- рдкреАрдПрдИ рд╡рд┐рдХрд▓реНрдк рдЕрдХреНрд╖рдо рд╣реИ рдЬреЛ 4 рдЬреАрдмреА рд╕реЗ рдЕрдзрд┐рдХ рдХреА рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 32-рдмрд┐рдЯ рдУрдПрд╕ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
- рд╡рд┐рд░рд╛рд╕рдд рдореЛрдб рдореЗрдВ BIOS, UEFI рдЕрдХреНрд╖рдо
рдмреВрдЯрд▓реЛрдбрд░ рдХрд╛ рд╡рд┐рд╡рд░рдг
рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░ рдХреЗ рд▓рд┐рдП рдЬрдм рдкреАрд╕реА рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЪреБрдирд╛, рдЕрд░реНрдерд╛рддреН, рдореИрдВрдиреЗ рдбрд┐рд╕реНрдХ рдХреЗ рдПрдордмреАрдЖрд░ рд╕реЗрдХреНрдЯрд░ рдореЗрдВ рдЕрдкрдиреЗ рдмреВрдЯрд▓реЛрдбрд░ рдХреЛ рд▓рд┐рдЦрд╛, рдЬрд┐рд╕ рдкрд░ рдЕрддрд┐рдерд┐ рдУрдПрд╕ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рдбрд┐рд╕реНрдХ рдкрд░ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдХреЛрдб рд░рдЦрдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореВрд▓ рдПрдордмреАрдЖрд░ 2048 рд╕реЗрдХреНрдЯрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдмреВрдЯрд▓реЛрдбрд░ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ (2047 * 512) рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдореБрдХреНрдд рдХреНрд╖реЗрддреНрд░ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдХреЗ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред
рдиреАрдЪреЗ рдбрд┐рд╕реНрдХ рдкрд░ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдХрд╛ рд▓реЗрдЖрдЙрдЯ рд╣реИ, рд╕рднреА рдорд╛рди рд╕реЗрдХреНрдЯрд░реЛрдВ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред

рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

- loader.mbr рдбрд┐рд╕реНрдХ рд╕реЗ рд▓реЛрдбрд░ рдХреЛрдб loader.main рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
- loader.main рд▓реЙрдиреНрдЧ рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд▓реЛрдбрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред рдЙрдкрдпреБрдХреНрдд рддрддреНрд╡, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдШрдЯрдХреЛрдВ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдмреВрдЯрд▓реЛрдбрд░ рджреНрд╡рд╛рд░рд╛ 0x100000000 рдкрддреЗ рдкрд░ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рдкрддреЗ рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ рддрд╛рдХрд┐ 0 рд╕реЗ 0xFFFFFFFF рддрдХ рдХреА рд╕реАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрддрд┐рдерд┐ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдореЗрдВ рдбрд╛рдпрд░реЗрдХреНрдЯ рдореИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
- рднреМрддрд┐рдХ рдкрддреЗ рдкрд░ рдореВрд▓ рд╡рд┐рдВрдбреЛрдЬ рдордм рдмреВрдЯ 0x7C00ред
рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд▓реЙрдиреНрдЧ рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдмреВрдЯрд▓реЛрдбрд░ рд╢рд╛рд░реАрд░рд┐рдХ рдбрд┐рд╕реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП BIOS рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдбрд┐рд╕реНрдХ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП "рдПрдбрд╡рд╛рдВрд╕ рд╣реЛрд╕реНрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рдЗрдВрдЯрд░рдлреЗрд╕" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХреА рдиреМрдХрд░реА рдХрд╛ рд╡рд┐рд╡рд░рдг
рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХрд╛ рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдп рдЙрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдЖрд░рдореНрдн рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
- InitLongModeGdt () - 4 рд╡рд┐рд╡рд░рдгрдХреЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ: NULL, CS64, DS64, TSS64
- InitLongModeIdt (isr_vector) - рдПрдХ рдЖрдо рд╣реИрдВрдбрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ 32 рд░реБрдХрд╛рд╡рдЯ рд╡рд╛рд▓реЗ рд╡реИрдХреНрдЯрд░ рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдЗрд╕рдХреЗ рд╕реНрдЯрдм рдХреЛ
- InitLongModeTSS () - рдХрд╛рд░реНрдп рд╕реНрдерд┐рддрд┐ рдЦрдВрдб рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ
- InitLongModePages () - рдкреЗрдЬрд┐рдВрдЧ рдХреА рд╢реБрд░реВрдЖрдд :
[0x00000000 - 0xFFFFFFFF] - рдкреГрд╖реНрда рдЖрдХрд╛рд░ 2MB, рдХреИрд╢ рдЕрдХреНрд╖рдо;
[0x100000000 - 0x13FFFFFFF] - рдкреГрд╖реНрда рдЖрдХрд╛рд░ 2 рдПрдордмреА, рдХреИрд╢ рдмреИрдХ, рдЧреНрд▓реЛрдмрд▓ рдкреЗрдЬ;
[0x140000000 - рдПрди] - рдЙрдкрд╕реНрдерд┐рдд рдирд╣реАрдВ; - InitControlAndSegmenRegs () - рдкреБрдирдГ рд▓реЛрдб рдЦрдВрдб рд░рдЬрд┐рд╕реНрдЯрд░
рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ VMX рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд╕рддреНрдпрд╛рдкрди
CheckVMXConditions () рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- CPUID.1: ECX.VMX [рдмрд┐рдЯ 5] рдХреЛ 1 рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
- MSR рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ IA32_FEATURE_CONTROL рдмрд┐рдЯ 2 рд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - SMX рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рд╣рд░ VMXON рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдмрд┐рдЯ 0 - рд▓реЙрдХ (рдмреЛрдЪ рдореЗрдВ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ)
рдпрджрд┐ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ рдФрд░ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ рдЬреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡реАрдПрдордПрдХреНрд╕ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрд░рдВрднреАрдХрд░рдг рдкрд░ рдЬрд╛рдПрдВ,
InitVMX () рдлрд╝рдВрдХреНрд╢рди рджреЗрдЦреЗрдВ:
- 4096 рдмрд╛рдЗрдЯреНрд╕ рдЖрдХрд╛рд░ рдореЗрдВ рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░ VMXON рдФрд░ VMCS (рд╡рд░реНрдЪреБрдЕрд▓-рдорд╢реАрди рдирд┐рдпрдВрддреНрд░рдг рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ) рдмрдирд╛рдПред MSR IA32_VMX_BASIC рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ VMCS рд╕рдВрд╢реЛрдзрди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдкрд╣рд▓реЗ 31 рдмрд┐рдЯреНрд╕ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ CR0 рдФрд░ CR4 рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ, рд╕рднреА рдмрд┐рдЯреНрд╕ VMX рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
- рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ VMXON рдХрдорд╛рдВрдб (рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ VMXON рдХреНрд╖реЗрддреНрд░ рдХрд╛ рднреМрддрд┐рдХ рдкрддрд╛) рджреНрд╡рд╛рд░рд╛ vmx рд░реВрдЯ рдореЛрдб рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
- VMCLEAR (VMCS) рдХрдорд╛рдВрдб VMCS рдХреА рд▓реЙрдиреНрдЪ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрджреЗрд╢ VMCS рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
- VMPTRLD (VMCS) рдХрдорд╛рдВрдб рд╡рд░реНрддрдорд╛рди VMCS рдкрддреЗ рдХреЛ рддрд░реНрдХ-рд╡рд┐рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдП рдЧрдП рд╡рд░реНрддрдорд╛рди VMCS рдкрддреЗ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
рдЕрддрд┐рдерд┐ OS рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди 0x7C00 рдкрддреЗ рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рд╣реЛрдЧрд╛, рдЬрд┐рд╕ рдкрд░ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд▓реЛрдбрд░ред рд▓реЛрдбрд░ рд▓реЛрдб рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ win7.mbrред рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдореЗрдВ mbr рдЖрдорддреМрд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ,
InitGuestRegisterState () рдлрд╝рдВрдХреНрд╢рди рдХреЛ
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ vmx рдЧреИрд░-рд░реВрдЯ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ:
CR0 = 0x10 CR3 = 0 CR4 = 0 DR7 = 0 RSP = 0xFFD6 RIP = 0x7C00 RFLAGS = 0x82 ES.base = 0 CS.base = 0 SS.base = 0 DS.base = 0 FS.base = 0 GS.base = 0 LDTR.base = 0 TR.base = 0 ES.limit = 0xFFFFFFFF CS.limit = 0xFFFF SS.limit = 0xFFFF DS.limit = 0xFFFFFFFF FS.limit = 0xFFFF GS.limit = 0xFFFF LDTR.limit = 0xFFFF TR.limit = 0xFFFF ES.access rights = 0xF093 CS.access rights = 0x93 SS.access rights = 0x93 DS.access rights = 0xF093 FS.access rights = 0x93 GS.access rights = 0x93 LDTR.access rights = 0x82 TR.access rights = 0x8B ES.selector = 0 CS.selector = 0 SS.selector = 0 DS.selector = 0 FS.selector = 0 GS.selector = 0 LDTR.selector = 0 TR.selector = 0 GDTR.base = 0 IDTR.base = 0 GDTR.limit = 0 IDTR.limit = 0x3FF
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЦрдВрдб рдбреАрдПрд╕ рдФрд░ рдИрдПрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреИрд╢ рдХрд╛ рд╕реАрдорд╛ рдХреНрд╖реЗрддреНрд░ 0xFFFFFFFF рд╣реИред рдпрд╣ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ - рдПрдХ x86 рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЛрдб рдореЗрдВ рдЦрдВрдбреЛрдВ рдХреА рд╕реАрдорд╛ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ
рдпрд╣рд╛рдБ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
Vmx рдирд╣реАрдВ-рд░реВрдЯ рдореЛрдб рдореЗрдВ, рдЕрддрд┐рдерд┐ OS рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ vmx рд░реВрдЯ рдореЛрдб рдореЗрдВ рд╣реЛрд╕реНрдЯ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╡реАрдПрдо рдПрдХреНрдЬрд┐рдЯ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди vmx рдиреЙрди-рд░реВрдЯ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдмрдЪ рдЬрд╛рддреА рд╣реИ рдФрд░ vmx-root рд▓реЛрдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред Vmx- рд░реВрдЯ рдХрд╛ рдкреНрд░рд╛рд░рдВрдн
InitHostStateArea () рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:
CR0 = 0x80000039 CR3 = PML4_addr CR4 = 0x420A1 RSP = STACK64 RIP = VMEXIT_handler ES.selector = 0x10 CS.selector = 0x08 SS.selector = 0x10 DS.selector = 0x10 FS.selector = 0x10 GS.selector = 0x10 TR.selector = 0x18 TR.base = TSS GDTR.base = GDT64 IDTR.base = IDTR
рдЕрдЧрд▓рд╛, рдЕрддрд┐рдерд┐ рднреМрддрд┐рдХ рдкрддрд╛ рд╕реНрдерд╛рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (InitEPT () рдлрд╝рдВрдХреНрд╢рди)ред рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдмрдирд╛рддреЗ рд╕рдордп рдпрд╣ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рдореЗрдореЛрд░реА рд▓реЛрдХреЗрд╢рди рдкрд░ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдХрд╛рд░ рдпрд╛ рдкреНрд░рдХрд╛рд░ рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рддреБрд░рдВрдд рдЦреБрдж рдХреЛ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдЕрддрд┐рдерд┐ рдУрдПрд╕ рдХреЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдмреНрд░реЗрдХ рдпрд╛ рдлреНрд░реАрдЬ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣рд╛рдВ рдереЛрдбрд╝рд╛ рд╕реБрдЦрдж рд╣реИ рдФрд░ рд╕реНрдореГрддрд┐ рдХреЛ рдЯреНрдпреВрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдзреНрдпрд╛рди рджреЗрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдирд┐рдореНрди рдЪрд┐рддреНрд░ рдЕрддрд┐рдерд┐ рднреМрддрд┐рдХ рдкрддрд╛ рд╕реНрдерд╛рди рдореЙрдбрд▓ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

рддреЛ рд╣рдо рдпрд╣рд╛рдБ рдХреНрдпрд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ:
- [0 - 0xFFFFFFFF] рдЕрддрд┐рдерд┐ рдкрддрд╛ рд╕реНрдерд╛рди рдХреА рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдХрд╛рд░: рд╡рд╛рдкрд╕ рд▓рд┐рдЦреЗрдВ
- [0xA0000 - 0xBFFFFF] - рд╡реАрдбрд┐рдпреЛ рд░рд╛рдоред рдкреНрд░рдХрд╛рд░: рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ
- [0xBA647000 - 0xFFFFFFFF] - рдЙрдкрдХрд░рдг рд░рд╛рдоред рдкреНрд░рдХрд╛рд░: рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ
- [0x0000000 - 0xCFFFFFFF] - рд╡реАрдбрд┐рдпреЛ рд░рд╛рдоред рдкреНрд░рдХрд╛рд░: рд╕рдВрдпреЛрдЬрди рд▓рд┐рдЦреЗрдВ
- [0xD0000000 - 0xD1FFFFFF] - рд╡реАрдбрд┐рдпреЛ рд░рд╛рдо рдкреНрд░рдХрд╛рд░: рд╕рдВрдпреЛрдЬрди рд▓рд┐рдЦреЗрдВ
- [0xFA000000 - 0xFAFFFFFF] - рд╡реАрдбрд┐рдпреЛ рд░реИрдоред рдкреНрд░рдХрд╛рд░: рд╕рдВрдпреЛрдЬрди рд▓рд┐рдЦреЗрдВ
рдореИрдВрдиреЗ RAMMap рдЙрдкрдпреЛрдЧрд┐рддрд╛ (рднреМрддрд┐рдХ рд░реЗрдВрдЬ рдЯреИрдм) рд╕реЗ рдРрд╕реЗ рдХреНрд╖реЗрддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рд▓реАред рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдбрд┐рд╡рд╛рдЗрд╕ рдореИрдиреЗрдЬрд░ рдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдмреЗрд╢рдХ, рдПрдХ рдФрд░ рдкреАрд╕реА рдкрд░, рдкрддрд╛ рдкрд░реНрд╡рддрдорд╛рд▓рд╛ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЕрддрд┐рдерд┐ рдореЗрдореЛрд░реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдкреНрд░рдХрд╛рд░ рдХреЗрд╡рд▓ рдИрдкреАрдЯреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореВрд▓реНрдп рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЬреЛ рдЕрддрд┐рдерд┐ рдУрдПрд╕ рдЕрдкрдиреЗ рдкреЗрдЬ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрддрд┐рдерд┐ рдкрддрд╛ рд╕реНрдерд╛рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк VM рдирд┐рд╖реНрдкрд╛рджрди рдирд┐рдпрдВрддреНрд░рдг рдХреНрд╖реЗрддреНрд░
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (InitExecutionControlFields () рдлрд╝рдВрдХреНрд╢рди) рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╕рдореВрд╣ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ vmx рдиреЙрдЯ-рд░реВрдЯ рдореЛрдб рдореЗрдВ рдЕрддрд┐рдерд┐ OS рдХреА рдкрд░рд┐рдЪрд╛рд▓рди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдкреЛрд░реНрдЯ рдкрд░ рдХреЙрд▓ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ MSR рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ CR0 рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдХреБрдЫ рдмрд┐рдЯреНрд╕ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ 30 (рд╕реАрдбреА) рдФрд░ 29 (рдПрдирдбрдмреНрд▓реНрдпреВ) рдмрд┐рдЯреНрд╕ vmx рдЧреИрд░-рд░реВрдЯ рдФрд░ vmx рд░реВрдЯ рдореЛрдб рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЕрддрд┐рдерд┐ OS рдЗрди рдмрд┐рдЯреНрд╕ рдХреЛ 1 рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред
рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓рдЧрднрдЧ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдЧреЗрд╕реНрдЯ рдореЛрдб vmx рдиреЙрди-рд░реВрдЯ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╣реЛрд╕реНрдЯ рдореЛрдб vmx рд░реВрдЯ рдкрд░ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИрдВ:
InmVMEntryControl ( vmx рдЧреИрд░-рд░реВрдЯ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕
) :
- рд▓реЛрдб рдЕрддрд┐рдерд┐ IA32_EFER
- рд▓реЛрдб рдЕрддрд┐рдерд┐ IA32_PAT
- рд▓реЛрдб рдЕрддрд┐рдерд┐ MSRs (IA32_MTRR_PHYSBASE0, IA32_MTRR_PHYSMASK0, IA32_MTRR_DEF_TYPE)
Vitx рд░реВрдЯ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
InitVMExitControl () рд╕реЗрдЯрд┐рдВрдЧреНрд╕:
- рд▓реЛрдб рд╣реЛрд╕реНрдЯ IA32_EFER;
- рдЕрддрд┐рдерд┐ IA32_EFER рд╕рд╣реЗрдЬреЗрдВ;
- рд▓реЛрдб рд╣реЛрд╕реНрдЯ IA32_PAT;
- рд╕реЗрд╡ рдЧреЗрд╕реНрдЯ IA32_PAT;
- Host.CS.L = 1, Host.IA32_EFER.LME = 1, Host.IA32_EFER.LMA = 1;
- рдЕрддрд┐рдерд┐ MSRs (IA32_MTRR_PHYSBASE0, IA32_MTRR_PHYSMASK0, IA32_MTRR_DEF_TYPE) рд╕рд╣реЗрдЬреЗрдВ;
- рд▓реЛрдб рд╣реЛрд╕реНрдЯ MSRs (IA32_MTRR_PHYSBASE0, IA32_MTRR_PHYSMASK0, IA32_MTRR_DEF_TYPE);
рдЕрдм рдЬрдм рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИрдВ, рддреЛ
VMLaunch () рдлрд╝рдВрдХреНрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ vmx рдиреЙрди-рд░реВрдЯ рдореЛрдб рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЕрддрд┐рдерд┐ OS рдЪрд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, vm рдирд┐рд╖реНрдкрд╛рджрди рдирд┐рдпрдВрддреНрд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░ vmx рд░реВрдЯ рдореЛрдб рдореЗрдВ рдЦреБрдж рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд▓реМрдЯрд╛рдПрдЧрд╛ред рдЕрдкрдиреЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рдЕрддрд┐рдерд┐ рдУрдПрд╕ рдХреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдкреВрд░реА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рджреЗрддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░ рдХреЛ рдЕрднреА рднреА рдУрдПрд╕ рдХреЛ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдФрд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
- рдпрджрд┐ рдЕрддрд┐рдерд┐ OS CR0 рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╡реАрдПрдо рдПрдХреНрдЬрд┐рдЯ рд╣реИрдВрдбрд▓рд░ рд╕реАрдбреА рдФрд░ рдПрдирдбрдмреНрд▓реНрдпреВ рдмрд┐рдЯреНрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ
CR0 рдореЗрдВ рджрд░реНрдЬ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ рд╕рд╣реА рдХрд░рддрд╛ рд╣реИред CR0 рд░реАрдб рд╢реИрдбреЛ рдлрд╝реАрд▓реНрдб рдХреЛ рднреА рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ CR0 рдкрдврд╝рддреЗ рд╕рдордп рдЕрддрд┐рдерд┐ OS рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗред - Xsetbv рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ред рдпрд╣ рдХрдорд╛рдВрдб рд╣рдореЗрд╢рд╛ рд╡реАрдПрдо рдПрдХреНрдЬрд┐рдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдмрд╕ vmx рд░реВрдЯ рдореЛрдб рдореЗрдВ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЬреЛрдбрд╝рд╛ред
- рдХреНрдпреВрдкрд┐рдб рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ред рдпрд╣ рдХрдорд╛рдВрдб рдмрд┐рдирд╛ рд╢рд░реНрдд рд╡реАрдПрдо рдПрдХреНрдЬрд┐рдЯ рдХреЛ рднреА рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ред рдпрджрд┐ рдИрдПрдХреНрд╕рдПрдХреНрд╕ рддрд░реНрдХ рдореЗрдВ рдорд╛рди 0x80000002 - 0x80000004 рд╣реИрдВ, рддреЛ рд╕реАрдкреАрдпреВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдмреНрд░рд╛рдВрдб рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рд▓реМрдЯрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд▓рд╛рдЗрди: рд╡реАрдПрдордПрдХреНрд╕ рд╕реНрдЯрдбреА рдХреЛрд░ :) рдкрд░рд┐рдгрд╛рдо рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдкрд░рд┐рдгрд╛рдо
рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдЕрддрд┐рдерд┐ рдУрдПрд╕ рдХреЗ рд╕реНрдерд┐рд░ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдХреНрд╖рдо рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдПрдХ рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдЗрдВрдЯреЗрд▓ VT-d рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд░рд┐рдзреАрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд░реБрдХрд╛рд╡рдЯ рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдкрд░ рдХреЛрдИ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдЙрдкрдХрд░рдг рдХреЗ рд╕рдореГрджреНрдз рд╕реЗрдЯ рд╕реЗ рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ рдЬреЛ рдЗрдВрдЯреЗрд▓ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рд╕рдореБрджрд╛рдп рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореИрдВ рдЗрдВрдЯреЗрд▓ VMX рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред
рд╣рд╛рдВ, рдореИрдВ рд▓рдЧрднрдЧ рднреВрд▓ рдЧрдпрд╛, рдмреЛрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдФрд░ рдЙрд╕рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЙрдкрдХрд░рдг рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, Bochs рдореЗрдВ рдПрдХ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдПрдХ рднреМрддрд┐рдХ рдкреАрд╕реА рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдПрдХ рд╕рдордп рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрд╕реЗрдВрдмрд▓реА рдмрдирд╛рдИ, рдореИрдВ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдХреНрд░рдо рдореЗрдВ рд░рдЦрдиреЗ рдФрд░ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рд╡рд╣ рд╕рдм рд╣реИред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред