diff --git a/patches/ntdll-LDR_MODULE/0001-ntdll-Mark-LDR-data-as-initialized.patch b/patches/ntdll-LDR_MODULE/0001-ntdll-Mark-LDR-data-as-initialized.patch new file mode 100644 index 00000000..15983344 --- /dev/null +++ b/patches/ntdll-LDR_MODULE/0001-ntdll-Mark-LDR-data-as-initialized.patch @@ -0,0 +1,24 @@ +From f30fb4fe4ef931b592f1a7edcc3609b9819158ff Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Tue, 7 Mar 2017 04:59:41 +0100 +Subject: ntdll: Mark LDR data as initialized. + +--- + dlls/ntdll/thread.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c +index c9a5da6226..0506f6bc10 100644 +--- a/dlls/ntdll/thread.c ++++ b/dlls/ntdll/thread.c +@@ -259,6 +259,7 @@ HANDLE thread_init(void) + params.CurrentDirectory.DosPath.MaximumLength = sizeof(current_dir); + params.wShowWindow = 1; /* SW_SHOWNORMAL */ + ldr.Length = sizeof(ldr); ++ ldr.Initialized = TRUE; + RtlInitializeBitMap( &tls_bitmap, peb->TlsBitmapBits, sizeof(peb->TlsBitmapBits) * 8 ); + RtlInitializeBitMap( &tls_expansion_bitmap, peb->TlsExpansionBitmapBits, + sizeof(peb->TlsExpansionBitmapBits) * 8 ); +-- +2.11.0 + diff --git a/patches/ntdll-LDR_MODULE/0002-include-Update-LDR_MODULE-to-more-recent-windows-ver.patch b/patches/ntdll-LDR_MODULE/0002-include-Update-LDR_MODULE-to-more-recent-windows-ver.patch new file mode 100644 index 00000000..7a940423 --- /dev/null +++ b/patches/ntdll-LDR_MODULE/0002-include-Update-LDR_MODULE-to-more-recent-windows-ver.patch @@ -0,0 +1,30 @@ +From 4b74342ce0dd261a93f5a2d30140078696b5a46d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Tue, 7 Mar 2017 15:26:50 +0100 +Subject: include: Update LDR_MODULE to more recent windows versions. + +--- + include/winternl.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/include/winternl.h b/include/winternl.h +index 5cd1664f1f..ef9a5bad1c 100644 +--- a/include/winternl.h ++++ b/include/winternl.h +@@ -2103,6 +2103,13 @@ typedef struct _LDR_MODULE + ULONG CheckSum; + ULONG TimeDateStamp; + HANDLE ActivationContext; ++ PVOID PatchInformation; ++ LIST_ENTRY ForwarderLinks; ++ LIST_ENTRY ServiceTagLinks; ++ LIST_ENTRY StaticLinks; ++ PVOID ContextInformation; ++ ULONG_PTR OriginalBase; ++ LARGE_INTEGER LoadTime; + } LDR_MODULE, *PLDR_MODULE; + + /* those defines are (some of the) regular LDR_MODULE.Flags values */ +-- +2.11.0 + diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 8d07ae64..c11f7289 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -233,6 +233,7 @@ patch_enable_all () enable_ntdll_Heap_FreeLists="$1" enable_ntdll_Hide_Wine_Exports="$1" enable_ntdll_Junction_Points="$1" + enable_ntdll_LDR_MODULE="$1" enable_ntdll_LdrEnumerateLoadedModules="$1" enable_ntdll_LdrGetDllHandle="$1" enable_ntdll_Loader_Machine_Type="$1" @@ -918,6 +919,9 @@ patch_enable () ntdll-Junction_Points) enable_ntdll_Junction_Points="$2" ;; + ntdll-LDR_MODULE) + enable_ntdll_LDR_MODULE="$2" + ;; ntdll-LdrEnumerateLoadedModules) enable_ntdll_LdrEnumerateLoadedModules="$2" ;; @@ -5427,6 +5431,20 @@ if test "$enable_ntdll_Junction_Points" -eq 1; then ) >> "$patchlist" fi +# Patchset ntdll-LDR_MODULE +# | +# | Modified files: +# | * dlls/ntdll/thread.c, include/winternl.h +# | +if test "$enable_ntdll_LDR_MODULE" -eq 1; then + patch_apply ntdll-LDR_MODULE/0001-ntdll-Mark-LDR-data-as-initialized.patch + patch_apply ntdll-LDR_MODULE/0002-include-Update-LDR_MODULE-to-more-recent-windows-ver.patch + ( + printf '%s\n' '+ { "Michael Müller", "ntdll: Mark LDR data as initialized.", 1 },'; + printf '%s\n' '+ { "Michael Müller", "include: Update LDR_MODULE to more recent windows versions.", 1 },'; + ) >> "$patchlist" +fi + # Patchset ntdll-RtlQueryPackageIdentity # | # | Modified files: