Windows Server 2003 (NT 5.2.3790.0) build guide

Windows 10 Compatibility for Windows XP/2003 (WIP) - extras for NTDLL.DLL

Implementation of some NTDLL.DLL functions, available in Windows versions released after Windows XP/2003, to get software to that is compatible with Windows 2003R2/Vista/2008/2008R2/7/8/8.1/2016/10/2019 to run in Windows XP/2003.

The current implementation of C code compiles and links fine with the existing NTDLL.DLL code, but is a work in progress.

This is not intended to be a secure implementation for now, just intended to provide compatibility. Some functions are being tested now, more information here Wine-on-Windows

New files implementing functions start with an _. Missing functions in applications can be found out by loading the executable into Dependency Walker (depends.exe). This code can be used to to further with this test harness.

Needs help as they are many functions to be back-ported!

Requirements

  1. A x86 version of Windows 2003 / XP SP1 with source code available: see build-win2k3
  2. Disable Windows File Protection when DLL’s replacing after installation, see https://www.technipages.com/enable-disable-wfp
  3. Ability to execute executables built for newer versions than Windows XP SP2 / Windows Server 2003 RTM (NT 5.2).
FunctionStatusFunctionalityLast updated
RtlRunOnceExecuteOnceImplementedWine - untested - redirected from KERNEL32.DLL2020/12/02
RtlRunOnceCompleteImplementedWine - untested - redirected from KERNEL32.DLL2020/12/02
RtlInitializeConditionVariableImplementedWine - untested - redirected from KERNEL32.DLL2020/12/01
RtlWakeByAddressAllImplementedWine - untested - redirected from KERNEL32.DLL2020/12/01
RtlWakeAllConditionVariableImplementedWine - untested - redirected from KERNEL32.DLL2020/12/01
RtlWakeConditionVariableImplementedWine - untested - redirected from KERNEL32.DLL2020/12/01
RtlInitializeSRWLockImplementedWine - untested - redirected from KERNEL32.DLL2020/12/01
RtlAcquireSRWLockExclusiveImplementedWine - untested - redirected from KERNEL32.DLL2020/12/01
RtlAcquireSRWLockSharedImplementedWine - untested - redirected from KERNEL32.DLL2020/12/01
RtlTryAcquireSRWLockExclusiveImplementedWine - untested - redirected from KERNEL32.DLL2020/12/01
RtlReleaseSRWLockExclusiveImplementedWine - untested - redirected from KERNEL32.DLL2020/12/01
RtlReleaseSRWLockSharedImplementedWine - untested - redirected from KERNEL32.DLL2020/12/01
RtlInitializeCriticalSectionExImplementedWine - untested - redirected from KERNEL32.DLL2020/12/01
EtwEventRegisterImplementedstub returning ERROR_SUCCESS should use EVENTLOG.DLL - redirected from ADVAPI32.DLL2020/11/30
EtwEventUnregisterImplementedstub returning ERROR_SUCCESS should use EVENTLOG.DLL - redirected from ADVAPI32.DLL2020/11/30
EtwEventWriteImplementedstub returning ERROR_SUCCESS should use EVENTLOG.DLL - redirected from ADVAPI32.DLL2020/11/30
EtwEventWriteTransferImplementedstub returning ERROR_SUCCESS should use EVENTLOG.DLL - redirected from ADVAPI32.DLL2020/11/30
EtwEventWriteExImplementedstub returning ERROR_SUCCESS should use EVENTLOG.DLL - redirected from ADVAPI32.DLL2020/11/30
EtwEventSetInformationImplementedstub returning ERROR_SUCCESS should use EVENTLOG.DLL - redirected from ADVAPI32.DLL2020/11/30
DecodePointerTestedredirected from KERNEL32.DLL, see kernel32-obfuscated-pointers2020/11/28
EncodePointerTestedredirected from KERNEL32.DLL, see kernel32-obfuscated-pointers2020/11/28

Changes

Changes only happen in \base\ntdll

  1. Place _*.c & _*.h files from the <date>__NTDLL.DLL.zip archive, see Download below

  2. (Included in the patched files) In \base\ntdll\ntdlldef.src: add these two lines

	EtwEventRegister
	EtwEventUnregister
	EtwEventWrite
	EtwEventWriteTransfer
	EtwEventWriteEx
	EtwEventSetInformation
    RtlInitializeConditionVariable
	RtlWakeByAddressAll
	RtlWakeAllConditionVariable
	RtlWakeConditionVariable
	RtlInitializeSRWLock
    RtlAcquireSRWLockExclusive
	RtlAcquireSRWLockShared
	RtlTryAcquireSRWLockExclusive
	RtlReleaseSRWLockExclusive
	RtlReleaseSRWLockShared
	RtlInitializeCriticalSectionEx
	RtlRunOnceExecuteOnce
	RtlRunOnceComplete
  1. (Included in the patched files) In \base\ntdll\daytona\sources & \base\ntdll\wow6432\sources add to SOURCES macro:
	..\_obfuscated_pointers.c \
	..\_synchapi.c \
	..\_eventlog.c \
  1. Run bcz in \base\ntdll
  2. Overwrite the created \base\ntdll\daytona\obj\i386\NTDLL.DLL in the C:\WINDOWS\SYSTEM32 folder of your Windows XP installation.

Download implementations

DateFilenameLink
2020/12/0220201202__NTDLL.DLL.v2.ziphttps://gofile.io/d/DH9dZL