Hi all,
I'm having a problem converting an inline assembler function to .asm file. I need seperate inline assembler code because in x64 architecture doesn't have support for inline assembly. Here is the code(and attached as a txt file IsVM.txt at the bottom),
#include <windows.h>
#include <string>
#include <iostream>
#include <tlhelp32.h>
using namespace std;
int filter(int code)
{
if (code == EXCEPTION_PRIV_ INSTRUCTION)
{
return EXCEPTION_EXECU TE_HANDLER;
}
else
{
return EXCEPTION_CONTI NUE_SEARCH;
}
}
bool IsInsideVMWare( void)
{
bool rc = true;
__try
{
__asm
{
push edx
push ecx
push ebx
mov eax, 'VMXh'
mov ebx, 0 // any value but not the MAGIC VALUE
mov ecx, 10 // get VMWare version
mov edx, 'VX' // port number
in eax, dx // read port
// on return EAX returns the VERSION
cmp ebx, 'VMXh' // is it a reply from VMWare?
setz [rc] // set return value
pop ebx
pop ecx
pop edx
}
}
__except(filter (GetExceptionCo de()))
{
rc = false;
}
return rc;
}
int main()
{
if(IsInsideVMWa re())
cout << "You are in a VMware.." << endl;
else
cout << "You are in a native system.."<< endl;
system("PAUSE") ;
return 0;
}
Any idea how to convert and link to my cpp file? Thanks from now.
T H K
I'm having a problem converting an inline assembler function to .asm file. I need seperate inline assembler code because in x64 architecture doesn't have support for inline assembly. Here is the code(and attached as a txt file IsVM.txt at the bottom),
#include <windows.h>
#include <string>
#include <iostream>
#include <tlhelp32.h>
using namespace std;
int filter(int code)
{
if (code == EXCEPTION_PRIV_ INSTRUCTION)
{
return EXCEPTION_EXECU TE_HANDLER;
}
else
{
return EXCEPTION_CONTI NUE_SEARCH;
}
}
bool IsInsideVMWare( void)
{
bool rc = true;
__try
{
__asm
{
push edx
push ecx
push ebx
mov eax, 'VMXh'
mov ebx, 0 // any value but not the MAGIC VALUE
mov ecx, 10 // get VMWare version
mov edx, 'VX' // port number
in eax, dx // read port
// on return EAX returns the VERSION
cmp ebx, 'VMXh' // is it a reply from VMWare?
setz [rc] // set return value
pop ebx
pop ecx
pop edx
}
}
__except(filter (GetExceptionCo de()))
{
rc = false;
}
return rc;
}
int main()
{
if(IsInsideVMWa re())
cout << "You are in a VMware.." << endl;
else
cout << "You are in a native system.."<< endl;
system("PAUSE") ;
return 0;
}
Any idea how to convert and link to my cpp file? Thanks from now.
T H K
Comment