Jan 252000

Putting the Daemon into Windows

John Russell jr@paranoia.demon.nl helped me with the favicon.ico article and wrote the following which describes how to put the Daemon into Windows.  Thanks John.

For details on how to make this work with NT, please see below.

Screen shots (added on 20 March 2000)

Greg Roberts kindly sent me his screen shot.  He’s changed the default mIRC icon.  Very nice.  Thanks greg.

I’m looking for more screen shots.   Please add the URL of your screen shot via a comment.

How to do it

I wrote this some time ago for Win95, but I just verified it and all went well under Win98SE.

Copy the file USER.EXE from your %Windows%\System directory to a tempoorary directory.  Using an icon editor that can read executables, open the copy of USER.EXE.  I’ll explain the rest of the procedure with step by step instructions with Microangeleo since that is the icon editor I use.

The Start Menu uses the flying windows logo, the very first icon in this file.   Double click on this icon which will open up an icon editor box.  Drag the BSD icon included here from wherever it is into the edit box for the logo.  Now click somewhere in the edit box (dumb but MA will not let you update the library otherwise).   Next select file->update library (or something to that effect).  Save your changes and exit.  A quick browse with explorer of the user.exe file should now show the BSD icon.

Good.  You’re ready to rock.  Next, exit to DOS, backup the original file again, but this time with a different name or to a different place, and then replace the original with your modified version.  When you restart Windows, you should have the icon (I had to restart three times so it could happen to you too.  The first time, Windows went into safe mode, I just exited; the second time it lost the display driver info so came up ugly.  I changed it back and rebooted and all was back to normal, except for the icon change of course).

Working with NT (added on 23 March 2000)

Harald Schmalzbauer wrote in with this bit about how to get the daemon into NT.

Use usr32.dll instead of user.exe.   The 7th icon (Bitmap) is the flying window.

After modifying the DLL comes the problem.  I thought that the easiest way would be to distribute the new user32.dll with the service pack, but this doesn’t work because of the same thing why NT stops booting when files have been modified.    NT checks the imported files by verifying the checksum.  The modification of the file to put in a new image will alter the checksum for the DLL.   But there is a function called MapFilesAndCheckSum (see imagehlp, DDK) which can calculate the new checksum.

So when you open the user32.dll with QuickView,  within the first 20 lines you see a checksum.  In service Pack 6 it is 0005a961.  After I calculated the new checksum (0005dff1), I replaced it the original checksum by using  a hex editor.   That’s it.  Now NT doesn’t complain that the file is corrupt while booting and you can install it by extracting the service pack and replacing the file before running update.

Harald also supplied a checksum program.  You can download it from samples/checksum.exe but use it at your own risk.

Points to note

John mentioned that this procedure is fairly common knowledge in the Windows advanced user/techie world.

The file you need is samples/bsd.ico.   This file contains the daemon in multiple sizes (from 10×10-32×32 as you’ll see) as required by USER.EXE.

Screen shots wanted!

If you have done this, please provide some feedback via the comments facility.