![]() |
![]() ![]() ![]() ![]() |
|
Определить, что программа запущена в пространстве VMwareDelphi , Программа и Интерфейс , Приложение своёОпределить, что программа запущена в пространстве VMware
Оформил: DeeCo
////////////////////////////////////////////////////////////////////////////////
//
// Simple VMware check on i386
//
// Note: There are plenty ways to detect VMware. This short version bases
// on the fact that VMware intercepts IN instructions to port 0x5658 with
// an magic value of 0x564D5868 in EAX. However, this is *NOT* officially
// documented (used by VMware tools to communicate with the host via VM).
//
// Because this might change in future versions - you should look out for
// additional checks (e.g. hardware device IDs, BIOS informations, etc.).
// Newer VMware BIOS has valid SMBIOS informations (you might use my BIOS
// Helper unit to dump the ROM-BIOS (http://www.bendlins.de/nico/delphi).
//
function IsVMwarePresent(): LongBool; stdcall; // platform;
begin
Result := False;
{$IFDEF CPU386}
try
asm
mov eax, 564D5868h
mov ebx, 00000000h
mov ecx, 0000000Ah
mov edx, 00005658h
in eax, dx
cmp ebx, 564D5868h
jne @@exit
mov Result, True
@@exit:
end;
except
Result := False;
end;
{$ENDIF}
end;
Перевод контента на русский язык: Функция Delphi для проверки, запущена ли программа в окружении виртуальной машины VMware. Функция использует специфический метод обнаружения VMware, интерпретируя инструкции IN к порту 0x5658 и проверяя значение EAX на магическое значение 0x564D5868. Расшифровка кода:
Обратите внимание, что данный метод обнаружения не является официально документированным VMware и может измениться в будущих версиях. Поэтому рекомендуется использовать дополнительные проверки (например, идентификаторы устройств, информация о BIOS) для увеличения надежности обнаружения. Чтобы запустить этот код, вам нужно будет иметь компилятор Delphi и платформу x86 (i386). Вы можете вызвать функцию Программа запускается в пространстве VMware, если она использует интерцептация инструкций IN для порта 0x5658 с магическим значением 0x564D5868 в регистре EAX. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Приложение своё ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||