Эта функция может использоваться для определения того, работает ли программа с виртуального компьютера
Code: |
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; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!