Windows 7 Forums
Welcome to Windows 7 Forums. Our forum is dedicated to helping you find support and solutions for any problems regarding your Windows 7 PC be it Dell, HP, Acer, Asus or a custom build. We also provide an extensive Windows 7 tutorial section that covers a wide range of tips and tricks.

Windows 7: How to change boot animation in Windows 7

21 Oct 2010   #271

Windows 7 Ultimate x32

Quote   Quote: Originally Posted by joakim View Post

This way the kernel will always continue booting the system without testsigning, regardless of what you put in the bcd. The nice thing is you can have testsigning for the first part of the boot process, and choose to finalize the booting without testsigning. When testing kernels it could be a good thing to specify your custom kernel in the bcd with the kernel parameter (like "KERNEL mykernel.exe").

Now TESTSIGNING gets deactivated after the animation is played.

The same effect can be reached just by changing TESTSIGNING in ntoskrnl.exe to another word. In this case kernel won't recognize and load further the option of testsigning, applied to it by winload from bcd, cause it will seek for another name of this parameter. If for some reason you'll still want kernel to apply testsigning regime, in this case we can use command:
bcdedit /set loadoptions changedname (where changedname is what we wrote in ntoskrnl.exe instead of TESTSIGNING).

Found how to change cursor's default white color in boot menu by editing BOOTMGR.XSL resourse of bootmgr.exe.mui:
in section <xsl:template match="osboot-list-tools">
to make it, for example, green:
add inverse-color="XGXIXGXX" after <body background-color="XXXX" foreground-color="RGBX" . This will also change title's and footer's color, because in this template they're not set separately by default, therefore to change them independently, you need to add color=... parameter after <title and <footer .

My System SpecsSystem Spec
24 Oct 2010   #272

Windows 7 Pro 64 / 7 Pro 64 / 7 Home Prem 64

First, I have been very absent again, my life is getting very busy and I have lost nearly all free time. But I hope to use Joakim's results and get this last major issue in the program solved and published.

@AlexYM 1
The decompression program works with the file you posted. Note: the decompression program is VERY simple and made for testing. You have to extract the compressed data chunk yourself first. To find it search for "MZ" in the file using a hex editor. You have to extract 3 bytes before the second MZ to the end of the file, then run that extracted data through the decompressor. In my full program I have added lots of code to search for the compressed chunk, decompress it, edit it, recompress it, and replace the original data.

@Joakim 1
We know that it exists there. I am personally trying to make my program use what the user has as much as possible, with little edits. He is also talking about the beta, do we know it is the same situation for the beta? I examined it and the decompressed bootmgr.exe has changed.

@Joakim 2
I planned to add the image drawing where the current copyright-startup message drawing takes place.

in winload.exe : _OslpMain:
; graphics_pack is a struct with data about the Vista-style load screen
; The first element is a pointer to the raw BMP file data
; It is NULL when we successfully have loaded the Windows 7 animation
.text:004013E4                 mov     eax, graphics_pack
.text:004013E9                 mov     ecx, [eax]
.text:004013EB                 test    ecx, ecx
.text:004013ED                 jz      short loc_4013FD

; Position 8 of the structure is the x,y to draw at (2 DWORDS)
.text:004013EF                 add     eax, 8
.text:004013F2                 push    eax ; x,y coords
.text:004013F3                 push    ecx ; pointer to the BMP file data

; Draw the BMP file at the specified x,y position
.text:004013F4                 call    _BgpGxDrawBitmapImage@12
.text:004013F9                 test    eax, eax
.text:004013FB                 jl      short loc_401416

; This draws the copyright and starting message
; It only runs IF there is no BMP to draw or the BMP was successfully drawn
.text:004013FD loc_4013FD:
.text:004013FD                 call    _BgpDrawCopyright@0
.text:00401402                 test    eax, eax
.text:00401404                 jl      short loc_401416
.text:00401406                 mov     eax, 2338h
.text:0040140B                 call    _BlResourceFindMessage@4
.text:00401410                 push    eax
.text:00401411                 call    _BgDisplayString@4
So my plan was to hijack that already in-place function call to draw BMPs. We have 15 bytes to push a pointer to a custom BMP file and x, y coordinates (easy just to do 0, 0 with a fullscreen BMP). We easily could call a function that loads the BMP file into memory beforehand or right there. We don't even need to do any parsing of the BMP! It is all handled by _BgpGxDrawBitmapImage. It would be nice to add the BMP as a resource of winload.exe or bootres.dll. There is a function in winload.exe for loading those:
To load from winload.exe.mui / winload.exe bitmap resources:
IMAGE_RESOURCE_DATA_ENTRY *entry; // the resource entry
void *data = NULL; // the BMP data
DWORD id = 1; // or whatever id
DWORD size = 0; // the size
if (ResFindDataEntryFromImage(0, NULL, 2, &id, 0, &entry, &data) >= 0 )
  size = entry->Size;
To load from bootres.dll bitmap resources replace the 0 and NULL with BootResourceDllSize and BootResourceDllBase. Of course this needs to be in assembly... look at _BlResourceFindDataFromImage for an example (it essentially identical to my example code above and how I figured all this out).

To prevent the copyright and startup messages from being drawn the test right after _BgpGxDrawBitmapImage needs to be changed and the messages won't be drawn.

@Joakim 3
You have come up with numerous solutions, impressive. However it is a bit overwhelming. Can you do a 'best of', taking into account the following:
  • My code currently updates all checksums so all of those hacks are irrelevant to me.
  • I am able to load unsigned bootres.dll and winload.exe,mui without testsigning on {current}. I am pretty sure I do not need any more winload.exe hacks.
  • As soon as I turn off testsigning for {bootmgr} things go awry.
What is your recommendation?

@AkexYM 2 and Joakim 4
I don't care if testsigning really is active, the issue I have is that you cannot set testsigning to on from an unattended install until too late. So the testsigning issue (for me at least) is that I want to never have to run anything involving bcdedit.
My System SpecsSystem Spec
26 Oct 2010   #273

Windows 7 Home Premium 64bit

Hi everyone!

Just tried your app thaimin, and I must say, that I'm pretty surprised that it actually works. Good job! It changed animation and "©Microsoft Corporation" smoothly, but "Starting Windows" ("Trwa uruchamianie systemu Windows" in my case) remains intact. Do you think it could be that I'm Pole, and using polish version of Windows 7? Is there anyway to change it? I'm not really that good in hacking resources, so I can't find it alone. Help appreciated:)!

Other than that, none problems found. It works really good under my Windows 7 Home Premium x64 Build 7600. I'm looking forward for version of your app that don't need testsigning to run.

And for my contribution to the project I proudly present you my boot animation:

It's Nanami Madobe, official Japanese Windows 7 mascot. I'm not super skilled in animation, but I'm thinking this one is quite decent, so I'm posting it here. You can download activity.bmp from here:
MEGAUPLOAD - The leading online storage and file delivery service
I'll post a video of how it looks during startup later! :)

If you need it thaimin, I can resize it to different sizes and frame numbers, so you can use it for testing.

I think thats all for now...
Later guys!
My System SpecsSystem Spec

26 Oct 2010   #274

Windows 7 Pro 64 / 7 Pro 64 / 7 Home Prem 64

So there is a solution to the problem you are having (it also happens on my English version but apparently doesn't happen to everyone).

You need to re-run my program but only change the startup text and target winload.exe.mui instead of winload.exe (it will be in system32\pl-PL\ for you). The new version already handles this issue.
My System SpecsSystem Spec
26 Oct 2010   #275

Windows 7 Home Premium 64bit

Your app won't let me patch my winload.exe.mui file, because it couldn't find data about "©Microsoft Corporation", and if it won't find it, then it won't patch the file at all. Maybe it's because localized files differ so much between. Anyway I helped myself with some hex editor and Restorator, and it works now. :)

So here is my tip: make changing "Starting Windows" and "©Microsoft Corporation" two different processes, both uncheckable, just like changing the animation, so when there is no need to change one of this two components, then you just uncheck what don't interests you, and the app doesn't care about it anymore. Maybe then it will work.

Sorry if my English isn't understandable. I hadn't chance to use it in a long time, so I'm still warming up ;P.
My System SpecsSystem Spec
26 Oct 2010   #276

Windows 7 Pro 64 / 7 Pro 64 / 7 Home Prem 64

Well, yes, actually that is why I made the separate signing program that can (for sure) sign the MUI since it doesn't look for "©Microsoft Corporation". However I am glad you got it working.

The truth is the new program is VERY different. No more checking what you want to do, it just does what it needs to and does handle the MUI situation. You can check out the preview of alpha 9 which is what alpha 9 feels like but doesn't work (purposely disabled). I have everything except one thing working, which I am waiting to hear back from joakim on.

The new program is incredibly more powerful so I hope you will check it out once it is done.

Your English is great, it is much better than my Polish! (at one point I knew a few words, but not anymore...) I can handle programming languages very well, but I am terrible at real languages.
My System SpecsSystem Spec
27 Oct 2010   #277


I just got a little distracted by myself trying to figure out how to boot off *any* image inside boot.wim; &bull; View topic - Booting an arbitrary image inside boot.wim If you by any chance have anything to add on the matter, then feel free..

About the testsigning in {bootmgr}, I will need to run a quick test this evening then. Actually I never tried your recompressor program, so that could possibly be the issue. As I know several ways to bypass testsigning for {bootmgr}, I should be able to identify the issue rather quickly.

My System SpecsSystem Spec
27 Oct 2010   #278


Your compression function does not work 100% correct. Well it works but the compressed file ends up a few bytes bigger than the stub expects. For that reason it will throw a message about bootmgr corrupt.

What we can do before compressing bootmgr.exe, is deleting the embedded certificate as well as the file information (for example). This is just wasted bytes we don't need any longer. Now after compression the size is within what is expected and everything works just fine.

Two hacks are necessary.

1. To deactivate the checksum in the stub, we must replace 7403 with eb08 at 0x105e.

2. To deactivate the signature check replace 7416 with 9090 at va 0x00421ec5.

My System SpecsSystem Spec
29 Oct 2010   #279

Windows 7 Pro 64 / 7 Pro 64 / 7 Home Prem 64

Yeah, I wasn't able to get as good compression as they got (1.27 Kb or 0.3% larger). I tried for awhile to find out why their compression algorithm compressed better but I couldn't (mine seemed optimal...). I thought what could 0.3% larger file really do? It's basically the same size... I guess I was wrong!

Also, when you change the file, the compression for the modified bytes will change (for better or maybe for worse). So yeah, we can get rid of stuff. When you say "embedded certificate" what do you mean? The certificate at the very end of the EXE? I actually already get rid of this in my program! Well, not tested, but I have code that should.

Is #1 necessary? My program updates the checksum automatically on bootmgr.exe.

I will try this hack this weekend and hopefully release Alpha 9.
My System SpecsSystem Spec
29 Oct 2010   #280


#1 is strictly not needed as long as you always update the checksum of bootmgr.exe. On the other hand, it will still boot fine even with a good checksum.

Yes I meant the embedded signed certificate, which we no longer need for anything. Since it will work when reducing the size slightly before compression, I think you should not bother much with optimizing the compression algorithm.

Let me know if you run into problems with #2.

My System SpecsSystem Spec

 How to change boot animation in Windows 7

Thread Tools

Similar help and support threads
Thread Forum
How di I change boot animation and text?
Hey! So I have been wanting to change my boot/startup logo from the default windows logo with "starting windows" and Microsoft text. So after many google attempts i have stumbled upon an application, BootUpdater. This program supposedly can easily change the windows animations and is exactly...
How do I change windows7 boot animation when resolution 800X600
Hello , I already know change windows7 boot animation need access bootres.dll and winload.exe.mui. But if resolution below 1024X768 it seem different. Can anybody teach me which file need be change, Thank you a lot! Ps. I know my English is terrible , I hope it can be understood.
Boot screen Animation Change?
I don't know if this one can be done. I know how to turn off the ding sound it makes when my computer boots up but does anyone know how to change the boot screen animation? I would like to put one of my own animations on there instead of the windows logo popping up from 4 little lights.
Windows 7 Home premium 64bit won't boot, just plays boot animation
My Windows 7 has stopped booting after a restart, the system would just endlessly play the boot animation and not boot properly... system restore won't work, startup repair won't work, chdsk and sfc won't work. I have yet to try and see whether a Registry fix works. Windows loads the WRE VERY...
BSOD Help and Support
How to change the boot screen animation?
Has anyone figured out how to change the boot animation? John

Our Sites

Site Links

About Us

Find Us

Windows 7 Forums is an independent web site and has not been authorized, sponsored, or otherwise approved by Microsoft Corporation. "Windows 7" and related materials are trademarks of Microsoft Corp.

© Designer Media Ltd

All times are GMT -5. The time now is 20:24.
Twitter Facebook Google+