Windhawk v1.5: Symbol cache server, general stability

Introducing version 1.5 of Windhawk, the tool that aims to make it easier to customize Windows and programs.

Symbol cache server

The most notable new feature of the new Windhawk version is the integration with the symbol cache server.

Most users are probably familiar with this dialog which pops up after installing mods or after updating Windows:

Some mods rely on symbol files which are downloaded from the Microsoft public symbol server. These symbol files aren’t tiny, and downloading them takes time. The symbol cache server was created to calculate and store only the necessary information for each mod, which is much smaller than the symbol files. The new Windhawk version checks the symbol cache server for the relevant data, and only if this data is missing (e.g. the Windows version was just released or is too old), it falls back to downloading the symbol files.

General stability

The new version got various fixes and improvements regarding stability, compatibility and performance. Probably the most notable compatibility fix is of Microsoft Office not opening while Windhawk is running. The incompatibility was caused by a combination of Windhawk’s code injection method and an update of Microsoft Office. The new Windhawk version fixes the incompatibility and makes it less likely to occur in the future.

P.S. Compatibility and code injection:

On the topic of compatibility, some users wondered why Windhawk even injects code into Microsoft Office. Some mods target all processes (e.g. Slick Window Arrangement), but if no such mods are used, shouldn’t Windhawk inject code only into programs which are being customized?

Windhawk indeed injects code into all but a few selected system processes by default. The reason for that is to be able to intercept the creation of new processes, and load mods before a new target process starts running. Without this ability, some mods that rely on being loaded early on won’t work correctly.

Windhawk allows to customize the list of processes to inject code to in its advanced settings, but some users wondered whether the default should be changed to minimize incompatibilities. I believe that the current default shouldn’t be changed since most users don’t encounter such incompatibilities (the Office incident, which is now fixed, being an uncommon one), but users will get a bad experience if some mods won’t work correctly some of the time.

The best solution would be to have some mechanism in Windows that will allow Windhawk to load mods at an early stage without having to inject code into all processes. There was some discussion about it on GitHub, and right now the most promising solution seems to be a small kernel driver. Getting a driver to be signed for Windows is a complicated and costly process, but I might explore integrating it into Windhawk in the future.

Updates for mod developers

The Windhawk compiler and APIs were updated. As a result, some mods may require small adjustments. Mods that are installed from the repository are installed in compatibility mode, and so all mods can still be installed and used as before with the new Windhawk version.

For the complete list of changes in the new Windhawk version, check out the changelog. You can get the new version here.

Posted in Software, Updates by Michael (Ramen Software) on July 27th, 2024.
Tags:

Leave a Reply