The bane of my existence, finally fixed. (2024-06-17)
For the entirety of my development of the Windows 7 Extended Kernel, there has been a big problem that has plagued me: the Internet Explorer security popup.
The issue was that any time Internet Explorer was used in a program, the program simply wouldn't start. Once IERTUTIL.DLL's entry point was called, it would pop up a big "YOUR INTERNET EXPLORER SECURITY SETTINGS DO NOT ALLOW THIS" window and the program would terminate once you hit okay.
This problem was amplified by the fact that the Windows Explorer and shell has ran on Internet Explorer since the Active Desktop update in Windows 98, which made it very hard to even launch programs with the version spoof enabled.
It turns out, the issue only only affected newer versions of Internet Explorer (with the newer IERTUTIL.DLL), because when Microsoft updated IE in 2013, they released the update side-by-side for Windows 8.x and Windows 7, and since they were too lazy to release two seperate versions, they decided instead to just add a version check in the code.
Of course, this version check worked fine on an official, unmodified build of Windows, but the version spoofing functionality in my extended kernel (which is needed to use software that "requires" a newer version of Windows) would cause this to fail, leading to the security popup.
I had tried to modify GetVersionExA before, but I would need to import new functions to detect what module the function was being called from, and it was just kind of a mess.
It turns out, I was very much overthinking this, as IERTUTIL.DLL itself could just be patched. And so, today I managed to fix this issue by NOP'ing a single instruction (the instruction to jump to the version check code), so that the binary uses the Windows 7 codepaths rather than the Windows 8.x ones.
As you can see here, the installer for the Rockstar Games launcher, which previous would throw the IE security popup, now works perfectly.
¡Viva la Windows 7, para 2024 y más allá!