Releases: hatarch/KernelEx
Releases · hatarch/KernelEx
KernelEx 4.5.2
Changes since KernelEx v4.5.1
What's new
- Added KernelEx Virtual Device (VKrnlEx.vxd) project which makes modification of kernel32.dll file on disk unnecessary by patching the image directly in memory from kernel space before the shell starts
- Implemented a fix for a crash occuring when accessing a locked file through file mapping object
- Some programs shouldn't complain about not having admin privileges anymore
- Various bugfixes
Apps fixed / now working
- Now working: Mozilla Firefox 8.0
Detailed changelog
- removed obsolete SETUPKEX project
- moved downgrade detection and detection of pre-4.0 KernelEx from SETUPKEX to the installer
- installer: show information about pending reboot before displaying the main window
- AppSettings: updated configuration for Firefox 4+ installers
- VKrnlEx: added IFSMgr fix, repairing the problem in accessing a locked file through file mapping object
- added "VKrnlEx" project which superseeds "SetupKex" project, VKrnlEx makes modification of kernel32.dll file on disk unnecessary by patching the image directly in memory from kernel space before the shell starts
- implemented KERNEL32.UnlockFileEx (required for Firefox 7)
- fix circular-reference problem in apihook initialization
- added SHELL32.IsUserAnAdmin ordinal export - some apps shouldn't complain about not having admin privileges anymore
- core: api configuration dump had improper ordinal numbers listed
- core: fixed crash if invalid handle was passed to kexGetProcAddress (fixes mysterious crash if UNICOWS.DLL could not be loaded)
- apihook/apilog: fixed bug in parameter logging, leading to crashes if resulting string exceeded buffer length
- AppSettings: Canon printing manager didn't appear to like working under NT mode
KernelEx 4.5.1
What's new
- New KernelEx API Hook infrastructure for developers
- Various bugfixes
Apps fixed / now working
- New Opera 11 non-MSI installer now works
- Fixed download numbers in Opera 11 not being displayed properly
- Fixed missing checkboxes in GTK applications - Pidgin and GIMP among others
- Fixed Google Earth installation on non-english systems
Detailed changelog
- added kernel32.SetThreadUILanguage stub
- replaced some MSLU regkey APIs with custom implementation: advapi32.RegCreateKeyW, RegCreateKeyExW, RegDeleteKeyW, RegOpenKeyW, RegOpenKeyExW, RegSetValueExW
- replaced kernel32.GetLocaleInfoW (MSLU, error handling LOCALE_RETURN_NUMBER) with custom implementation (fixes Opera 11 download numbers)
- added advapi32.RegGetKeySecurity - allows Opera 11 uninstall to proceed further
- added redirection for 'All Users\Desktop' for SHGetFollder functions (allows Opera 11 installer to complete)
- fixed buffer length argument for wctomb in STACK_WtoA macro, added parentheses around macroes
- fixed advapi32.RegSetValueExA to allow null lpData pointer (allows Opera 11 setup to proceed further)
- added advapi32.GetNamedSecurityInfo (allows Opera 11 setup to proceed further)
- added GDI32.MaskBlt - fixes missing checkboxes in GTK apps - Pidgin and GIMP
- added api logging DLL + debug window for KernelEx API Hook infrastructure
- replaced old api logging with KernelEx API Hook infrastructure
- sdb: fixed google earth transform to work on non-english systems, added new product codes
- added missing configs for google earth exes
KernelEx 4.5 Final
What's new
- Reworked installer (should be more compatible with kernel32 updates)
- New welcome screen
- Fixed stability of extended TLS code
- Fixed hang issues with printers
- Added Windows Installer compatibility database for MSI files patching
Apps fixed / now working
- Fixed: Foxit Reader 3.1 drag-and-drop crash
- Fixed: Qt 4.6+ hotkey issues
- Fixed: Opera 11 'about:' pages
- Fixed: Firefox displaying file save dialog twice
- Fixed: caret not showing on some configurations (Opera)
- Now working: Google Earth 5.2 (6.0 beta experimentally)
Detailed changelog
- setup: Start Menu shortcuts, included Release Notes.txt
- verifier: new welcome screen
- core/setup: make KernelEx compatible with kernel32.dll updates:
- uninstalling KernelEx won't revert kernel32 updates anymore;
- KernelEx doesn't need to be reinstalled anymore if kernel32 is updated
- kernel32 backup is now stored in sysbckup directory
- core: don't load api libraries if resolver failed to initialize
- SystemParametersInfo: fix SPI_GETCARETWIDTH erroneous zero caret width return
- kernel32.TlsFree(ext) fixes:
- fixed a possible deadlock situation which could lead to system hang
- return error if TLS index has already been freed
- return 1 for success consistently for better compatibility
- comdlg32 GetOpen[Save]FileName: avoid HeapFree(null), changes last-error
- MSI shim database integration
- MSI shim database: transforms for office 2003; office 2007 converters; google earth 5.1,5.2,6.0b; acrobat reader 7
- settings: force Windows Installer into default configuration
- gdi32/textout: don't hold Win16Lock while calling GDI apis
- added Shim database create utility SDBcreate for MSI installer files patching
- settings: set GTAPI.DLL in Win2000 mode (Google Earth setup)
- implemented cryptui.CryptUIDlgViewContext (Google Earth 5.2)
- implemented kernel32.FindFirstFileExA/W (Opera)
- user32: per-thread keyboard state is now updated for left/right modifier keys (Qt 4.6+ hotkeys)
- user32: MapVirtualKey now maps left/right modifier key codes to AT keyboard scan codes.
- gdi32 unicode APIs: wrong conversion macros were used;
- gdi32: rewritten EnumFont*W APIs, FONTSIGNATURE is now passed to callback function; populated in registry cache (affects Qt 4.6+)
- DC objects are revalidated after text API calls
- replace MSLU's shell32.DragQueryFileW with custom implementation (fixes Foxit Reader 3.1 drag&drop crash)
- minor GDI text api fixes
KernelEx 4.5 RC 5
What's new
- KernelEx should now work better with Windows 95 shell
- Fixed stability issues with GDI anti-leaking code
Apps fixed / now working
- Fixed: OpenOffice.org often crashed on closing
- Fixed: VLC 1.1.x crashed on DVD playback on windows 98 shell
- Fixed: MAME insufficient memory error
- Fixed: Inkscape 0.47 invisible save dialog problem
- Fixed: Foxit Reader 3,4 resource leaks and random scrolling crashes
- Fixed: Opera crashed in 'Windows 2000' mode when trying to save file
- Fixed: Qt4 apps not showing interface fonts
- Fixed: AkelPad had broken national input
- Fixed: Easy Assembler Shell installer crash
- Now working: Media Player Classic Home Cinema rev 2374+
- Now working: MS Office 2003 Word/Excel + Viewers (experimental)
- Now working: MS Office 2007 converters [docx only] (experimental)
Detailed changelog
- font UID is used instead of handle to identify fonts in cache (UIDs are unique, handles may be reused),
- rewritten code to fix GDI objects leaking (improved stability, more leaks covered)
- RPC code is extended to support proxies with Win2k+ extensions (for MS Office 2007 converters)
- implemented OLE32.CoWaitForMultipleHandles with Wine code (for MS Office 2007 converters)
- use proper locking when accessing DC object in TextOut functions (improved stability)
- make GetTextExtentPoint32 threat negative string lengths as error (as NT does, fixes random Foxit Reader crashes during scrolling)
- make QueryInterface(CLSID_ShellLink,IID_IUnknown) prepare IShellLinkA interface for use (fixes "Easy Assembler Shell" installer)
- renamed "Compatibility" tab to "KernelEx" tab
- fix for USER32.LoadMenuA loading menus from LOAD_LIBRARY_AS_DATAFILE mmaped DLLs
- replaced MSLU USER32.LoadMenuIndirectW with direct call
- replaced buggy MSLU menu functions not checking flags with custom implementation: USER32.LoadMenuW, InsertMenuW, AppendMenuW, ChangeMenuW, ModifyMenuW
- fixed Akelpad incorrect national input + Office 2003 one-char-in-dialog-title ThUniLay bug
- fixed SetWindowTextW behaviour
- modified SHGetSpecialFolderPath fix for compatibility with win95 shell32
- added SHELL32.SHCreateDirectoryEx missing on Windows 98
- added KERNEL32.MapViewOfFile workaround for Word 2003
- added ADVAPI32 Lsa and DecryptFile/EncryptFile stubs (for Word 2003)
- added KERNEL32.SetDllDirectory stubs (for newer mpc-hc)
- Unicode applications receive Tahoma shell font (fixes Qt GUI problems)
- added protection against ExitProcess in DLL_PROCESS_DETACH which causes a crash on 9x
- set calling thread priority to the lowest possible in order to improve chance for thread which calls ExitProcess to finish latest and call dll process detach like NT (fixes OpenOffice.org shutdown crash)
- added a protection against SHFOLDER unloading by hostile programs (fixes VLC 1.1.4 DVD playback crash)
- terminate process if EnterCriticalSection is called on orphaned CS in DLL_PROCESS_DETACH - Vista behaviour (fixes OpenOffice.org shutdown crash)
- modified raw input stubs to return proper error codes and properly reset pointers
- replaced GetOpenFileNameW/GetSaveFileNameW MSLU wrapper with custom implementation
- fix: GetFileVersionInfoSizeW didn't return proper value on failure
KernelEx 4.5 RC 4
What's new
- Implemented SysLink common control class
- KernelEx auxiliary libraries weren't loaded when full path to system file was passed in call to LoadLibary
Apps fixed / now working
- Fixed: missing background colors and images in Mozilla Firefox 3.6.9/3.6.10
- Fixed: MSIMG32 warning and menu icon transparency issues in Opera 10.62
- Fixed: Google Picasa options dialog (empty tabs)
- Fixed: Adobe Flash Player crashes (reported by mailcat via sf.net forum)
- Fixed: Adobe Flash Player 10.1 volume control
- Fixed: Wizard101 game crash (bug #3041092)
- Fixed: Maxthon browser (freezing)
- Now working: Maxthon 1.6.7
- Now working: VLC 1.1.2 (without RP9)
Detailed changelog
- added kernel32.EncodePointer, DecodePointer, EncodeSystemPointer, DecodeSystemPointer
- SystemParametersInfo/SPI_GETHIGHCONTRAST call doesn't fail now when accessability pack is not installed or wrong uiParam parameter is passed (fixes Firefox 3.6.9/3.6.10)
- force usage of KernelEx's 'Known DLLs' when full system path is passed to LoadLibrary call
- fixed iGetProcAddress/kexGetProcAddress not taking into account relocation
- added fix to prevent DLL circular-references
- ported SysLink COMCTL32 class (fixes Google Picasa options dialog)
- added kernel32.SystemTimeToTzSpecificLocalTime, TzSpecificLocalTimeToSystemTime (for Google Picasa 3.8)
- implemented shell32.SHBindToParent (needed by Maxthon 1.6.7)
- fixed TlsExt pointer not zeroed after freeing
- added WS2_32.getaddrinfo, freeaddrinfo, getnameinfo implementation based on wspiapi.h
- added WINMM.waveInGetDevCapsW, waveOutGetDevCapsW (makes Flash Player 10.1 volume control work)
- added USER32.SetParent fix to forbid deadly circular references (fixes VLC 1.1.2 crash)
- fixed handling of lpOverlapped parameter in kernel32.PostQueuedCompletionStatus
- restricted completion ports to NT only
- added kernel32.GetProcessId, CreateFiberEx
- replaced kernel32.ReadConsoleInputW from MSLU with custom implementation due to bugs in the former
KernelEx 4.5 RC 3
hotfix to prevent DLL circular-references causing crashes on certain configurations
KernelEx 4.5 RC 2
What's new
- Implemented SysLink common control class
Apps fixed / now working
- Fixed: Google Picasa options dialog (empty tabs)
- Fixed: Adobe Flash Player crashes (reported by mailcat via sf.net forum)
- Fixed: Adobe Flash Player 10.1 volume control
- Fixed: Wizard101 game crash (bug #3041092)
- Fixed: Maxthon browser (freezing)
- Now working: Maxthon 1.6.7
- Now working: VLC 1.1.2 (without RP9)
Detailed changelog
- ported SysLink COMCTL32 class (fixes Google Picasa options dialog)
- added kernel32.SystemTimeToTzSpecificLocalTime, TzSpecificLocalTimeToSystemTime (for Google Picasa 3.8)
- implemented shell32.SHBindToParent (needed by Maxthon 1.6.7)
- fixed TlsExt pointer not zeroed after freeing
- added WS2_32.getaddrinfo, freeaddrinfo, getnameinfo implementation based on wspiapi.h
- added WINMM.waveInGetDevCapsW, waveOutGetDevCapsW (makes Flash Player 10.1 volume control work)
- added USER32.SetParent fix to forbid deadly circular references (fixes VLC 1.1.2 crash)
- fixed handling of lpOverlapped parameter in kernel32.PostQueuedCompletionStatus
- restricted completion ports to NT only
- added kernel32.GetProcessId, CreateFiberEx
- replaced kernel32.ReadConsoleInputW from MSLU with custom implementation due to bugs in the former
KernelEx 4.5 RC 1
What's new
- Reworked 'Compatibility' tab to allow resetting compatibility settings to default values
- Resources with high ID are disallowed when KernelEx is disabled
- Platform check is now re-enabled when KernelEx is disabled
- Fixed settings not applied for applications with international characters in path
- Implemented get-post I/O completion ports functionality
Apps fixed / now working
- Fixed: MSYS (broken)
- Fixed: Microsoft Access XP (crashing)
- Fixed: Rally Championship '99 (crashing)
- Fixed: GTA San Andreas (crashing)
- Fixed: VLC 1.0+ (UI)
- Fixed: Firefox 3.6.4+ (high cpu usage)
- Now working: Adobe Flash 10.1 plugin
- Now working: Mozilla Firefox 4.0 Beta 1
- Now working: Artweaver 1.0
- Now working: MPC-HC (newer builds, svn build 1391+)
Detailed changelog
- implemented kernel32.RtlCaptureContext for Firefox 4.0 Beta 2
- reworked compatibility tab to allow resetting compatibility settings to default values
- compatibility tab is visible on all PE modules thus allowing to change compatibility options on per-module basis
- disallow resources with high ID (>32767) when KernelEx is disabled
- perform platform check when KernelEx is disabled
- added kernel32.GetComputerNameEx stubs which supposedly make Artweaver run
- simulate TrueType MS Sans Serif for VLC
- use ASCII table instead of ISO8859-1 for character conversion (fixes problem with national characters in paths)
- added ADVAPI32.FileEncryptionStatus stubs
- added get-post I/O completion ports functionality for Firefox 3.6.4
- added a bunch of new user32 stubs allowing to run newer MPC-HC, includes: DefRawInputProc, GetRawInputBuffer, GetRawInputData, GetRawInputDeviceList, GetRawInputDeviceInfoA, GetRawInputDeviceInfoW, GetRegisteredRawInputDevices, RegisterRawInputDevices, PrintWindow
- more accurate object owner check in DeleteObject
- fixed missing ScriptCache unlock in case of error
- fixed crash on displaying of error message in KernelEx Setup program
- added a simple protection against footer corruption in jemalloc heap
- excluded jemalloc from handling limited size heaps
- added "Disable custom heap" configuration
- added "Default mode" configuration
- fixed GTA:SA crash on game load
- fixed Rally Championship '99 crash
- removed shell32.SHGetDiskFreeSpaceW as there is no such function in WIN32 api
- implemented missing SHELL32.SHGetDiskFreeSpaceEx on Windows 98
- implemented SHELL32.SHGetDiskFreeSpaceW for Adobe Flash 10
- removed positive PIDs patch as it causes incompatibility with MSYS and propably other apps too
KernelEx 4.5 Beta 2
What's new
- Implemented Uniscribe font caching (improves Firefox 3 performance noticeably).
- New thread pool implementation (fixes IE6 problems).
- Fixed rare font related Firefox 3 crash.
- Implemented timer queue APIs.
- Implemented SHParseDisplayName and restricted to XP+ configs to fix Firefox mailto issues.
- Fixed premature kexCOM unloading crashing Photoshop 5 and other buggy apps.
- Updated jemalloc to version from FF3.6.
- Fixed jemalloc sensitiveness to invalid pointers. Fixes vmwareuser, cvtaplog crashing.
- Implemented EnumPrintersW (Foxit 3.1 Unicode printing support).
- Fixed Opera 10.50 Beta Acid3 crash.
- Other small fixes / stubs.
Detailed changelog
- fixed incompatibility with Japanese WinME
- implemented USP font cache
- fix: kexFlushAppSettings didn't clear wildcard app settings
- fix: EnumFontFamiliesEx should only fill TEXTMETRIC structure if font is not TrueType
- FONTSIGNATURE sub-structure doesn't seem to contain valid information, accessing it could trigger a crash
- changed AddFontMemResourceEx and RemoveFontMemResourceEx stubs for Opera 10.50 beta compatibility
- implemented shell32.SHParseDisplayName [xp and above]
- implemented winspool.EnumPrintersW
- added advapi32.CreateProcessWithLogonW, InitiateSystemShutdownEx stubs
- replaced thread-pool implementation with custom code
- added timer-queue functions
- updated jemalloc to version from FF3.6
- added checks to alloc/realloc/free to make jemalloc more fault tolerant - better match Windows 9x behaviour
- kexCOM: LoadLibrary(self) trick to prevent premature unload in buggy programs
KernelEx 4.5 Beta 1
What's new
- Noticeably improved speed of applications which make extensive use of memory.
- This was made possible by introducing new memory allocator originating from FreeBSD - jemalloc.
- It improves heap memory allocation/free speed and reduces virtual memory fragmentation.
- Improved compatibility with Unicode applications by implementing new windowing layer
- which provides NT-consistent way to work with Unicode window procedures.
- Extended TLS slot limitation from 80 to 1000+, for some heavy apps.
- Lifted PE loader named resource limitation, allowing named resource-heavy libraries to load.
- Changed kernel obfuscator to produce positive object (process, thread) IDs in order to improve compatibility.
- Introduced kexCOM - new library to take care of missing COM interfaces. Fixes creating shell shortcuts in newer installers.
- GDI object destroying rules adjusted in order to fix certain resource leaks or unstability with Flash and other apps.
- Implemented certain userenv, unicode winspool, thread pool functions.
- Lot of API fixes and stubs.
- Improved Compatibility tab.
- Various architecture improvements.
- Fixed uninstall kernel32.bak not restoring reliably issue.
Apps now working / fixed
- .NET Framework 2 (fixed install/uninstall and apps)
- AbiWord 2.8 (usable, minor problems)
- Adobe Flash 10.1 beta
- Adobe Acrobat Reader 9 (very unstable)
- Adobe ImageReady CS2 (no Photoshop yet)
- Arora (WebKit Internet Browser)
- FastStone Image Viewer (fixed plugin crash)
- Foxit Reader 3.1
- ICQ 6.5 / ICQLite
- InkScape (usable)
- GIMP 2.6 (usable, fixed brush trace)
- Half-Life 2 Episode One/Two
- Miranda IM 0.8.x Unicode
- Mozilla Thunderbird 3 (fixed out of space errors)
- Nero DiscSpeed 4
- QtCreator 1.2.1
- SoftMaker Office 2008 (fixed input bugs)
- WinAmp 5.5x (fixed ML crash, charset problems)
- X-Moto
Notes
- This release is beta quality in order to test several major changes in KernelEx.
- Please test the apps which were working before. Compare the performance and memory usage of any heavy apps you use.
- Pay attention to possible national language input problems.
- If you want to downgrade to Final 2, you have to uninstall this beta first.
- Enjoy this great release. win9x 4ever.
Detailed changelog
- disable named/rcdata resource types mirroring
- changed obfuscator for non-negative PIDs
- fix crash when a process is created with '.exe' renamed to '.dll'
- added GDI anti-leaking code which forces NT destroying rules on font and bitmap objects.
- implemented extended TLS (Thread Local Storage), extends limit of 80 to ~1100 slots
- added Thunking Unicode Layer - set of user32 APIs
- which provides consistent Unicode window procedures conversion,
- allowing correct message conversion and mixture of window subclassing with NT-like rules.
- revamped non-shared api library loading process
- added jemalloc memory allocator, replacing standard Windows heap for applications
- fix: LoadShfolderProc could crash if shfolder.dll was unloaded by the application
- added USERENV library from Wine project
- changed module configuration settings storage - single module can now have different configurations under different processes (better accuracy, overriding is supported, recursive inheritance is supported, speed gains)
- change: Allow api library to be loaded even if some overridden modules aren't found (skips module tables)
- shell folder fix - display CSIDL_COMMON_* folders in start menu
- added support for environment variables in AppSettings database
- added kexCOM - implementing IShellLinkW and IExtractIconW interfaces for CLSID_ShellLink which are missing from Windows 98 shell
- Compatibility tab changes:
- redesigned, added baloon tips
- added option to disable configuration inheritance to child processes
- added option to override module configuration with process'es configuration (debug only)
- fixed COM implementation
- changes into the installer:
- enforce reboot after install/uninstall before subsequent installation,
- copy kernel32.bak to temporary file during uninstall before reboot
- forbid direct downgrades
- API changes:
- fix GlobalLock and GlobalUnlock to work properly with HeapAlloc pointers
- make CreateFile ignore unsupported FILE_SHARE_DELETE flag
- make GetDiskFreeSpace, GetDiskFreeSpaceEx not fail on certain file paths
- implemented USERENV.GetUserProfileDirectory, GetAllUsersProfileDirectory, GetProfilesDirectory
- added various winspool unicode (unicows) apis and stubs
- added EnumServicesStatusEx stubs
- fix CreateDIBSection to behave consistently with NT
- fix GetTempFileName to behave consistently with NT
- make ExtCreatePen not fail on PS_USERSTYLE pen style
- replaced MSLU GetObjectW (bug: MSLU always returns full object size regardless of buffer size passed) with custom implementation
- replaced MSLU RegEnumValueW with custom implementation
- added support for REG_EXPAND_SZ and REG_MULTI_SZ in RegQueryValueExW
- fixed RegQueryValueExW not handling return values properly
- fix: win9x doesn't allow MB_ERR_INVALID_CHARS parameter to be set for UTF-7 or UTF-8 codepages in MultiByteToWideChar and WideCharToMultiByte calls
- fix: RegisterWaitForSingleObject should test object state once and return immediatelly when dwMiliseconds is zero
- implemented GDI32.GetCharABCWidthsI, ADVAPI32.RtlGenRandom, KERNEL32.GetModuleHandleEx
- fixed uxtheme return addresses
- implemented theme metric functions
- fix WTSGetActiveConsoleSessionId should return 0 = local session instead 0xffffffff = no session
- implemented kernel32.DelayLoadFailureHook, QueueUserWorkItem, RegisterWaitForSingleObject, RegisterWaitForSingleObjectEx, UnregisterWait, UnregisterWaitEx, IsWow64Process, ProcessIdToSessionId, WTSGetActiveConsoleSessionId, IsWow64Process
- removed shlwapi.StrCmpLogicalW (which is available with IE6-updated shlwapi)
- implemented advapi32.DeleteAce
- added stubs for advapi32.NotifyBootConfigStatus, QueryWindows31FilesMigration, SynchronizeWindows31FilesAndWindowsNTRegistry
- changed advapi32.CreateWellKnownSid
- change: logfont* is optional in gdi32.EnumFontFamiliesEx on NT but not on 9x
- added stubs for kernel32.HeapSetInformation, GetProcessIoCounters, RtlCaptureStackBackTrace
- support events signalling in ReadFile & WriteFile overlapped apis
- fixed system bug in user32.GetNextDlgTabItem - system crashes trying to get next control in dialog to tab when there is only one control on dialog
- fixed GetDefaultPrinterW
- replaced SHGetFolderLocation Wine implementation with custom implementation
- fix: custom SHGetFolderLocation shouldn't be enabled for shell32 >= 5.0