Эта функция может использоваться для определения того, работает ли программа с виртуального компьютера

  

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;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить