From ed5f17b62b19361cbc5ee8cfcc89d052a42c7795 Mon Sep 17 00:00:00 2001 From: AleBlbl Date: Thu, 5 Sep 2024 00:53:21 +0200 Subject: [PATCH 1/2] First batch of many kernelx export functions --- dlls/kernelx/Exports.def | 80 ++++++++- dlls/kernelx/dllmain.cpp | 1 + dlls/kernelx/kernelx.cpp | 340 +++++++++++++++++++++++++++++++++++++++ dlls/kernelx/kernelx.h | 130 +++++++++++++++ 4 files changed, 550 insertions(+), 1 deletion(-) diff --git a/dlls/kernelx/Exports.def b/dlls/kernelx/Exports.def index a0bdd21..53fa274 100644 --- a/dlls/kernelx/Exports.def +++ b/dlls/kernelx/Exports.def @@ -2,7 +2,85 @@ LIBRARY kernelx EXPORTS AcquireSRWLockExclusive = AcquireSRWLockExclusive_X @1 AcquireSRWLockShared = AcquireSRWLockShared_X @2 + CloseHandle = CloseHandle_X @14 + CreateDirectoryW = CreateDirectoryW_X @34 + CreateEventExW = CreateEventExW_X @37 + CreateEventW = CreateEventW_X @38 + CreateFileW = CreateFileW_X @44 + CreateThread = CreateThread_X @60 + DebugBreak = DebugBreak_X @71 + DecodePointer = NTDLL.RtlDecodePointer @72 + DeleteCriticalSection = NTDLL.RtlDeleteCriticalSection@74 + DeleteFileW = DeleteFileW_X @77 + EventRegister = NTDLL.EtwEventRegister @95 + EventUnregister = NTDLL.EtwEventUnregister @97 EnterCriticalSection = EnterCriticalSection_X @87 + ExitProcess = ExitProcess_X @102 + FileTimeToSystemTime = FileTimeToSystemTime_X @107 + FindClose = FindClose_X @109 + FindFirstFileW = FindFirstFileW_X @113 + FindNextFileW = FindNextFileW_X @117 + GetConsoleType = GetConsoleType_X @140 + GetCurrentProcess = GetCurrentProcess_X @144 + GetCurrentProcessId = GetCurrentProcessId_X @145 + GetCurrentThread = GetCurrentThread_X @148 + GetCurrentThreadId = GetCurrentThreadId_X @149 + GetExitCodeThread = GetExitCodeThread_X @163 + GetFileAttributesExW = GetFileAttributesExW_X @166 + GetFileAttributesW = GetFileAttributesW_X @167 + GetFileSizeEx = GetFileSizeEx_X @171 + GetLastError = GetLastError_X @178 + GetLocalTime = GetLocalTime_X @179 + GetModuleHandleW = GetModuleHandleW_X @189 GetProcessHeap = GetProcessHeap_X @199 + GetProcessId = GetProcessId_X @201 + GetStartupInfoW = GetStartupInfoW_X @208 + GetSystemTime = GetSystemTime_X @216 + GetSystemTimeAsFileTime = GetSystemTimeAsFileTime_X @218 + GetTickCount = GetTickCount_X @231 + GetUserDefaultLocaleName = GetUserDefaultLocaleName_X @242 + GetUserGeoID = GetUserGeoID_X @243 + InitializeConditionVariable = NTDDLL.RtlInitializeConditionVariable @269 + InitializeCriticalSection = NTDLL.RtlInitializeCriticalSection @271 + InitializeCriticalSectionAndSpinCount = InitializeCriticalSectionAndSpinCount_X @272 + InitializeSListHead = NTDLL.RtlInitializeSListHead @275 + InitializeSRWLock = NTDLL.InitializeSRWLock @276 + IsDebuggerPresent = IsDebuggerPresent_X @283 + IsProcessorFeaturePresent = IsProcessorFeaturePresent_X @284 + LeaveCriticalSection = NTDLL.RtlLeaveCriticalSection @293 + MultiByteToWideChar = MultiByteToWideChar_X @313 + OutputDebugStringW = OutputDebugStringW_X @328 + QueryPerformanceCounter = QueryPerformanceCounter_X @333 + QueryPerformanceFrequency = QueryPerformanceFrequency_X @334 + RaiseException = RaiseException_X @339 + ReadFile = ReadFile_X @344 + ReleaseSRWLockExclusive = NTDLL.RtlReleaseSRWLockExclusive @366 + ResetEvent = ResetEvent_X @374 + ResumeThread = ResumeThread_X @377 + RtlCaptureContext = RtlCaptureContext_X @378 + RtlLookupFunctionEntry = RtlLookupFunctionEntry @380 + RtlVirtualUnwind = NTDLL.RtlVirtualUnwind @386 + SetFilePointer = SetFilePointer_X @404 + SetLastError = NTDLL.RtlSetLastWin32Error @409 + SetThreadAffinityMask = SetThreadAffinityMask_X @418 + SetThreadPriority = SetThreadPriority_X @424 + SetUnhandledExceptionFilter = SetUnhandledExceptionFilter_X @433 + Sleep = Sleep_X @440 + SleepConditionVariableCS = API-MS-WIN-CORE-SYNCH-L1-2-0.SleepConditionVariableCS @441 + SystemTimeToFileTime = SystemTimeToFileTime_X @449 + TerminateProcess = TerminateProcess_X @451 + TlsAlloc = TlsAlloc_X @454 + TlsGetValue = TlsGetValue_X @456 + TlsSetValue = TlsSetValue_X @457 + TryEnterCriticalSection = NTDLL.RtlTryEnterCriticalSection @464 + UnhandledExceptionFilter = UnhandledExceptionFilter_X @467 + VirtualAlloc = VirtualAlloc_X @474 + VirtualFree = VirtualFree_X @476 + WaitForMultipleObjects = WaitForMultipleObjects_X @482 + WaitForSingleObject = WaitForSingleObject_X @484 + WaitForSingleObjectEx = WaitForSingleObjectEx_X @485 + WakeAllConditionVariable = NTDLL.RtlWakeAllConditionVariable @492 + WriteFile = WriteFile_X @500 XMemAlloc = XMemAlloc_X @501 - XMemAllocDefault = XMemAllocDefault_X @505 \ No newline at end of file + XMemAllocDefault = XMemAllocDefault_X @505 + XMemFreeDefault = XMemFreeDefault_X @508 diff --git a/dlls/kernelx/dllmain.cpp b/dlls/kernelx/dllmain.cpp index 1b87572..0e4c7e2 100644 --- a/dlls/kernelx/dllmain.cpp +++ b/dlls/kernelx/dllmain.cpp @@ -30,6 +30,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD forwardReason, LPVOID lpvReserved DestinationString->Length = 0LL; DestinationString->Buffer = 0LL; } + //Probably have to change this to SetUnhandledExceptionFilter RtlSetUnhandledExceptionFilter(UnhandledExceptionFilter); } else diff --git a/dlls/kernelx/kernelx.cpp b/dlls/kernelx/kernelx.cpp index 963d01a..70b4766 100644 --- a/dlls/kernelx/kernelx.cpp +++ b/dlls/kernelx/kernelx.cpp @@ -36,11 +36,351 @@ PVOID XMemAllocDefault_X(ULONG_PTR a1, UINT64 a2) return nullptr; } +//TODO PVOID XMemAlloc_X(SIZE_T dwSize, ULONGLONG dwAttributes) { return XMemAllocDefault_X(dwSize, dwAttributes); } +//TODO +BOOL XMemFreeDefault_X(PVOID P, unsigned __int64 a2) +{ + //STUB + return 0; +} + +LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter_X(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter) +{ + return SetUnhandledExceptionFilter(lpTopLevelExceptionFilter); +} + +BOOL TerminateProcess_X(HANDLE hProcess, UINT uExitCode) +{ + return TerminateProcess(hProcess, uExitCode); +} + +HANDLE GetCurrentProcess_X() +{ + return GetCurrentProcess(); +} + +LONG UnhandledExceptionFilter_X(_EXCEPTION_POINTERS* ExceptionInfo) +{ + return UnhandledExceptionFilter(ExceptionInfo); +} + +DWORD GetTickCount_X() +{ + return GetTickCount(); +} + +void RtlCaptureContext_X(PCONTEXT ContextRecord) +{ + return RtlCaptureContext(ContextRecord); +} + +PRUNTIME_FUNCTION RtlLookupFunctionEntry_X(DWORD64 ControlPc, PDWORD64 ImageBase, PUNWIND_HISTORY_TABLE HistoryTable) +{ + return RtlLookupFunctionEntry(ControlPc, ImageBase, HistoryTable); +} + +DWORD GetProcessId_X(HANDLE Process) +{ + return GetProcessId(Process); +} + +void GetSystemTimeAsFileTime_X(LPFILETIME lpSystemTimeAsFileTime) +{ + return GetSystemTimeAsFileTime(lpSystemTimeAsFileTime); +} + +DWORD WaitForSingleObjectEx_X(HANDLE hHandle, DWORD dwMilliseconds, BOOL bAlertable) +{ + return WaitForSingleObjectEx(hHandle, dwMilliseconds, bAlertable); +} + +void GetStartupInfoW_X(LPSTARTUPINFOW lpStartupInfo) +{ + GetStartupInfoW(lpStartupInfo); +} + +HMODULE GetModuleHandleW_X(LPCWSTR lpModuleName) +{ + return GetModuleHandleW(lpModuleName); +} + +void GetLocalTime_X(LPSYSTEMTIME lpSystemTime) +{ + GetLocalTime(lpSystemTime); +} + +DWORD GetLastError_X() +{ + return GetLastError(); +} + +BOOL GetFileSizeEx_X(HANDLE hFile, PLARGE_INTEGER lpFileSize) +{ + return GetFileSizeEx(hFile, lpFileSize); +} + +DWORD GetFileAttributesW_X(LPCWSTR lpFileName) +{ + return GetFileAttributesW(lpFileName); +} + +BOOL GetFileAttributesExW_X(LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation) +{ + return GetFileAttributesExW(lpFileName, fInfoLevelId, lpFileInformation); +} + +BOOL GetExitCodeThread_X(HANDLE hThread, LPDWORD lpExitCode) +{ + return GetExitCodeThread(hThread, lpExitCode); +} + +HANDLE GetCurrentThread_X() +{ + return GetCurrentThread(); +} + +DWORD GetCurrentThreadId_X() +{ + return GetCurrentThreadId(); +} + +DWORD GetCurrentProcessId_X() +{ + return GetCurrentProcessId(); +} + +BOOL FindNextFileW_X(HANDLE hFindFile, LPWIN32_FIND_DATAW lpFindFileData) +{ + return FindNextFileW(hFindFile, lpFindFileData); +} + +HANDLE FindFirstFileW_X(LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFindFileData) +{ + return FindFirstFileW(lpFileName, lpFindFileData); +} + +BOOL FindClose_X(HANDLE hFindFile) +{ + return FindClose(hFindFile); +} + +BOOL FileTimeToSystemTime_X(FILETIME* lpFileTime, LPSYSTEMTIME lpSystemTime) +{ + return FileTimeToSystemTime(lpFileTime, lpSystemTime); +} + +void ExitProcess_X(UINT uExitCode) +{ + ExitProcess(uExitCode); +} + +BOOL DeleteFileW_X(LPCWSTR lpFileName) +{ + return DeleteFileW(lpFileName); +} + +void DebugBreak_X() +{ + return DebugBreak(); +} + +HANDLE CreateThread_X(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId) +{ + return CreateThread(lpThreadAttributes, dwStackSize, lpStartAddress, lpParameter, dwCreationFlags, lpThreadId); +} + +HANDLE CreateFileW_X(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile) +{ + return CreateFileW(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile); +} + +HANDLE CreateEventW_X(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCWSTR lpName) +{ + return CreateEventW(lpEventAttributes, bManualReset, bInitialState, lpName); +} + +HANDLE CreateEventExW_X(LPSECURITY_ATTRIBUTES lpEventAttributes, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess) +{ + return CreateEventExW(lpEventAttributes, lpName, dwFlags, dwDesiredAccess); +} + +BOOL CreateDirectoryW_X(LPCWSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes) +{ + return CreateDirectoryW(lpPathName, lpSecurityAttributes); +} + +BOOL CloseHandle_X(HANDLE hObject) +{ + return CloseHandle(hObject); +} + +BOOL VirtualFree_X(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType) +{ + //Get rid of Warnings i guess TODO + //if (dwFreeType == 0) return; + return VirtualFree(lpAddress, dwSize, dwFreeType); +} + +BOOL TlsSetValue_X(DWORD dwTlsIndex, LPVOID lpTlsValue) +{ + return TlsSetValue(dwTlsIndex, lpTlsValue); +} + +LPVOID VirtualAlloc_X(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect) +{ + return VirtualAlloc(lpAddress, dwSize, flAllocationType, flProtect); +} + + +BOOL WriteFile_X(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped) +{ + return WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped); +} + +DWORD WaitForSingleObject_X(HANDLE hHandle, DWORD dwMilliseconds) +{ + return WaitForSingleObject(hHandle, dwMilliseconds); +} + +DWORD WaitForMultipleObjects_X(DWORD nCount, HANDLE* lpHandles, BOOL bWaitAll, DWORD dwMilliseconds) +{ + return WaitForMultipleObjects(nCount, lpHandles, bWaitAll, dwMilliseconds); +} + +LPVOID TlsGetValue_X(DWORD dwTlsIndex) +{ + return TlsGetValue(dwTlsIndex); +} + +DWORD TlsAlloc_X() +{ + return TlsAlloc(); +} + +BOOL SystemTimeToFileTime_X(SYSTEMTIME* lpSystemTime, LPFILETIME lpFileTime) +{ + return SystemTimeToFileTime(lpSystemTime, lpFileTime); +} + +void Sleep_X(DWORD dwMilliseconds) +{ + return Sleep(dwMilliseconds); +} + +BOOL SetThreadPriority_X(HANDLE hThread, int nPriority) +{ + return SetThreadPriority(hThread, nPriority); +} + +DWORD_PTR SetThreadAffinityMask_X(HANDLE hThread, DWORD_PTR dwThreadAffinityMask) +{ + return SetThreadAffinityMask(hThread, dwThreadAffinityMask); +} + +DWORD SetFilePointer_X(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod) +{ + return SetFilePointer(hFile, lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod); +} + +DWORD ResumeThread_X(HANDLE hThread) +{ + return ResumeThread(hThread); +} + +BOOL ResetEvent_X(HANDLE hEvent) +{ + return ResetEvent(hEvent); +} + +BOOL ReadFile_X(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) +{ + return ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped); +} + +void RaiseException_X(DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments, ULONG_PTR* lpArguments) +{ + return RaiseException(dwExceptionCode, dwExceptionFlags, nNumberOfArguments, lpArguments); +} + +BOOL QueryPerformanceFrequency_X(LARGE_INTEGER* lpFrequency) +{ + return QueryPerformanceFrequency(lpFrequency); +} + +BOOL QueryPerformanceCounter_X(LARGE_INTEGER* lpPerformanceCount) +{ + return QueryPerformanceCounter(lpPerformanceCount); +} + +void OutputDebugStringW_X(LPCWSTR lpOutputString) +{ + OutputDebugStringW(lpOutputString); +} + +int MultiByteToWideChar_X(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar) +{ + return MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, lpWideCharStr, cchWideChar); +} + +BOOL IsProcessorFeaturePresent_X(DWORD ProcessorFeature) +{ + return IsProcessorFeaturePresent(ProcessorFeature); +} + +BOOL IsDebuggerPresent_X() +{ + return IsDebuggerPresent(); +} + +BOOL InitializeCriticalSectionAndSpinCount_X(LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount) +{ + return InitializeCriticalSectionAndSpinCount(lpCriticalSection, dwSpinCount); +} + +GEOID GetUserGeoID_X(GEOCLASS GeoClass) +{ + return GetUserGeoID(GeoClass); +} + +int GetUserDefaultLocaleName_X(LPWSTR lpLocaleName, int cchLocaleName) +{ + return GetUserDefaultLocaleName(lpLocaleName, cchLocaleName); +} + +void GetSystemTime_X(LPSYSTEMTIME lpSystemTime) +{ + GetSystemTime(lpSystemTime); +} + + +__int64 GetConsoleType_X() +{ + //STUB + return 1; + /*unsigned int v5; // ecx + + _RAX = 1073741837LL; + __asm { cpuid } + v5 = WORD1(_RCX); + if (v5 >= 0x32) + { + switch (v5) + { + case '@': + return 2LL; + case 'P': + return 3LL; + case 'X': + return 4LL; + } + } + return 1LL;*/ +} // !!!!! diff --git a/dlls/kernelx/kernelx.h b/dlls/kernelx/kernelx.h index 57c24d9..9ccd8c8 100644 --- a/dlls/kernelx/kernelx.h +++ b/dlls/kernelx/kernelx.h @@ -16,6 +16,136 @@ extern "C" PVOID XMemAllocDefault_X(ULONG_PTR a1, UINT64 a2); extern "C" PVOID XMemAlloc_X(SIZE_T dwSize, ULONGLONG dwAttributes); +extern "C" LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter_X(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); + +extern "C" BOOL TerminateProcess_X(HANDLE hProcess, UINT uExitCode); + +extern "C" HANDLE GetCurrentProcess_X(); + +extern "C" LONG UnhandledExceptionFilter_X(_EXCEPTION_POINTERS* ExceptionInfo); + +extern "C" DWORD GetTickCount_X(); + +extern "C" void RtlCaptureContext_X(PCONTEXT ContextRecord); + +extern "C" PRUNTIME_FUNCTION RtlLookupFunctionEntry_X(DWORD64 ControlPc, PDWORD64 ImageBase, PUNWIND_HISTORY_TABLE HistoryTable); + +extern "C" DWORD GetProcessId_X(HANDLE Process); + +extern "C" void GetSystemTimeAsFileTime_X(LPFILETIME lpSystemTimeAsFileTime); + +extern "C" DWORD WaitForSingleObjectEx_X(HANDLE hHandle, DWORD dwMilliseconds, BOOL bAlertable); + +extern "C" void GetStartupInfoW_X(LPSTARTUPINFOW lpStartupInfo); + +extern "C" BOOL VirtualFree_X(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType); + +extern "C" BOOL TlsSetValue_X(DWORD dwTlsIndex, LPVOID lpTlsValue); + +extern "C" LPVOID VirtualAlloc_X(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); + +extern "C" BOOL XMemFreeDefault_X(PVOID P, unsigned __int64 a2); + +extern "C" BOOL WriteFile_X(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped); + +extern "C" DWORD WaitForSingleObject_X(HANDLE hHandle, DWORD dwMilliseconds); + +extern "C" DWORD WaitForMultipleObjects_X(DWORD nCount, HANDLE* lpHandles, BOOL bWaitAll, DWORD dwMilliseconds); + +extern "C" LPVOID TlsGetValue_X(DWORD dwTlsIndex); + +extern "C" DWORD TlsAlloc_X(); + +extern "C" BOOL SystemTimeToFileTime_X(SYSTEMTIME* lpSystemTime, LPFILETIME lpFileTime); + +extern "C" void Sleep_X(DWORD dwMilliseconds); + +extern "C" BOOL SetThreadPriority_X(HANDLE hThread, int nPriority); + +extern "C" DWORD_PTR SetThreadAffinityMask_X(HANDLE hThread, DWORD_PTR dwThreadAffinityMask); + +extern "C" DWORD SetFilePointer_X(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod); + +extern "C" DWORD ResumeThread_X(HANDLE hThread); + +extern "C" BOOL ResetEvent_X(HANDLE hEvent); + +extern "C" BOOL ReadFile_X(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); + +extern "C" void RaiseException_X(DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments, ULONG_PTR* lpArguments); + +extern "C" BOOL QueryPerformanceFrequency_X(LARGE_INTEGER* lpFrequency); + +extern "C" BOOL QueryPerformanceCounter_X(LARGE_INTEGER* lpPerformanceCount); + +extern "C" void OutputDebugStringW_X(LPCWSTR lpOutputString); + +extern "C" int MultiByteToWideChar_X(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar); + +extern "C" BOOL IsProcessorFeaturePresent_X(DWORD ProcessorFeature); + +extern "C" BOOL IsDebuggerPresent_X(); + +extern "C" BOOL InitializeCriticalSectionAndSpinCount_X(LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount); + +extern "C" GEOID GetUserGeoID_X(GEOCLASS GeoClass); + +extern "C" int GetUserDefaultLocaleName_X(LPWSTR lpLocaleName, int cchLocaleName); + +extern "C" void GetSystemTime_X(LPSYSTEMTIME lpSystemTime); + +extern "C" void GetStartupInfoW_X(LPSTARTUPINFOW lpStartupInfo); + +extern "C" HMODULE GetModuleHandleW_X(LPCWSTR lpModuleName); + +extern "C" void GetLocalTime_X(LPSYSTEMTIME lpSystemTime); + +extern "C" DWORD GetLastError_X(); + +extern "C" BOOL GetFileSizeEx_X(HANDLE hFile, PLARGE_INTEGER lpFileSize); + +extern "C" DWORD GetFileAttributesW_X(LPCWSTR lpFileName); + +extern "C" BOOL GetFileAttributesExW_X(LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation); + +extern "C" BOOL GetExitCodeThread_X(HANDLE hThread, LPDWORD lpExitCode); + +extern "C" HANDLE GetCurrentThread_X(); + +extern "C" DWORD GetCurrentThreadId_X(); + +extern "C" DWORD GetCurrentProcessId_X(); + +extern "C" BOOL FindNextFileW_X(HANDLE hFindFile, LPWIN32_FIND_DATAW lpFindFileData); + +extern "C" HANDLE FindFirstFileW_X(LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFindFileData); + +extern "C" BOOL FindClose_X(HANDLE hFindFile); + +extern "C" BOOL FileTimeToSystemTime_X(FILETIME* lpFileTime, LPSYSTEMTIME lpSystemTime); + +extern "C" void ExitProcess_X(UINT uExitCode); + +extern "C" BOOL DeleteFileW_X(LPCWSTR lpFileName); + +extern "C" void DebugBreak_X(); + +extern "C" HANDLE CreateThread_X(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId); + +extern "C" HANDLE CreateFileW_X(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); + +extern "C" HANDLE CreateEventW_X(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCWSTR lpName); + +extern "C" HANDLE CreateEventExW_X(LPSECURITY_ATTRIBUTES lpEventAttributes, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess); + +extern "C" BOOL CreateDirectoryW_X(LPCWSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes); + +extern "C" BOOL CloseHandle_X(HANDLE hObject); + +extern "C" __int64 GetConsoleType_X(); + + +//extern "C" BOOL TerminateProcess(HANDLE hProcess, UINT uExitCode); // EXE EXPORTS END From 100646149a2f9a5b160b8829f6308d568c8456e5 Mon Sep 17 00:00:00 2001 From: AleBlbl Date: Thu, 5 Sep 2024 01:03:43 +0200 Subject: [PATCH 2/2] Should Fix build check erro --- dlls/ntdll/ntdll.vcxproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/ntdll/ntdll.vcxproj b/dlls/ntdll/ntdll.vcxproj index 799f155..848b822 100644 --- a/dlls/ntdll/ntdll.vcxproj +++ b/dlls/ntdll/ntdll.vcxproj @@ -156,7 +156,7 @@ true NDEBUG;NTDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - Use + Create pch.h