Floating point instruction virtualization error

Hi,

I was testing latest version of VMProtect (3.0.2.470) and it seems that it cannot virtualize fldcw instruction. What’s interesting its counterpart fstcw compiles without problems.

Here’s a minimal sample to reproduce this issue (compile using VS):

__declspec(noinline) void vmProtectionFailureTest()
{
	unsigned short cw;
	__asm
	{
		fstcw cw
		fldcw cw
	}
}

int main()
{
	vmProtectionFailureTest();
	return 0;
}

Protection settings and compilation log:

Thank you for your report. We’ll fix it in next build.

Wow… so much to learn!

Thanks for fixing this issue in 3.0.3.481. Unfortunately I’ve found another corner case for virtualization:

Again it’s suprising that complementary pushad is handled properly but popad is not.

Thank you for your report.