En general, al instalar por encima (online upgrade) desde una ISO nos deja conservar los ficheros y la configuración de Windows. Pero si intentamos hacer un downgrade, es decir pasar de una build con un numero de versión (no de build, sino de versión) a una inferior, no sale el tic de conservar configuración y solo nos deja hacer una instalación limpia.
Este es el caso por ejemplo, si queremos bajar de un server 27.xxxx (developer) a la versión del server 24H2 retail (26,100) o si queremos para un Windows 11 24H2, a una versión previa 23H2, etc. Incluso el método que voy a exponer permitirá pasar de un W11 a un W10 conservando la configuración actual.
Necesitamos para ello modificar un solo byte de una dll: la que reside en \sources\setupcompat.dll de la ISO de instalación
Para hacerlo, copiamos el conido de la ISO a una carpeta local, y ahora necesitaremos las siguientes herramientas:
Marcando el check de “Find all occurrences”
Nos la muestra y seleccionamos la que no tenga nada en “instrucciones”
Un doble click en ella y nos mostrará la lógica de dicha función:
Descendemos hasta localizar:
Y lo seleccionamos. Ahora vamos en el menú a “Edit -> Patch Program -> Change Byte” y veremos:
Es importante apuntar el File Offset que he marcado. Con esto, ya podemos cerrar la herramienta, y abrimos el editor hexadecimal que he citado antesy abrimos la misma DLL y navegamos hasta la dirección 0x3B788 que nos ha indicado el programa anterior. -esta dirección es diferente para cada build-
Como podemos ver, en dicha dirección está la instrucción B8 01 que buscábamos. Cambiamos el 01 por 00 y guardamos la DLL.
Con esto, ya podremos instalar y nos ofrecerá guardar configuración al instalar por encima.
Este es el caso por ejemplo, si queremos bajar de un server 27.xxxx (developer) a la versión del server 24H2 retail (26,100) o si queremos para un Windows 11 24H2, a una versión previa 23H2, etc. Incluso el método que voy a exponer permitirá pasar de un W11 a un W10 conservando la configuración actual.
Necesitamos para ello modificar un solo byte de una dll: la que reside en \sources\setupcompat.dll de la ISO de instalación
Para hacerlo, copiamos el conido de la ISO a una carpeta local, y ahora necesitaremos las siguientes herramientas:
- Un “descompilador” -herramientas para hacer ingeniería inversa- como por ejemplo el IDA Free: https://hex-rays.com/ida-free/
- Un Editor Hexadecimal: https://mh-nexus.de/en/hxd/
- Descomprimimos la ISO en una carpeta local.
- Usando IDA Free abrimos el fichero \sources\setupcompat.dll. Dejamos por defecto todo lo que nos vaya preguntando y seleccionaos el archivo en el botón “new”.
- En la herramienta vamos a “Search -> Text” para buscar el texto:
Código:
ConX::Setup::Common::CWindowsVersion::IsLaterThan
Nos la muestra y seleccionamos la que no tenga nada en “instrucciones”
Un doble click en ella y nos mostrará la lógica de dicha función:
Descendemos hasta localizar:
Y lo seleccionamos. Ahora vamos en el menú a “Edit -> Patch Program -> Change Byte” y veremos:
Es importante apuntar el File Offset que he marcado. Con esto, ya podemos cerrar la herramienta, y abrimos el editor hexadecimal que he citado antesy abrimos la misma DLL y navegamos hasta la dirección 0x3B788 que nos ha indicado el programa anterior. -esta dirección es diferente para cada build-
Como podemos ver, en dicha dirección está la instrucción B8 01 que buscábamos. Cambiamos el 01 por 00 y guardamos la DLL.
Con esto, ya podremos instalar y nos ofrecerá guardar configuración al instalar por encima.
Comentario