Remove same version check in MSVCRT.DLL \ MSVCIRT.DLL (Visual C++ Runtime Libraries) during start-up of Windows XP/2003
msvcirt-version-unlock
Purpose/History
When Windows boots, it compares the (kernel) version of Windows, typically NT 5.2, running with the version of MSVCRT.DLL \ MSVCIRT.DLL , the (main) Visual C++ Runtime (function) Library. If it doesn't match, it shuts download Windows immedialy or will show this BSOD:
STOP: c000021a {Fatal System Error}
The Windows Logon Process system process terminated unexpectedly with a status of 0x00000080 (0x00000000) 0x00000000).
The system has been shut down
The comments in the header of the file we will update clearly state this happens, but doesn't say that it causes a BSOD.
Add test to preclude msvcrt.dll loading on anything other than the OS it ships with.
It is necessary to apply this when changing the Windows versions values in \public\sdk\inc\ntverp.h
and not booting the same (kernel) Windows NT version as the version that MSVCRT.DLL \ MSVCIRT.DLL is reporting
Relevant information here: https://blog.enrii.com/2008/07/06/troubleshooting-window-xp-c000021a-error-blue-screen/
Requirements
A x86 version of Windows 2003 / XP SP1 with source code available: see https://rentry.co/build-win2k3
Changes
- In
\base\crts\crtw32\dllstuff\crtlib.c
look for the_CRTDLL_INIT
function, below This routine does the C runtime initialization.:
- and comment the beginning of the function body out, like so:
- Run
bcz
in\base\crts
- Overwrite the created
\base\crts\crtw32\iostream\dll\obj\i386\MSVCIRT.DLL
in theC:\WINDOWS\SYSTEM32
folder of your Windows XP installation