mirror of
https://github.com/maxDcb/DreamWalkers
synced 2026-06-08 15:49:24 +00:00
640 lines
20 KiB
C
640 lines
20 KiB
C
/**
|
|
BSD 3-Clause License
|
|
|
|
Copyright (c) 2019, TheWover, Odzhan. All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are met:
|
|
|
|
* Redistributions of source code must retain the above copyright notice, this
|
|
list of conditions and the following disclaimer.
|
|
|
|
* Redistributions in binary form must reproduce the above copyright notice,
|
|
this list of conditions and the following disclaimer in the documentation
|
|
and/or other materials provided with the distribution.
|
|
|
|
* Neither the name of the copyright holder nor the names of its
|
|
contributors may be used to endorse or promote products derived from
|
|
this software without specific prior written permission.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#ifndef WINAPI_H
|
|
#define WINAPI_H
|
|
|
|
#include <windows.h>
|
|
|
|
#if defined(_M_X64) || defined(_M_ARM64)
|
|
#define DW_HAS_RUNTIME_FUNCTION_TABLE 1
|
|
#else
|
|
#define DW_HAS_RUNTIME_FUNCTION_TABLE 0
|
|
#endif
|
|
|
|
#if defined(_M_X64)
|
|
#define DW_HAS_STACK_SPOOFING 1
|
|
#else
|
|
#define DW_HAS_STACK_SPOOFING 0
|
|
#endif
|
|
|
|
|
|
typedef LPVOID(WINAPI* HeapAlloc_t)(
|
|
HANDLE hHeap,
|
|
DWORD dwFlags,
|
|
SIZE_T dwBytes);
|
|
|
|
typedef BOOL(WINAPI* HeapFree_t)(
|
|
HANDLE hHeap,
|
|
DWORD dwFlags,
|
|
LPVOID lpMem);
|
|
|
|
typedef HANDLE(WINAPI* GetProcessHeap_t)();
|
|
typedef DWORD(WINAPI* GetLastError_t)();
|
|
|
|
typedef LPVOID(WINAPI* HeapReAlloc_t)(
|
|
HANDLE hHeap,
|
|
DWORD dwFlags,
|
|
LPVOID lpMem,
|
|
SIZE_T dwBytes);
|
|
|
|
typedef LPSTR(WINAPI* GetCommandLineA_t)(VOID);
|
|
typedef LPWSTR(WINAPI* GetCommandLineW_t)(VOID);
|
|
|
|
typedef void (WINAPI* Sleep_t)(DWORD dwMilliseconds);
|
|
|
|
typedef int (WINAPI* MultiByteToWideChar_t)(
|
|
UINT CodePage,
|
|
DWORD dwFlags,
|
|
LPCCH lpMultiByteStr,
|
|
int cbMultiByte,
|
|
LPWSTR lpWideCharStr,
|
|
int cchWideChar);
|
|
|
|
typedef int (WINAPI* WideCharToMultiByte_t)(
|
|
UINT CodePage,
|
|
DWORD dwFlags,
|
|
LPCWCH lpWideCharStr,
|
|
int cchWideChar,
|
|
LPSTR lpMultiByteStr,
|
|
int cbMultiByte,
|
|
LPCCH lpDefaultChar,
|
|
LPBOOL lpUsedDefaultChar);
|
|
|
|
typedef LPWSTR* (WINAPI* CommandLineToArgvW_t)(LPCWSTR lpCmdLine, int* pNumArgs);
|
|
|
|
typedef BOOL(WINAPI* CloseHandle_t)(HANDLE hObject);
|
|
|
|
typedef HANDLE(WINAPI* GetCurrentProcess_t)();
|
|
|
|
// imports from shlwapi.dll
|
|
typedef LSTATUS(WINAPI* SHGetValueA_t)(
|
|
HKEY hkey,
|
|
LPCSTR pszSubKey,
|
|
LPCSTR pszValue,
|
|
DWORD* pdwType,
|
|
void* pvData,
|
|
DWORD* pcbData);
|
|
|
|
// imports from mscoree.dll
|
|
typedef HRESULT(WINAPI* CLRCreateInstance_t)(
|
|
REFCLSID clsid,
|
|
REFIID riid,
|
|
LPVOID* ppInterface);
|
|
|
|
typedef HRESULT(WINAPI* CorBindToRuntime_t) (
|
|
LPCWSTR pwszVersion,
|
|
LPCWSTR pwszBuildFlavor,
|
|
REFCLSID rclsid,
|
|
REFIID riid,
|
|
LPVOID FAR* ppv);
|
|
|
|
// imports from ole32.dll
|
|
typedef HRESULT(WINAPI* CoInitializeEx_t)(
|
|
LPVOID pvReserved,
|
|
DWORD dwCoInit);
|
|
|
|
typedef void (WINAPI* CoUninitialize_t)(void);
|
|
|
|
typedef HRESULT(WINAPI* CoCreateInstance_t)(
|
|
REFCLSID rclsid,
|
|
LPUNKNOWN pUnkOuter,
|
|
DWORD dwClsContext,
|
|
REFIID riid,
|
|
LPVOID* ppv);
|
|
|
|
typedef HRESULT(WINAPI* CreateStdDispatch_t)(
|
|
IUnknown* punkOuter,
|
|
void* pvThis,
|
|
ITypeInfo* ptinfo,
|
|
IUnknown** ppunkStdDisp);
|
|
|
|
typedef HRESULT(WINAPI* CreateErrorInfo_t)(
|
|
ICreateErrorInfo** pperrinfo);
|
|
|
|
typedef HRESULT(WINAPI* CreateDispTypeInfo_t)(
|
|
INTERFACEDATA* pidata,
|
|
LCID lcid,
|
|
ITypeInfo** pptinfo);
|
|
|
|
typedef HRESULT(WINAPI* GetErrorInfo_t)(
|
|
ULONG dwReserved,
|
|
IErrorInfo** pperrinfo);
|
|
|
|
typedef HRESULT(WINAPI* LoadTypeLib_t)(
|
|
LPCOLESTR szFile,
|
|
ITypeLib** pptlib);
|
|
|
|
typedef HRESULT(WINAPI* LoadTypeLibEx_t)(
|
|
LPCOLESTR szFile,
|
|
REGKIND regkind,
|
|
ITypeLib** pptlib);
|
|
|
|
typedef LCID(WINAPI* GetUserDefaultLCID_t)(VOID);
|
|
|
|
// imports from oleaut32.dll
|
|
typedef HRESULT(WINAPI* SafeArrayGetLBound_t)(
|
|
SAFEARRAY* psa,
|
|
UINT nDim,
|
|
LONG* plLbound);
|
|
|
|
typedef HRESULT(WINAPI* SafeArrayGetUBound_t)(
|
|
SAFEARRAY* psa,
|
|
UINT nDim,
|
|
LONG* plUbound);
|
|
|
|
typedef SAFEARRAY* (WINAPI* SafeArrayCreate_t)(
|
|
VARTYPE vt,
|
|
UINT cDims,
|
|
SAFEARRAYBOUND* rgsabound);
|
|
|
|
typedef SAFEARRAY* (WINAPI* SafeArrayCreateVector_t)(
|
|
VARTYPE vt,
|
|
LONG lLbound,
|
|
ULONG cElements);
|
|
|
|
typedef HRESULT(WINAPI* SafeArrayPutElement_t)(
|
|
SAFEARRAY* psa,
|
|
LONG* rgIndices,
|
|
void* pv);
|
|
|
|
typedef HRESULT(WINAPI* SafeArrayDestroy_t)(
|
|
SAFEARRAY* psa);
|
|
|
|
typedef BSTR(WINAPI* SysAllocString_t)(
|
|
const OLECHAR* psz);
|
|
|
|
typedef void (WINAPI* SysFreeString_t)(
|
|
BSTR bstrString);
|
|
|
|
// imports from kernel32.dll
|
|
typedef HMODULE(WINAPI* LoadLibraryA_t)(
|
|
LPCSTR lpLibFileName);
|
|
|
|
typedef BOOL(WINAPI* FreeLibrary_t)(
|
|
HMODULE hLibModule);
|
|
|
|
typedef void (WINAPI* GetNativeSystemInfo_t)(
|
|
LPSYSTEM_INFO lpSystemInfo);
|
|
|
|
typedef BOOL (WINAPI* IsBadReadPtr_t)(
|
|
const VOID *lp,
|
|
UINT_PTR ucb);
|
|
|
|
typedef FARPROC(WINAPI* GetProcAddress_t)(
|
|
HMODULE hModule,
|
|
LPCSTR lpProcName);
|
|
|
|
typedef VOID (WINAPI* ExitThread_t)(
|
|
DWORD dwExitCode);
|
|
|
|
typedef VOID (WINAPI* ExitProcess_t)(
|
|
UINT uExitCode);
|
|
|
|
typedef BOOL (WINAPI* FlushInstructionCache_t)(
|
|
HANDLE hProcess,
|
|
LPCVOID lpBaseAddress,
|
|
SIZE_T dwSize);
|
|
|
|
typedef PVOID (WINAPI* AddVectoredExceptionHandler_t)(
|
|
ULONG First,
|
|
PVECTORED_EXCEPTION_HANDLER Handler);
|
|
|
|
typedef ULONG (WINAPI* RemoveVectoredExceptionHandler_t)(
|
|
PVOID Handle);
|
|
|
|
#if DW_HAS_RUNTIME_FUNCTION_TABLE
|
|
typedef PRUNTIME_FUNCTION(WINAPI* RtlLookupFunctionEntry_t)(
|
|
DWORD64 ControlPc,
|
|
PDWORD64 ImageBase,
|
|
PUNWIND_HISTORY_TABLE HistoryTable);
|
|
#endif
|
|
|
|
typedef BOOL(WINAPI* AllocConsole_t)(void);
|
|
|
|
typedef BOOL(WINAPI* AttachConsole_t)(
|
|
DWORD dwProcessId);
|
|
|
|
typedef BOOL(WINAPI* SetConsoleCtrlHandler_t)(
|
|
PHANDLER_ROUTINE HandlerRoutine,
|
|
BOOL Add);
|
|
|
|
typedef HANDLE(WINAPI* GetStdHandle_t)(
|
|
DWORD nStdHandle);
|
|
|
|
typedef BOOL(WINAPI* SetStdHandle_t)(
|
|
DWORD nStdHandle,
|
|
HANDLE hHandle);
|
|
|
|
typedef HANDLE(WINAPI* CreateEventA_t)(
|
|
LPSECURITY_ATTRIBUTES lpEventAttributes,
|
|
BOOL bManualReset,
|
|
BOOL bInitialState,
|
|
LPCSTR lpName);
|
|
|
|
typedef BOOL(WINAPI* CloseHandle_t)(HANDLE hObject);
|
|
|
|
typedef BOOL(WINAPI* SetEvent_t)(HANDLE hEvent);
|
|
|
|
typedef DWORD(WINAPI* GetCurrentThreadId_t)(VOID);
|
|
|
|
typedef DWORD(WINAPI* GetCurrentProcessId_t)(VOID);
|
|
|
|
typedef HHOOK(WINAPI* SetWindowsHookExA_t)(
|
|
int idHook,
|
|
HOOKPROC lpfn,
|
|
HINSTANCE hmod,
|
|
DWORD dwThreadId);
|
|
|
|
typedef BOOL(WINAPI* CreateProcessA_t)(
|
|
LPCSTR lpApplicationName,
|
|
LPSTR lpCommandLine,
|
|
LPSECURITY_ATTRIBUTES lpProcessAttributes,
|
|
LPSECURITY_ATTRIBUTES lpThreadAttributes,
|
|
BOOL bInheritHandles,
|
|
DWORD dwCreationFlags,
|
|
LPVOID lpEnvironment,
|
|
LPCSTR lpCurrentDirectory,
|
|
LPSTARTUPINFOA lpStartupInfo,
|
|
LPPROCESS_INFORMATION lpProcessInformation);
|
|
|
|
typedef DWORD(WINAPI* WaitForSingleObject_t)(
|
|
HANDLE hHandle,
|
|
DWORD dwMilliseconds);
|
|
|
|
// imports from wininet.dll
|
|
typedef BOOL(WINAPI* InternetCrackUrl_t)(
|
|
LPCSTR lpszUrl,
|
|
DWORD dwUrlLength,
|
|
DWORD dwFlags,
|
|
LPURL_COMPONENTS lpUrlComponents);
|
|
|
|
typedef HINTERNET(WINAPI* InternetOpen_t)(
|
|
LPCSTR lpszAgent,
|
|
DWORD dwAccessType,
|
|
LPCSTR lpszProxy,
|
|
LPCSTR lpszProxyBypass,
|
|
DWORD dwFlags);
|
|
|
|
typedef HINTERNET(WINAPI* InternetConnect_t)(
|
|
HINTERNET hInternet,
|
|
LPCSTR lpszServerName,
|
|
INTERNET_PORT nServerPort,
|
|
LPCSTR lpszUserName,
|
|
LPCSTR lpszPassword,
|
|
DWORD dwService,
|
|
DWORD dwFlags,
|
|
DWORD_PTR dwContext);
|
|
|
|
typedef BOOL(WINAPI* InternetQueryDataAvailable_t)(
|
|
HINTERNET hFile,
|
|
LPDWORD lpdwNumberOfBytesAvailable,
|
|
DWORD dwFlags,
|
|
DWORD_PTR dwContext);
|
|
|
|
typedef HINTERNET(WINAPI* HttpOpenRequest_t)(
|
|
HINTERNET hConnect,
|
|
LPCSTR lpszVerb,
|
|
LPCSTR lpszObjectName,
|
|
LPCSTR lpszVersion,
|
|
LPCSTR lpszReferrer,
|
|
LPCSTR* lplpszAcceptTypes,
|
|
DWORD dwFlags,
|
|
DWORD_PTR dwContext);
|
|
|
|
typedef BOOL(WINAPI* InternetSetOption_t)(
|
|
HINTERNET hInternet,
|
|
DWORD dwOption,
|
|
LPVOID lpBuffer,
|
|
DWORD dwBufferLength);
|
|
|
|
typedef BOOL(WINAPI* HttpSendRequest_t)(
|
|
HINTERNET hRequest,
|
|
LPCSTR lpszHeaders,
|
|
DWORD dwHeadersLength,
|
|
LPVOID lpOptional,
|
|
DWORD dwOptionalLength);
|
|
|
|
typedef BOOL(WINAPI* HttpQueryInfo_t)(
|
|
HINTERNET hRequest,
|
|
DWORD dwInfoLevel,
|
|
LPVOID lpBuffer,
|
|
LPDWORD lpdwBufferLength,
|
|
LPDWORD lpdwIndex);
|
|
|
|
typedef BOOL(WINAPI* InternetReadFile_t)(
|
|
HINTERNET hFile,
|
|
LPVOID lpBuffer,
|
|
DWORD dwNumberOfBytesToRead,
|
|
LPDWORD lpdwNumberOfBytesRead);
|
|
|
|
typedef BOOL(WINAPI* InternetCloseHandle_t)(
|
|
HINTERNET hInternet);
|
|
|
|
typedef BOOL(WINAPI* CryptAcquireContext_t)(
|
|
HCRYPTPROV* phProv,
|
|
LPCSTR szContainer,
|
|
LPCSTR szProvider,
|
|
DWORD dwProvType,
|
|
DWORD dwFlags);
|
|
|
|
typedef void (WINAPI* GetSystemInfo_t)(
|
|
LPSYSTEM_INFO lpSystemInfo);
|
|
|
|
typedef SIZE_T(WINAPI* VirtualQuery_t)(
|
|
LPCVOID lpAddress,
|
|
PMEMORY_BASIC_INFORMATION lpBuffer,
|
|
SIZE_T dwLength);
|
|
|
|
typedef BOOL(WINAPI* VirtualProtect_t)(
|
|
LPVOID lpAddress,
|
|
SIZE_T dwSize,
|
|
DWORD flNewProtect,
|
|
PDWORD lpflOldProtect);
|
|
|
|
typedef HMODULE(WINAPI* GetModuleHandleA_t)(
|
|
LPCSTR lpModuleName);
|
|
|
|
typedef HMODULE(WINAPI* LoadLibraryExA_t)(
|
|
LPCSTR lpLibFileName,
|
|
HANDLE hFile,
|
|
DWORD dwFlags);
|
|
|
|
typedef HMODULE(WINAPI* LoadLibraryExW_t)(
|
|
LPCWSTR lpLibFileName,
|
|
HANDLE hFile,
|
|
DWORD dwFlags);
|
|
|
|
typedef BOOL(WINAPI* CryptStringToBinaryA_t)(
|
|
LPCSTR pszString,
|
|
DWORD cchString,
|
|
DWORD dwFlags,
|
|
BYTE* pbBinary,
|
|
DWORD* pcbBinary,
|
|
DWORD* pdwSkip,
|
|
DWORD* pdwFlags);
|
|
|
|
typedef BOOL(WINAPI* CryptDecodeObjectEx_t)(
|
|
DWORD dwCertEncodingType,
|
|
LPCSTR lpszStructType,
|
|
const BYTE* pbEncoded,
|
|
DWORD cbEncoded,
|
|
DWORD dwFlags,
|
|
PCRYPT_DECODE_PARA pDecodePara,
|
|
void* pvStructInfo,
|
|
DWORD* pcbStructInfo);
|
|
|
|
typedef BOOL(WINAPI* CryptImportPublicKeyInfo_t)(
|
|
HCRYPTPROV hCryptProv,
|
|
DWORD dwCertEncodingType,
|
|
PCERT_PUBLIC_KEY_INFO pInfo,
|
|
HCRYPTKEY* phKey);
|
|
|
|
typedef BOOL(WINAPI* CryptCreateHash_t)(
|
|
HCRYPTPROV hProv,
|
|
ALG_ID Algid,
|
|
HCRYPTKEY hKey,
|
|
DWORD dwFlags,
|
|
HCRYPTHASH* phHash);
|
|
|
|
typedef BOOL(WINAPI* CryptHashData_t)(
|
|
HCRYPTHASH hHash,
|
|
const BYTE* pbData,
|
|
DWORD dwDataLen,
|
|
DWORD dwFlags);
|
|
|
|
typedef BOOL(WINAPI* CryptVerifySignature_t)(
|
|
HCRYPTHASH hHash,
|
|
const BYTE* pbSignature,
|
|
DWORD dwSigLen,
|
|
HCRYPTKEY hPubKey,
|
|
LPCSTR szDescription,
|
|
DWORD dwFlags);
|
|
|
|
typedef BOOL(WINAPI* CryptDestroyHash_t)(
|
|
HCRYPTHASH hHash);
|
|
|
|
typedef BOOL(WINAPI* CryptDestroyKey_t)(
|
|
HCRYPTKEY hKey);
|
|
|
|
typedef BOOL(WINAPI* CryptReleaseContext_t)(
|
|
HCRYPTPROV hProv,
|
|
DWORD dwFlags);
|
|
|
|
typedef LPVOID(WINAPI* VirtualAlloc_t)(
|
|
LPVOID lpAddress,
|
|
SIZE_T dwSize,
|
|
DWORD flAllocationType,
|
|
DWORD flProtect);
|
|
|
|
typedef BOOL(WINAPI* VirtualFree_t)(
|
|
LPVOID lpAddress,
|
|
SIZE_T dwSize,
|
|
DWORD dwFreeType);
|
|
|
|
typedef HLOCAL(WINAPI* LocalFree_t)(
|
|
HLOCAL hMem);
|
|
|
|
typedef HRSRC(WINAPI* FindResource_t)(
|
|
HMODULE hModule,
|
|
LPCSTR lpName,
|
|
LPCSTR lpType);
|
|
|
|
typedef HGLOBAL(WINAPI* LoadResource_t)(
|
|
HMODULE hModule,
|
|
HRSRC hResInfo);
|
|
|
|
typedef LPVOID(WINAPI* LockResource_t)(
|
|
HGLOBAL hResData);
|
|
|
|
typedef DWORD(WINAPI* SizeofResource_t)(
|
|
HMODULE hModule,
|
|
HRSRC hResInfo);
|
|
|
|
typedef void (WINAPI* RtlZeroMemory_t)(
|
|
LPVOID Destination,
|
|
SIZE_T Length);
|
|
|
|
typedef BOOL(WINAPI* RtlEqualUnicodeString_t)(
|
|
PUNICODE_STRING String1,
|
|
PUNICODE_STRING String2,
|
|
BOOLEAN CaseInSensitive);
|
|
|
|
typedef BOOL(WINAPI* RtlEqualString_t)(
|
|
const ANSI_STRING* String1,
|
|
const ANSI_STRING* String2,
|
|
BOOLEAN CaseInSensitive);
|
|
|
|
typedef NTSTATUS(WINAPI* RtlUnicodeStringToAnsiString_t)(
|
|
PANSI_STRING DestinationString,
|
|
PUNICODE_STRING SourceString,
|
|
BOOLEAN AllocateDestinationString);
|
|
|
|
typedef void (WINAPI* RtlInitUnicodeString_t)(
|
|
PUNICODE_STRING DestinationString,
|
|
PCWSTR SourceString);
|
|
|
|
typedef void (WINAPI* RtlExitUserThread_t)(UINT uExitCode);
|
|
|
|
typedef void (WINAPI* RtlExitUserProcess_t)(NTSTATUS ExitStatus);
|
|
|
|
typedef HANDLE(WINAPI* CreateThread_t)(
|
|
LPSECURITY_ATTRIBUTES lpThreadAttributes,
|
|
SIZE_T dwStackSize,
|
|
LPTHREAD_START_ROUTINE lpStartAddress,
|
|
LPVOID lpParameter,
|
|
DWORD dwCreationFlags,
|
|
LPDWORD lpThreadId);
|
|
|
|
typedef HANDLE(WINAPI* CreateFileA_t)(
|
|
LPCSTR lpFileName,
|
|
DWORD dwDesiredAccess,
|
|
DWORD dwShareMode,
|
|
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
|
|
DWORD dwCreationDisposition,
|
|
DWORD dwFlagsAndAttributes,
|
|
HANDLE hTemplateFile);
|
|
|
|
typedef BOOL(WINAPI* GetFileSizeEx_t)(
|
|
HANDLE hFile,
|
|
PLARGE_INTEGER lpFileSize);
|
|
|
|
typedef BOOL(WINAPI* RtlCreateUnicodeString_t)(
|
|
PUNICODE_STRING DestinationString,
|
|
PCWSTR SourceString);
|
|
|
|
typedef NTSTATUS(WINAPI* RtlGetCompressionWorkSpaceSize_t)(
|
|
USHORT CompressionFormatAndEngine,
|
|
PULONG CompressBufferWorkSpaceSize,
|
|
PULONG CompressFragmentWorkSpaceSize);
|
|
|
|
typedef NTSTATUS(WINAPI* RtlCompressBuffer_t)(
|
|
USHORT CompressionFormatAndEngine,
|
|
PUCHAR UncompressedBuffer,
|
|
ULONG UncompressedBufferSize,
|
|
PUCHAR CompressedBuffer,
|
|
ULONG CompressedBufferSize,
|
|
ULONG UncompressedChunkSize,
|
|
PULONG FinalCompressedSize,
|
|
PVOID WorkSpace);
|
|
|
|
typedef NTSTATUS(WINAPI* RtlDecompressBuffer_t)(
|
|
USHORT CompressionFormatAndEngine,
|
|
PUCHAR UncompressedBuffer,
|
|
ULONG UncompressedBufferSize,
|
|
PUCHAR CompressedBuffer,
|
|
ULONG CompressedBufferSize,
|
|
PULONG FinalUncompressedSize);
|
|
|
|
typedef NTSTATUS(WINAPI* RtlDecompressBufferEx_t)(
|
|
USHORT CompressionFormatAndEngine,
|
|
PUCHAR UncompressedBuffer,
|
|
ULONG UncompressedBufferSize,
|
|
PUCHAR CompressedBuffer,
|
|
ULONG CompressedBufferSize,
|
|
PULONG FinalUncompressedSize,
|
|
PVOID WorkSpace);
|
|
|
|
#if DW_HAS_STACK_SPOOFING
|
|
typedef NTSTATUS(WINAPI* BaseThreadInitThunk_t)(
|
|
DWORD64 ControlPc,
|
|
PDWORD64 ImageBase,
|
|
PUNWIND_HISTORY_TABLE HistoryTable);
|
|
#endif
|
|
|
|
#if DW_HAS_RUNTIME_FUNCTION_TABLE
|
|
typedef BOOLEAN(WINAPI* RtlAddFunctionTable_t)(
|
|
PRUNTIME_FUNCTION FunctionTable,
|
|
DWORD EntryCount,
|
|
DWORD64 BaseAddress);
|
|
#endif
|
|
|
|
typedef NTSTATUS(WINAPI* RtlUserThreadStart_t)(
|
|
LPTHREAD_START_ROUTINE lpStartAddress,
|
|
LPVOID lpParameter);
|
|
|
|
typedef NTSTATUS(WINAPI* NtContinue_t)(
|
|
PCONTEXT ContextRecord,
|
|
BOOLEAN TestAlert);
|
|
|
|
typedef NTSTATUS(NTAPI* NtUnmapViewOfSection_t)(
|
|
HANDLE ProcessHandle,
|
|
PVOID BaseAddress);
|
|
|
|
typedef enum _SECTION_INHERIT {
|
|
ViewShare = 1,
|
|
ViewUnmap = 2
|
|
} SECTION_INHERIT, * PSECTION_INHERIT;
|
|
|
|
typedef NTSTATUS(NTAPI* NtMapViewOfSection_t)(
|
|
HANDLE SectionHandle,
|
|
HANDLE ProcessHandle,
|
|
PVOID* BaseAddress,
|
|
ULONG_PTR ZeroBits,
|
|
SIZE_T CommitSize,
|
|
PLARGE_INTEGER SectionOffset,
|
|
PSIZE_T ViewSize,
|
|
SECTION_INHERIT InheritDisposition,
|
|
ULONG AllocationType,
|
|
ULONG Win32Protect);
|
|
|
|
typedef NTSTATUS(NTAPI* NtCreateSection_t)(
|
|
PHANDLE SectionHandle,
|
|
ACCESS_MASK DesiredAccess,
|
|
PVOID ObjectAttributes,
|
|
PLARGE_INTEGER MaximumSize,
|
|
ULONG SectionPageProtection,
|
|
ULONG AllocationAttributes,
|
|
HANDLE FileHandle);
|
|
|
|
typedef BOOL(WINAPI* SetThreadContext_t)(
|
|
HANDLE hThread,
|
|
const CONTEXT* lpContext);
|
|
|
|
typedef BOOL(WINAPI* GetThreadContext_t)(
|
|
HANDLE hThread,
|
|
LPCONTEXT lpContext);
|
|
|
|
typedef HANDLE(WINAPI* GetCurrentThread_t)(VOID);
|
|
|
|
typedef int (__cdecl *printf_t)(const char* format, ...);
|
|
|
|
/*
|
|
typedef PVOID (WINAPI *AddVectoredExceptionHandler_t)(
|
|
ULONG First,
|
|
PVECTORED_EXCEPTION_HANDLER Handler);
|
|
|
|
typedef ULONG (WINAPI *RemoveVectoredExceptionHandler_t)(
|
|
PVOID Handle);
|
|
*/
|
|
|
|
#endif
|