Mega Code Archive

 
Categories / Delphi / System
 

Determine if you are running inside Virtual PC

Title: Determine if you are running inside Virtual PC? { This function can be used to determine whether your program is running from within Connectrix's Virtual PC } function running_inside_vpc: boolean; assembler; asm push ebp mov ecx, offset @@exception_handler mov ebp, esp push ebx push ecx push dword ptr fs:[0] mov dword ptr fs:[0], esp mov ebx, 0 // flag mov eax, 1 // VPC function number // call VPC db 00Fh, 03Fh, 007h, 00Bh mov eax, dword ptr ss:[esp] mov dword ptr fs:[0], eax add esp, 8 test ebx, ebx setz al lea esp, dword ptr ss:[ebp-4] mov ebx, dword ptr ss:[esp] mov ebp, dword ptr ss:[esp+4] add esp, 8 jmp @@ret @@exception_handler: mov ecx, [esp+0Ch] mov dword ptr [ecx+0A4h], -1 // EBX = -1 - not running, ebx = 0 - running add dword ptr [ecx+0B8h], 4 // - skip past the detection code xor eax, eax // exception is handled ret @@ret: end;