#define WIN32_LEAN_AND_MEAN

#include <windows.h>
#include <tchar.h>
#include <sddl.h>

extern "C" __declspec(dllexport) VOID WhereAmI()
{
	DWORD dwSize;
	HANDLE hToken;
	PTOKEN_MANDATORY_LABEL ptml;
	LPWSTR szSid;

	OpenProcessToken(
		GetCurrentProcess(),
		TOKEN_QUERY,
		&hToken);

	GetTokenInformation(
		hToken,
		TokenIntegrityLevel,
		NULL,
		0,
		&dwSize);

	ptml = (PTOKEN_MANDATORY_LABEL)HeapAlloc(
		GetProcessHeap(),
		HEAP_ZERO_MEMORY,
		dwSize);

	GetTokenInformation(
		hToken,
		TokenIntegrityLevel,
		ptml,
		dwSize,
		&dwSize);

	ConvertSidToStringSid(
		ptml->Label.Sid,
		&szSid);

	#pragma region Under the carpet

	if(wcsicmp(szSid, L"S-1-16-4096") == 0) {
		MessageBox( NULL, _T("Hello. I live in Low Mandatory Level."), _T("The cake is a lie."), MB_ICONINFORMATION );
	} else if(wcsicmp(szSid, L"S-1-16-8192")  == 0) {
		MessageBox( NULL, _T("Hello. I live in Medium Mandatory Level."), _T("The cake is a lie, kinda."), MB_ICONINFORMATION );
	} else if(wcsicmp(szSid, L"S-1-16-12288") == 0) {
		MessageBox( NULL, _T("Hello. I live in High Mandatory Level."), _T("The cake is not a lie!"), MB_ICONINFORMATION );
	} else if(wcsicmp(szSid, L"S-1-16-16384") == 0) {
		MessageBox( NULL, _T("Hello. I live in System Mandatory Level."), _T("Cheater. You used noclip to find the cake."), MB_ICONINFORMATION );
	} else {
		MessageBox( NULL, _T("Something went wrong."), _T("Blame Sinofsky."), 0 );
	}

	#pragma endregion

	HeapFree(GetProcessHeap(), 0, (LPVOID)ptml);
	LocalFree(szSid);
}

