Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 32 additions & 31 deletions src/vmaware.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -752,7 +752,7 @@ struct VM {

// basically checks whether all the techniques were cached
static bool all_present() {
return (cache_table.size() == (enum_size - 4)); // 4 are non-technique flags
return (cache_table.size() == (static_cast<unsigned long long>(enum_size) - 4)); // 4 are non-technique flags
}
};

Expand Down Expand Up @@ -2832,17 +2832,18 @@ struct VM {
return false;
#else
u32 pnsize = 0x1000;
TCHAR* provider = new TCHAR[pnsize];

u32 retv = WNetGetProviderName(WNNC_NET_RDR2SAMPLE, provider, reinterpret_cast<LPDWORD>(&pnsize));

if (retv == NO_ERROR) {
bool result = (lstrcmpi(provider, _T("VirtualBox Shared Folders")) == 0);
delete provider;
return result;
}

return false;
TCHAR* provider = new TCHAR[pnsize];

u32 retv = WNetGetProviderName(WNNC_NET_RDR2SAMPLE, provider, reinterpret_cast<LPDWORD>(&pnsize));

if (retv == NO_ERROR) {
bool result = (lstrcmpi(provider, _T("VirtualBox Shared Folders")) == 0);
delete[] provider;
return result;
}

delete[] provider;
return false;
#endif
}
catch (...) {
Expand Down Expand Up @@ -4851,28 +4852,28 @@ struct VM {
return false;
}

u8 idtr[6];
u32 idt_entry = 0;
u8 idtr[10]{};
u32 idt_entry = 0;

#if (MSVC)
#if (x86_32)
#if (x86_32)
_asm sidt idtr
#elif (x86)
#pragma pack(1)
#elif (x86)
#pragma pack(1)
struct IDTR {
u16 limit;
u64 base;
};
#pragma pack()
#pragma pack()

IDTR idtrStruct;
__sidt(&idtrStruct);
std::memcpy(idtr, &idtrStruct, sizeof(IDTR));
#else
#else
return false;
#endif
#endif

idt_entry = *((unsigned long*)&idtr[2]);
idt_entry = *reinterpret_cast<unsigned long*>(&idtr[2]);
#elif (LINUX)
// false positive with root for some reason
if (util::is_admin()) {
Expand All @@ -4888,7 +4889,7 @@ struct VM {

__asm__ __volatile__(
"sidt %0"
: "=m" (idtr)
: "=m" (idtr_struct)
);

std::ifstream mem("/dev/mem", std::ios::binary);
Expand All @@ -4906,7 +4907,7 @@ struct VM {
return false;
}
catch (...) {
debug("SIDT: ", "catched error, returned false");
debug("SIDT: ", "caught error, returned false");
return false;
}

Expand Down Expand Up @@ -4952,7 +4953,7 @@ struct VM {
#if (!MSVC || !x86)
return false;
#elif (x86_32)
u8 gdtr[6];
u8 gdtr[6]{};
u32 gdt = 0;

_asm sgdt gdtr
Expand Down Expand Up @@ -5139,7 +5140,7 @@ struct VM {
#if (!MSVC || !x86)
return false;
#elif (x86_32)
unsigned char m[6];
unsigned char m[6]{};
__asm sidt m;
return (m[5] > 0xD0);
#else
Expand Down Expand Up @@ -5167,7 +5168,7 @@ struct VM {
#if (!MSVC || !x86)
return false;
#elif (x86_32)
unsigned char m[6];
unsigned char m[6]{};
__asm sgdt m;
return (m[5] > 0xD0);
#else
Expand Down Expand Up @@ -5195,7 +5196,7 @@ struct VM {
#if (!MSVC || !x86)
return false;
#elif (x86_32)
unsigned short m[6];
unsigned short m[6]{};
__asm sldt m;
return (m[0] != 0x00 && m[1] != 0x00);
#else
Expand All @@ -5222,7 +5223,7 @@ struct VM {
#if (!MSVC || !x86)
return false;
#elif (x86_32)
u8 idtr[6];
u8 idtr[6]{};
u32 idt = 0;

_asm sidt idtr
Expand Down Expand Up @@ -5722,7 +5723,7 @@ struct VM {
u8 extmodel;
};

struct stepping_struct steps;
struct stepping_struct steps {};

u32 unused, eax = 0;
cpu::cpuid(eax, unused, unused, unused, 1);
Expand Down Expand Up @@ -5801,7 +5802,7 @@ struct VM {
constexpr u8 EXTMODEL = 1;
constexpr u8 MODEL = 2;

for (const auto arch : old_archs) {
for (const auto& arch : old_archs) {
if (
steps.family == arch.at(FAMILY) &&
steps.extmodel == arch.at(EXTMODEL) &&
Expand Down Expand Up @@ -6465,4 +6466,4 @@ const std::map<VM::u8, VM::core::technique> VM::core::table = {
// __TABLE_LABEL, add your technique above
// { VM::FUNCTION, { POINTS, FUNCTION_POINTER }}
// ^ template
};
};