BlackLotus/src/Shared/kernel32_functions.h

396 lines
9.5 KiB
C

#ifndef __KERNEL32_FUNCTIONS_H__
#define __KERNEL32_FUNCTIONS_H__
#include <Windows.h>
#include <TlHelp32.h>
typedef LPVOID(WINAPI* ptVirtualAlloc)(
_In_opt_ LPVOID lpAddress,
_In_ SIZE_T dwSize,
_In_ DWORD flAllocationType,
_In_ DWORD flProtect
);
typedef HANDLE(WINAPI* ptOpenProcess)(
_In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle,
_In_ DWORD dwProcessId
);
typedef BOOL(WINAPI* ptProcess32FirstW)(
_In_ HANDLE hSnapshot,
_Out_ LPPROCESSENTRY32W lppe
);
typedef BOOL(WINAPI* ptProcess32NextW)(
_In_ HANDLE hSnapshot,
_Out_ LPPROCESSENTRY32W lppe
);
typedef BOOL(WINAPI* ptWriteProcessMemory)(
_In_ HANDLE hProcess,
_In_ LPVOID lpBaseAddress,
_In_ LPCVOID lpBuffer,
_In_ SIZE_T nSize,
_Out_ SIZE_T *lpNumberOfBytesWritten
);
typedef LPVOID(WINAPI* ptVirtualAllocEx)(
_In_ HANDLE hProcess,
_In_opt_ LPVOID lpAddress,
_In_ SIZE_T dwSize,
_In_ DWORD flAllocationType,
_In_ DWORD flProtect
);
typedef BOOL(WINAPI* ptVirtualFree)(
_In_ LPVOID lpAddress,
_In_ SIZE_T dwSize,
_In_ DWORD dwFreeType
);
typedef BOOL(WINAPI* ptVirtualFreeEx)(
_In_ HANDLE hProcess,
_In_ LPVOID lpAddress,
_In_ SIZE_T dwSize,
_In_ DWORD dwFreeType
);
typedef BOOL(WINAPI* ptSetThreadContext)(
_In_ HANDLE hThread,
_In_ const CONTEXT *lpContext
);
typedef HANDLE(WINAPI* ptCreateRemoteThread)(
_In_ HANDLE hProcess,
_In_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ SIZE_T dwStackSize,
_In_ LPTHREAD_START_ROUTINE lpStartAddress,
_In_ LPVOID lpParameter,
_In_ DWORD dwCreationFlags,
_Out_ LPDWORD lpThreadId
);
typedef BOOL(WINAPI* ptCloseHandle)(
_In_ HANDLE hObject
);
typedef HANDLE(WINAPI* ptCreateToolhelp32Snapshot)(
_In_ DWORD dwFlags,
_In_ DWORD th32ProcessID
);
typedef BOOL(WINAPI* ptCreateProcessW)(
_In_opt_ LPCWSTR lpApplicationName,
_Inout_opt_ LPWSTR lpCommandLine,
_In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ BOOL bInheritHandles,
_In_ DWORD dwCreationFlags,
_In_opt_ LPVOID lpEnvironment,
_In_opt_ LPCWSTR lpCurrentDirectory,
_In_ LPSTARTUPINFOW lpStartupInfo,
_Out_ LPPROCESS_INFORMATION lpProcessInformation
);
typedef BOOL(WINAPI* ptVirtualProtect)(
_In_ LPVOID lpAddress,
_In_ SIZE_T dwSize,
_In_ DWORD flNewProtect,
_Out_ PDWORD lpflOldProtect
);
typedef VOID(WINAPI* ptExitProcess)(
_In_ UINT uExitCode
);
typedef DWORD(WINAPI* ptGetModuleFileNameW)(
_In_opt_ HMODULE hModule,
_Out_writes_to_(nSize, ((return < nSize) ? (return +1) : nSize)) LPWSTR lpFilename,
_In_ DWORD nSize
);
typedef BOOL(WINAPI* ptDeleteFileW)(
_In_ LPCWSTR lpFileName
);
typedef VOID(WINAPI* ptSleep)(
_In_ DWORD dwMilliseconds
);
typedef HMODULE(WINAPI* ptLoadLibraryW)(
_In_ LPCWSTR lpLibFileName
);
typedef BOOL(WINAPI* ptIsWow64Process)(
_In_ HANDLE hProcess,
_Out_ PBOOL Wow64Process
);
typedef DWORD(WINAPI* ptGetCurrentProcessId)(VOID);
typedef UINT(WINAPI* ptGetWindowsDirectoryW)(
_Out_writes_to_opt_(uSize, return +1) LPWSTR lpBuffer,
_In_ UINT uSize
);
typedef DWORD(WINAPI* ptResumeThread)(
_In_ HANDLE hThread
);
typedef DWORD(WINAPI* ptQueueUserAPC)(
_In_ PAPCFUNC pfnAPC,
_In_ HANDLE hThread,
_In_ ULONG_PTR dwData
);
typedef UINT(WINAPI* ptGetSystemDirectoryW)(
_Out_writes_to_opt_(uSize, return +1) LPWSTR lpBuffer,
_In_ UINT uSize
);
typedef HANDLE(WINAPI* ptFindFirstFileW)(
_In_ LPCWSTR lpFileName,
_Out_ LPWIN32_FIND_DATAW lpFindFileData
);
typedef BOOL(WINAPI* ptFindNextFileW)(
_In_ HANDLE hFindFile,
_Out_ LPWIN32_FIND_DATAW lpFindFileData
);
typedef HANDLE(WINAPI* ptCreateThread)(
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ SIZE_T dwStackSize,
_In_ LPTHREAD_START_ROUTINE lpStartAddress,
_In_opt_ __drv_aliasesMem LPVOID lpParameter,
_In_ DWORD dwCreationFlags,
_Out_opt_ LPDWORD lpThreadId
);
typedef HANDLE(WINAPI* ptCreateFileW)(
_In_ LPCWSTR lpFileName,
_In_ DWORD dwDesiredAccess,
_In_ DWORD dwShareMode,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
_In_ DWORD dwCreationDisposition,
_In_ DWORD dwFlagsAndAttributes,
_In_opt_ HANDLE hTemplateFile
);
typedef BOOL(WINAPI* ptWriteFile)(
_In_ HANDLE hFile,
_In_reads_bytes_opt_(nNumberOfBytesToWrite) LPCVOID lpBuffer,
_In_ DWORD nNumberOfBytesToWrite,
_Out_opt_ LPDWORD lpNumberOfBytesWritten,
_Inout_opt_ LPOVERLAPPED lpOverlapped
);
typedef BOOL(WINAPI* ptReadFile)(
_In_ HANDLE hFile,
_Out_writes_bytes_to_opt_(nNumberOfBytesToRead, *lpNumberOfBytesRead) __out_data_source(FILE) LPVOID lpBuffer,
_In_ DWORD nNumberOfBytesToRead,
_Out_opt_ LPDWORD lpNumberOfBytesRead,
_Inout_opt_ LPOVERLAPPED lpOverlapped
);
typedef DWORD(WINAPI* ptGetFileSize)(
_In_ HANDLE hFile,
_Out_opt_ LPDWORD lpFileSizeHigh
);
typedef BOOL(WINAPI* ptGetVersionExW)(
_Inout_ LPOSVERSIONINFOW lpVersionInformation
);
typedef HANDLE(WINAPI* ptFindFirstVolumeW)(
_Out_writes_(cchBufferLength) LPWSTR lpszVolumeName,
_In_ DWORD cchBufferLength
);
typedef BOOL(WINAPI* ptGetVolumeInformationW)(
_In_opt_ LPCWSTR lpRootPathName,
_Out_writes_opt_(nVolumeNameSize) LPWSTR lpVolumeNameBuffer,
_In_ DWORD nVolumeNameSize,
_Out_opt_ LPDWORD lpVolumeSerialNumber,
_Out_opt_ LPDWORD lpMaximumComponentLength,
_Out_opt_ LPDWORD lpFileSystemFlags,
_Out_writes_opt_(nFileSystemNameSize) LPWSTR lpFileSystemNameBuffer,
_In_ DWORD nFileSystemNameSize
);
typedef BOOL(WINAPI* ptFindVolumeClose)(
_In_ HANDLE hFindVolume
);
typedef int (WINAPI* ptwsprintfA)(
_Out_ LPSTR,
_In_ _Printf_format_string_ LPCSTR,
...);
typedef int (WINAPI* ptMultiByteToWideChar)(
_In_ UINT CodePage,
_In_ DWORD dwFlags,
_In_ LPCSTR lpMultiByteStr,
_In_ int cbMultiByte,
_Out_opt_ LPWSTR lpWideCharStr,
_In_ int cchWideChar
);
typedef HMODULE(WINAPI* ptGetModuleHandleW)(
_In_opt_ LPCWSTR lpModuleName
);
typedef BOOL(WINAPI* ptFlushInstructionCache)(
__in HANDLE hProcess,
__in_bcount_opt(dwSize) LPCVOID lpBaseAddress,
__in SIZE_T dwSize
);
typedef HANDLE(WINAPI* ptGetProcessHeap)(VOID);
typedef LPVOID(WINAPI* ptHeapAlloc)(
_In_ HANDLE hHeap,
_In_ DWORD dwFlags,
_In_ SIZE_T dwBytes
);
typedef BOOL(WINAPI* ptHeapFree)(
_Inout_ HANDLE hHeap,
_In_ DWORD dwFlags,
LPVOID lpMem
);
typedef HANDLE(WINAPI* ptGetCurrentProcess)(
VOID
);
typedef BOOL(WINAPI* ptThread32First)(
HANDLE hSnapshot,
LPTHREADENTRY32 lpte
);
typedef BOOL(WINAPI* ptThread32Next)(
HANDLE hSnapshot,
LPTHREADENTRY32 lpte
);
typedef HANDLE(WINAPI* ptOpenMutexW)(
_In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle,
_In_ LPCWSTR lpName
);
typedef BOOL(WINAPI* ptReleaseMutex)(
_In_ HANDLE hMutex
);
typedef HANDLE(WINAPI* ptCreateMutexW)(
_In_opt_ LPSECURITY_ATTRIBUTES lpMutexAttributes,
_In_ BOOL bInitialOwner,
_In_opt_ LPCWSTR lpName
);
typedef SIZE_T(WINAPI* ptVirtualQuery)(
__in_opt LPCVOID lpAddress,
__out_bcount_part(dwLength, return) PMEMORY_BASIC_INFORMATION lpBuffer,
__in SIZE_T dwLength
);
typedef HANDLE(WINAPI* ptCreateFileMappingW)(
_In_ HANDLE hFile,
_In_opt_ LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
_In_ DWORD flProtect,
_In_ DWORD dwMaximumSizeHigh,
_In_ DWORD dwMaximumSizeLow,
_In_opt_ LPCWSTR lpName
);
typedef LPVOID(WINAPI* ptMapViewOfFile)(
_In_ HANDLE hFileMappingObject,
_In_ DWORD dwDesiredAccess,
_In_ DWORD dwFileOffsetHigh,
_In_ DWORD dwFileOffsetLow,
_In_ SIZE_T dwNumberOfBytesToMap
);
typedef BOOL(WINAPI* ptUnmapViewOfFile)(
_In_ LPCVOID lpBaseAddress
);
typedef BOOL(WINAPI* ptDuplicateHandle)(
_In_ HANDLE hSourceProcessHandle,
_In_ HANDLE hSourceHandle,
_In_ HANDLE hTargetProcessHandle,
_Outptr_ LPHANDLE lpTargetHandle,
_In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle,
_In_ DWORD dwOptions
);
typedef HANDLE(WINAPI* ptGetCurrentThread)(VOID);
typedef BOOL(WINAPI* ptFlushFileBuffers)(HANDLE hFile);
typedef BOOL(WINAPI* ptDisconnectNamedPipe)(HANDLE hNamedPipe);
typedef FARPROC(WINAPI* ptGetProcAddress)(HMODULE hModule, LPCSTR lpProcName);
typedef void (WINAPI* ptRtlInitializeCriticalSection)(RTL_CRITICAL_SECTION* lpCriticalSection);
typedef void (WINAPI* ptRtlEnterCriticalSection)(RTL_CRITICAL_SECTION* lpCriticalSection);
typedef void (WINAPI* ptRtlLeaveCriticalSection)(RTL_CRITICAL_SECTION* lpCriticalSection);
typedef int (WINAPI* ptWideCharToMultiByte)(
UINT CodePage,
DWORD dwFlags,
LPCWSTR lpWideCharStr,
int cchWideChar,
LPSTR lpMultiByteStr,
int cbMultiByte,
LPCSTR lpDefaultChar,
LPBOOL lpUsedDefaultChar);
typedef BOOL(WINAPI* ptTerminateThread)(
_Inout_ HANDLE hThread,
_In_ DWORD dwExitCode
);
typedef DWORD(WINAPI* ptGetTickCount)(VOID);
typedef void (WINAPI* ptOutputDebugStringA)(
LPCSTR lpOutputString
);
typedef void (WINAPI* ptOutputDebugStringW)(
LPCWSTR lpOutputString
);
typedef DWORD(WINAPI* ptGetLastError)();
typedef HANDLE(WINAPI* ptCreateEventA)(
_In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes,
_In_ BOOL bManualReset,
_In_ BOOL bInitialState,
_In_opt_ LPCSTR lpName
);
typedef HANDLE(WINAPI* ptCreateEventW)(
_In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes,
_In_ BOOL bManualReset,
_In_ BOOL bInitialState,
_In_opt_ LPCWSTR lpName
);
typedef BOOL(WINAPI* ptSetEvent)(
_In_ HANDLE hEvent
);
typedef HANDLE(WINAPI* ptOpenEventA)(
_In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle,
_In_ LPCSTR lpName
);
typedef HANDLE(WINAPI* ptOpenEventW)(
_In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle,
_In_ LPCWSTR lpName
);
#endif __KERNEL32_FUNCTIONS_H__