Para el proyecto de la Mame Cabinet he decidido que no quiero que se vea que se está cargando un windows cuando se inicia la máquina, por eso tengo que ocultar la “boot screen” de windows y me he estado documentando acerca del tema.
Ya se que hay software que lo hace de forma automática, pero a mi no me ha funcionado demasiado bien y por otra parte quería comprender que es lo que hay que hacer exactamente para cambiar la imagen que aparece cuando se está iniciando Windows.
En principio la pantalla que aparece con el logotipo de Windows cuando este comienza a cargarse, es un recurso contenido en un ejecutable que conforma el nucleo de este sistema operativo. Dicho fichero es el ntoskrnl.exe y se encuentra en el directorio windows/system32.
En este ejecutable están varios de los bmps que contienen la imagen y la animación que indica el estado de carga. Son todos bitmaps de 16 colores con una misma paleta indexada.
Para poder visualizar, extraer o modificar directamente estos recursos necesitamos un programa como Resource Hacker que nos permite abrir cualquier ejecutable de windows, explorar sus recursos (imagenes, textos, formularios, etc…) y manipularlos a nuestro antojo.
Al abrir ntoskrnl.exe encontramos unos cuantos bitmaps entre los recursos. Los que nos interesan son el 1 y el 7 o el 8 dependiendo de la version de XP que tengamos. El 1 es el boot screen y el 7 y el 8 son la barra animada que indica que el SO se está cargando.
Al abrir el 1 veremos un bitmap de 640×480 todo negro. No hay que preocuparse, todo tiene su explicación.
Por alguna razón desconocida, a partir de Windows XP, la paleta viene hardcodeada en el propio ejecutable separada del bitmap, supongo que para entorpecer la labor de cambiar el bootscreen :).
En anteriores versiones, como windows 2000 o NT la informacion de la paleta se recogía del propio recurso, pero ahora ya no es así. Por eso antes era más fácil y mas seguro cambiarlo que ahora.
Lo que hacemos es reemplazar esos bitmaps por los bitmaps que tengamos preparados personales. Recordad 640×480 16 colores.
La paleta es por tanto la parte mas dificil de cambiar. Como he dicho la paleta está codificada directamente en el ejecutable, y como existen varias versiones de ntoskrnl.exe dependiendo de la versión del XP y el service pack de nuestro windows, lo que tenemos que hacer es buscar donde se encuentra esa paleta codificada exactamente dentro del ejecutable.
Para ello solo tenemos que lanzar un editor hexadecimal; vale con el ultraedit que también abre y edita ficheros binarios.
Ahora tenemos que buscar dos o tres colores de la paleta del bitmap original del boot screen que no sean ni el negro ni el blanco. Con suerte solo necesitareis un par de ellos.
Por ejemplo el color con índice 3 de el bitmap original es “#2D3ED2” y con indice 4 es “#536501”.
Ahora buscamos en el hexadecimal el primer valor “2D3ED2”, lo mas seguro es que no encontreis nada, eso es por que los words en bigendian que usa intel van al revés, es decir en realidad tenemos que buscar un word (4 bytes) que sería “00D23E2D”. Ahora si que encontramos algo, en mi caso en el offset 74F93. Para estar seguros de que esta es la paleta miramos si a continuación está el siguiente color “536501” que pasado a bigendian sería “00016553”. Eureka!!! Podemos hacer mas comprobaciones si queremos estar seguros. La cadena completa de la paleta puede variar de una version a otra, ya que pueden cambiar los colores, pero en mi caso es esta:
00 00 00 00 00 15 1A 20 00 46 46 46 00 D2 3E 2D 00 01 65 53 00 05 35 B2 00 7E 7E 7E 00 00 92 89 00 FC 7F 5E 00 20 6B F7 00 FF A6 8D 00 04 DC 8E 00 1B BC F3 00 BC BC BC 00 FC FC FC 00 FF FF FF
y asi es como se ve en mi editor
Si buscas esta cadena completa no tendrás pérdida.
Ahora solo hay que cambiar los colores que están ahí por los de la paleta de nuestra imagen, en el mismo orden, en hexadecimal y teniendo en cuenta el swapeado de bytes y que hay que hacer un padding con “00” por cada triplete RGB de colores. Es decir, si tengo el color R:191 G:214 B:13 (color corporativo de Zinkia), primero lo paso a hexa R:BF G:D6 B:0D, oséa “#BFD60D”, que para ir en en ntoskrnl.exe debe ser 00 0D D6 BF.
Eso es todo. Es un poco arduo, pero nada mas.
Un apunte adicional; no se por que razón el 2º color de la paleta, que yo estaba usando de fondo, me lo cambia por negro, claro que también pudo haber sido que me lo guardase photoshop como color de transparencia… hacer pruebas es tan laborioso que no me he parado a investigar mas.
Recordad que estamos haciendo modificaciones sobre UNA COPIA de ntoskrnl.exe, a la que habremos llamado por ejemplo modntoskrnl.exe.
Antes teníamos la opción de tener varios arranques de XP o de Win2000 que cargaban diferentes kernels. De este modo podiamos modificar el logotipo en uno de los arranques creando una copia de ntoskrnl.exe sobre la que trabajabamos y tener el otro por si algo salía mal. Para ello había que editar el boot.ini que esta oculto en el raiz del disco de arranque y añadirle el una linea con el parámetro /kernel=modntoskrnl.exe . Algo así:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Boot Screen modificada" /noexecute=optin /fastdetect /kernel=modntoskrnl.exe
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
El SP2 para windows XP ha cambiado esto y ya no se puede indicar un kernel alternativo en la línea del boot.ini con el parametro /kernel. El SP2 directamente ha hecho que esta opcion se ignore (al menos el mio :), por lo que hay que trabajar sobre una copia de ntoskrnl.exe y una vez la tengamos modificada, tendremos que arrancar con el simbolo de sistema y copiar nuestro nuevo y editado modntoskrnl.exe sobre el ntoskrnl.exe original.
La próxima vez que iniciemos windows nuestro boot screen sera único y particular, pero si hemos cometido algun error al editar la paleta… glups… windows ni siquiera arrancará.
Como veis esto que cuento puede provocar que nuestro amado windows no vuelva a arrancar mas. Si te sucede algo así mas te vale que tuvieses preparado un disco de arranque con soporte para NTFS y los correspondientes backups de ntoskrnl.exe y boot.ini originales, porque si no estarás perdido, pero de todos modos es mi deber advertir que:
No me hago responsable de cualquier cosa que le ocurra a tu equipo informático como consecuencia de aplicar estos procedimientos. Si lo haces es bajo tu propia responsabilidad y riesgo.
Ale, a disfrutar
En teoria se puede hacer, windows se da cuenta de que intentas cambiarle archivos pertenecientes al sistema y te pide el CD de windows y mas historias que deberias cancelar e ignorar.
De todos modos esto lo se de oidas, nunca lo he probado. Tienes mas informacion sobre el logonui en mi otro post
http://www.makinolo.com/index.php?p=101
Hola hago todo lo que dices exactamente. Pero sigue apareciendo el logo de windows. Es mas HE BORRADO EL MALDITO ntoskrnl.exe. Y todo sigue igual, a windows no le pasa nada tengo mi system32 sin ese archivo y le da igual. Tambien he borrado el dllcache y he copiado el archivo en modo simbolo de sistema, y nada vuelve a aparecer el logo de windows. Cuando voy a system32 y veo mi archivo ntoskrnl.exe con las modificaciones y todo, pero aparentemente el windows no lo usa. Tengo un portatil dell 2coreduo y mi windows xp sp2 actualizado al dia.
Gracias desde ya por tu respuesta y saludos.
Ok. Mira. 1)En mi windows sp2 el boot screen usa el ntkrnlpa.exe y no el ntoskrnl.exe.
2)No se porque pero photoshop no guarda correctamente los archivos bmp originales de modo que cuando los utilizo para el boot screen no se ve bien o no funciona. Si sabes algo de esto avisame. Yo voy a probar con otro programa como el paint shop pro.
Gracias de nuevo espero tu respuesta y espero haya sido de ayuda
Hola Federico, si te fijas bien, en los comentarios 4 y 5 de este post se habla del ntoskrnlpa.exe 😉
El Photoshop es un poco matar moscas a cañonazos para este tema, pero cerciorate de que la imagen este en modo de color indexado y no en truecolor. Supongo que el formato BMP ha evolucionado y soporta ya truecolor, pero los BMP del boot screen son indexados, con su paleta de 256 colores.
Si he leido el comentario 4 y 5. Pero lo que te dije es que TE CONFIRMO que ese es el archivo que hay que modificar al menos en mi windows xp sp2 y no el ntoskrnl.exe si te fijas bien en los comentarios 4 y 5 nadie confirma nada. Yo te lo confirmo el cambio fue un exito. Por el tema del bmp habria que aclarar que despues de hacer los cambios en el bmp, SE DEBE regresar el bmp a la paleta indexada original es decir el bmp vuelve a quedar “negro” y recien ahi se debe salvar teniendo en cuenta que se debe hacer en formato windows de 4 bits. La manera anteriormente explicada es la unica que me funcionó.
Saludos
Aha por cierto mi pc solo tiene 1gb no 4gb de RAM. Asi que por lo menos con mi pc no es cierto que el ntoskrnlpa.exe se utilice en pc con mas de 4gb.
Saludos.
Genial, gracias por tu aportación.
Gracias!
Muy bien explicado y detallado.
Voy a ponerlo en practica, haber que tal sale mi nuevo inicio.
Salu2
Hermano he estado tratando de hacer una pantalla de arranque y se me hace complicado, unas preguntas:
1-.como guardo la imagen en photoshot luego de editarla ¿sin la paleta incorporada? solo he logrado una forma y es con el editor hexa, le borro la paleta despues de guardarlo en el offset 36 al 75 al bmp.
2-. hay una forma facil de identificar la paleta en el ntoskrnl.exe?
3.= mi pc usa es el ntkrnlpa.exe. y necesito hacer uno para mi xp desatendido. gracias
hola a todos exelentes los comentarios una pregunta como cambiar la informacion de mi pc como por ejemplo si es procesador a 500mhz ponerle que diga 1ghz y tambien cambiar la info de la memoria si tego 128 que diga 512 sin realmente tenerlos
Makinolo quisiera saber porque cierra Realcap, lo volvera a comprar zinkia?
Makinolo a igual que epg queremos que nos respondas poque quitan RealCap y sobretodo queremos saber si abrirán WorldCapGame o si lo comprará otra empresa o si zinkia os dará las licencias.Un saludo.Gracias
Si no respondes lo entenderé
makinolo ke va a pasar con las xapas ??
abriran un nuevo juego o ke ?
xk lo kitan ? gracias
AUN NO LO SE. En cuanto sepa algo con certeza lo publico, lo prometo.
hola, tengo una duda, ojala me puedan ayudar.
Instale una programa que me permitia cambiar la inetfase grafica de win xp, y funciono muy bien y toda la cosa,pero ahora al iniciar, aparece una pantalla negra donde me dice que tengo que elegir entre win xp profesional y win xp profesional(bootscreen), y ya desinstale el programa (stylexp) pero aun sigue apareciendo el mensaje e inclusive los temas de apariencia siguen en la maquina, alguien puede decirme como quitar esa pantalla de selccion de SO?
Gracias.
Panel de control -> Sistema -> Inicio y recuperacion -> Configuracion
Edita manualmente el archivo de opciones de inicio y borra la linea que sobra
bravo tio ^^ yo la verdad solo necesite cambiar el bitmap de carga en el programa de abridor de archivos de windows, hay una opcion q dice guardar imagen y reemplazar bueno cambie el 1 x el 3 xD! y weno creo q puedo cargar cualkier imagen q cumpla con los rekisitos, en fin esa era la idea, bye hermano ^^
makinolo estamos abandonados, sin ti el cap ya no informa, y como sabras una persona poco o nada informada es una persona indefensa.
Buenas tardes sr. makinolo keria decirle si es verdad ke el juego se abrira hasta el 1 de marzo como an dicho en el cap o sera commo lo habian previsto gracias
P.D. No escribo mas en mayusculas y no se porke pasaba lo del blog al spam bueno hasta luego
quiero saber porque el real cap no funciona!!
Dejar de escribir mensajes sobre worldcap,este no es el sitio ni el lugar Makinolo dudo que os contesten.Por culpa de unos niñatos(que ni sabes imitar bien)haciendose pasar por Makinolo ahora dudo que el abriese un nuevo tema sobre el juego,dales las grasias a los anormales esto…Makinolo disculpas por las molestia y un saludo
Pingback: Transformar un XP - NextGameDay.com
hola makinolo una pregunta cuando pongo la imagen en la pantalla del inicio de windows se ve muy mal como si fuese una imagen de 8 bits ssabes como hacer ke se bea bien
AYUDA PORFAVOR
Alguien sabe como puedo personalizar completamente mi XP, no quiero hacerlo mediante un Style XP o cosa parecida, quiero hacerlo mediante programacion o bien modificando archivos como aqui se comenta.
Pero quiero hacerlo yo mismo y a mi gusto.
MAKINOLO QUISIERA SAER SI PUEDES AYUDARME CON DOS PREGUNTAS:
1- COMO HAGO TODO EL PROCESO QUE MENCIONAS ARRIBA PARA EDITAR EL NTOSKRNL.EXE EN UN WINDOWS XP PROFESSIONAL SERVICE PACK 1?
2- NO ENTIENDO MUY BIEN ESO DE LA PALETA DE 16 COLORES, ¿COMO CREO UN BITMAP DE 16 COLORES? ¿SIRVE PARA ESTO EL PAINT INCORPORADO EN WINDOWS?
HE CREADO UNO CON EL RESHACKER PERO NO PASA NADA SIGUE APARECIENDO EL MISMO LOGO DE WINDOWS XP, SOLO CREE UN IMAGEN EN PAINT Y LE DI EN EL MENU DEL RESHACKER REEMPLAZAR BITMAP LO GUARDE PERO NO SUCEDIO NADA SIGUE EL MISMO SALIENDO EL MISMO NTOSKRNL.EXE DE WINDOWS XP.
GRACIAS POR TUS RESPUESTAS.
Makinolo, te felicito por la información, se ve que conoces muy bien el proceso de booteo.. Desde hace rato tengo la duda de cómo o dónde se le indica al Windows que la gauga (indicador de carga) no se coloque en la parte inferior de la pantalla? He visto unos bootscreens donde el indicador lo ponen en la parte superior… Es posible ponerlo en forma vertical? somo si fuera un tanque llenándose o sólo es una animación simple (como la de las carpetas volando cuando copias archivos) que se repite indefinidamente hasta que termine el booteo?
Saludos.