PPLGuard/exploit.h (32 lines of code) (raw):
#pragma once
#include "utils.h"
#include "resource.h"
#include <versionhelpers.h>
#include <aclapi.h>
#define PPL_BINARY L"services.exe"
#define DLL_TO_HIJACK_WIN81 L"SspiCli.dll"
#define DLL_TO_HIJACK_WIN10 L"EventAggregation.dll"
#ifndef STATUS_INFO_LENGTH_MISMATCH
#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004L)
#endif
extern BOOL g_bVerbose;
extern BOOL g_bDebug;
extern BOOL g_bForce;
extern BOOL g_bHardenAMPPLOnly;
_Success_(return) BOOL HardenKnownDlls();
_Success_(return) BOOL CheckRequirements();
_Success_(return) BOOL IsCurrentUserSystem(_Out_ PBOOL pbResult);
_Success_(return) BOOL GetHijackableDllName(_Out_ LPWSTR* ppwszDllName);
//_Success_(return) BOOL WritePayloadDll(_In_ LPWSTR pwszPath);
_Success_(return) BOOL GetPayloadDll(_Out_ LPVOID* ppBuffer, _Out_ PDWORD pdwSize);
_Success_(return) BOOL FindFileForTransaction(_In_ DWORD dwMinSize, _Out_ LPWSTR* ppwszFilePath);
_Success_(return) BOOL WritePayloadDllTransacted(_Out_ PHANDLE pdhFile);
_Success_(return) BOOL FindProcessTokenAndDuplicate(_In_ LPCWSTR pwszTargetSid, _Out_ PHANDLE phToken, _In_opt_ LPCWSTR pwszPrivileges[], _In_ DWORD dwPrivilegeCount);
_Success_(return) BOOL Impersonate(_In_ HANDLE hToken);
_Success_(return) BOOL ImpersonateUser(_In_ LPCWSTR pwszSid, _Out_ PHANDLE phToken, _In_opt_ LPCWSTR pwszPrivileges[], _In_ DWORD dwPrivilegeCount);
_Success_(return) BOOL ImpersonateSystem(_Out_ PHANDLE phSystemToken);
_Success_(return) BOOL ImpersonateLocalService(_Out_ PHANDLE phLocalServiceToken);
_Success_(return) BOOL CheckKnownDllSymbolicLink(_In_ LPCWSTR pwszDllName, _In_ LPWSTR pwszTarget);
_Success_(return) BOOL MapDll(_In_ LPWSTR pwszSectionName, _Out_ PHANDLE phSection);
_Success_(return) BOOL UnmapDll(_In_ HANDLE hSection);
_Success_(return) BOOL PrepareCommandLine(_In_ LPWSTR pwszRandomGuid, _Out_ LPWSTR* ppwszCommandLine);
_Success_(return) BOOL CreateProtectedProcessAsUser(_In_ HANDLE hToken, _In_ LPWSTR pwszCommandLine, _Out_ PHANDLE phProcess);