Au revoir, Bonjour!

Después de desactualizar mi portátil nueva a Windows 7, llegó el momento de reinstalar las aplicaciones y otra vez la cuestión del insufrible iTunes: Instalarlo o no instalarlo, he ahí el dilema. Detesto el iTunes, el QuickTime y todas las porquerías innecesarias que instalan. Pero para leer, no he visto nada mejor que un iPad con pantalla Retina.

Lamentablemente, no hay hasta el momento alternativa al software oficial de Apple para gestionar el contenido de la tablita: los programas que se ofrecen como tales requieren invariablemente que se instale el iTunes para poder acceder al dispositivo. Así que descargué la versión 12 para Windows de 64 bits y me dispuse a tratar de instalarlo de la manera menos obstrusiva posible.

El primer paso fue extraer el contenido del instalador itunes6464.exe. De entrada vemos dos componentes que no queremos tener dando vueltas: AppleSoftwareUpdate.msi y Bonjour64.msi (sumémosle SetupAdmin.msi, ya que estamos). Probé hacer la instalación con las conocidas opciones DESKTOP_SHORTCUTS=0 MEDIA_DEFAULTS=0 y SCHEDULE_ASUW=0, pero sólo las dos primeras funcionaron. No es un gran problema, salvo para instalaciones desatendidas.

Buscando en el sitio de Apple llegué a la página donde explican cómo restringir ciertas opciones en Windows, entre ellas la búsqueda automática de actualizaciones y el acceso al iTunesStore. Con eso me di por satisfecho, así que instalé AppleApplicationSupport64.msi, AppleMobileDeviceSupport6464.msi e iTunes6464.msi, y creé la clave del registro para bloquear los componentes mencionados:

reg add "HKLM\SOFTWARE\Apple Computer, Inc.\iTunes\Parental Controls\Default" /v "AdminFlags" /t REG_DWORD /d "0x104" /f

Libre de otras criaturas despreciables, conecté mi iPad y ahí mismo se colgó el iTunes. Volví a abrirlo e intenté acceder a las preferencias, para ver si estaba seleccionado algún componente de los que quedaron afuera, pero eso también colgó al iTunes. Otras opciones, como reproducir música, funcionaban. Después de buscar sin éxito en la web, probé instalando el AppleApplicationSupport.msi y… ¡todo comenzó a andar! Ahora se entiende por qué la diferencia en los nombres de los componentes: los que tienen el sufijo «6464» parecen ser completamente de 64 bits, mientras que los que sólo dicen «64» dependen de los correspondientes componentes de 32 bits.

Para redondear, de los archivos extraídos del instalador, hay que conservar:

  • AppleApplicationSupport.msi
  • AppleApplicationSupport64.msi
  • AppleMobileDeviceSupport6464.msi
  • iTunes6464.msi

Y se puede agregar un archivo por lotes con lo siguiente:

msiexec /i "AppleApplicationSupport.msi" /passive /norestart
msiexec /i "AppleApplicationSupport64.msi" /passive /norestart
msiexec /i "AppleMobileDeviceSupport6464.msi" /passive /norestart
msiexec /i "iTunes6464.msi" /norestart
reg add "HKLM\SOFTWARE\Apple Computer, Inc.\iTunes\Parental Controls\Default" /v "AdminFlags" /t REG_DWORD /d "0x104" /f

Hablar bien no cuesta un carajo

Pocas cosas hay más útiles que un diccionario en la PC, siempre listo y a mano para sacarnos las dudas sobre el uso de tal o cual palabra. Por eso, saber que existe una versión del fabuloso Diccionario de uso del español de María Moliner para Windows me llenó de alegría.

Sin embargo, su interfaz no está libre de problemas. Una falla en particular hace que cada cierto tiempo se encapriche y nos pida que insertemos el CD de instalación, sin otra razón aparente que hacernos levantar para buscar el bendito disco y echar por la borda la comodidad de tenerlo instalado.

Montando una simple imagen del disco se resuelve el problema, pero molesto por lo chapucero de esa solución me decidí a ir al grano y darle masa al problema.

«Para nosotros, para nuestra posteridad…»

El diccionario (me refiero a la versión 2.14.1, que abunda en las redes P2P) fue escrito en Visual Basic 6.0, y aparentemente registra información sobre los accesos en archivos cifrados (00.SIG, 01.SIG y 10.SIG) que conservan su fecha del año 2001, para que no nos percatemos a simple vista cuando son actualizados. Todo muy lindo, pero es bastante fácil de pasar la protección por alto, como veremos a continuación. A pesar de todo, al día de hoy no hay un solo crack disponible; se ve que los diccionarios no son tan populares como el Call of Duty

Vamos a aprovechar esta ocasión para probar el VB Decompiler en su versión «Lite», que si bien carece de algunas características útiles de la versión «Pro» (como la posibilidad de aplicar parches), es gratuita y cubre ampliamente nuestras necesidades. Ni bien abrimos la herramienta, vamos a ‘Tools/Options’ y ahí tildamos la opción ‘Add HEX dump’ para que incluya las secuencias de bytes correspondientes a las instrucciones desensambladas, cosa que nos permitirá compensar la mencionada falencia de la versión «Lite». Vayamos a ‘File/Open program’ y seleccionemos DUE.EXE (el ejecutable principal del diccionario). Nos preguntará si queremos descompilar el programa ahora; cliqueamos en ‘No’ y nos vamos a tomar unos mates.

Un par de cebadas después, repetimos los pasos anteriores pero esta vez contestamos que sí a la pregunta del millón. Después de trabajar un ratito (el VB Decompiler; nosotros seguimos con el mate) nos avisará con el mensaje «Decompiled OK» que ha terminado. Tenemos a la vista un panorama general de la estructura del programa. Aquí nos conviene echar un vistazo para ver si algo nos resulta llamativo. Entre los módulos aparece uno llamado DUEProtection que parecía prometedor, pero sólo me hizo perder tiempo. Hagamos doble-clic sobre Sub_Main. Unas pocas líneas después del comienzo aparece la primera cosa realmente interesante: una llamada (call), una comprobación (test) y un salto condicional (jnz) que en caso de no producirse termina en una llamada a la rutina «End».

VB Decompiler screenshot
La llamada.

¿A dónde se dirige la llamada? La rutina 601DD0h se encuentra en el módulo WindowsModule, que ¡oh sorpresa! hace referencia a la cadena «Inserte el CD-ROM del DUE en el lector». Mi primer impulso fue cambiar el jnz (saltar si no es cero) por un jmp (saltar «sin peros»), remplazando el 75h por EBh en la instrucción 75C0 (ver pantalla). Para ubicar este segmento de código en el archivo DUE.EXE se necesita -además de un editor como WinHex o similar- encontrar una secuencia de bytes característica (que no se repita). Probando con la mismísima llamada a la rutina donde suponemos reside la protección (E8D9F40300) lo encontramos al toque. Es fundamental verificar que sólo aparezca una vez, para confirmar que estamos en el lugar indicado. Hacemos el cambio y probamos. La misma ventana de siempre: «Inserte el CD-ROM del DUE en el lector». Pero al darle ‘Cancelar’ en vez de cerrarse… ¡abre el diccionario!

Toque, gol y fiesta

Evidentemente estamos en el área chica. Sólo hay que afinar un poco la puntería y clavarla en el ángulo. ¿Qué es lo que está pasando? El salto que encontramos es el que lleva a la protección, y cuando vuelve le dice al programa principal si pusimos el bendito CD en la unidad o no. Entonces, hagamos al revés y eliminemos la llamada por completo. Volvemos a buscar la misma secuencia de antes y esta vez la «tachamos» con cinco 90h (que en ensamblador de intel significa ‘nop’, i.e. NoOPeration). Probamos nuevamente y… ¡entró como piña!

Antes de cantar la victoria total y definitiva, tenemos que ocuparnos de dos pequeños ayudantes: Conjugador.exe y Definidor.exe, que son invocados desde el acceso rápido del DUE. Si tratamos de utilizarlos, se repite la misma historia que con el diccionario. Si los desensamblamos, comprobaremos con disgusto que ambos tienen una serie de saltos que buscan claves en el registro y mil cosas más. Además, los módulos parecen tener los nombres desordenados; WindowsModule no es lo que esperábamos y el mensaje «Inserte el CD-ROM del DUE en el lector» aparece ahora en uno llamado DueServerPathModule. Pensemos un poco y apliquemos la Ley del menor esfuerzo.

La protección del programa principal hacía un salto a una rutina propia (call xxxxxxxxh), una comprobación (test) y un salto condicional (jnz). Busquemos «test» en el módulo Sub_Main de los ayudantes. Encontraremos tres o cuatro bloques con la siguiente estructura:

call MSVBVM60.DLL.__vbaFreeObj  ;llamada rutina VB
movsx ecx, word ptr var_C4
test ecx, ecx
jz 4077DBh

Pero uno solo de la forma:

call 0040F180h  ;llamada rutina propia
movsx ecx, ax
test ecx, ecx
jnz 407BD7h

De más está decir que este último es el salto a la rutina maldita, que dejaremos sin efecto tachándolo en ambos ayudantes con cinco 90h, como en el programa principal. ¡Ahora sí! Nuestro diccionario ha quedado completamente corregido y no volverá a obligarnos a levantar de la silla.

Destapate un PopCap

¿Quién no se ha pasado un par de horitas con algún juego de PopCap? Si nunca oiste hablar de Bejeweled, Hammer Heads o Zuma, date una vuelta por www.popcapgames.com y echá un vistazo a la sección «Juegos para descargar», de donde vas a poder bajarte una versión limitada de cualquiera de sus 49 juegos para PC.

Una hora más tarde, cuando haya expirado el tiempo de prueba, en vez de arrancarte los pelos, usá lo que tenés en la cabeza y seguí leyendo, que te explico cómo «sacarles la chapita» a estos juegos, usando como ejemplo al lanzamiento de hoy: Zuma’s Revenge.

Lo primero que tenés que hacer es descargar la versión de prueba (ZumasRevengeSetup-es.exe) y desempaquetarla con algún compresor de archivos. Yo uso WinRAR, pero cualquier otro puede servir. Vas a ver dos carpetas: cfg y files, y dentro de files está la única que nos interesa: Zuma’s Revenge.

Hacé doble-clic sobre la ranita para ejecutar el programa. Vas a ver el cartel que nos advierte que es una versión de prueba y que nos quedan 60 minutos de juego. Pulsá Jugar demo y una vez que haya terminado de cargar, pulsá Alt-Tab para volver al Explorador de Windows. Si no tenés activada la opción para poder ver los archivos ocultos y de sistema, activala desde Herramientas/Opciones de carpeta… En la solapa Ver, marcá «Mostrar todos los archivos y carpetas ocultos».

Carpeta de instalación
El ejecutable principal aparece…

Prestá atención al contenido de la carpeta del juego. ¿Notás algo? Claro, ¡hay un nuevo archivo ejecutable! Está ahí, medio lavadito (por ser un archivo oculto) con el nombre de popcapgame1.exe. A esta altura te imaginarás que éste es el verdadero ejecutable del juego, libre de toda limitación. Sólo tendríamos que copiarlo y listo. Pero hay un problema. El hecho de que no tenga un ícono puede significar dos cosas: o que no lo tiene (nunca hay que pasar por alto lo obvio), o que el sistema no puede acceder a él. Tratemos de copiar este archivo fuera de la carpeta; no podemos.

Si volvemos al juego y salimos a Windows, nuestro archivo habrá desaparecido. Entonces, ¿qué hacemos? El ejecutable de la ranita es en realidad el que nos impone las limitaciones de tiempo y nos impide acceder al verdadero ejecutable. Tenemos que deshacernos de él. Sin cerrar el juego pasemos al Administrador de tareas (Ctrl-Alt-Supr ó botón derecho sobre la barra de tareas).

Aplicaciones activas
Matar la aplicación no servirá.

Ahí veremos dos aplicaciones: el juego Zuma’s Revenge! y el Explorador de Windows (que como está apuntando a la carpeta del mismo nombre se llama igual, aunque su ícono nos permite distinguirlo). Si ordenamos finalizar la tarea, el juego se cerrará del mismo modo que si lo hubiéramos cerrado normalmente, y el ejecutable habrá desaparecido también. Esto se debe a que el sistema operativo le pide que se cierre («cerrate o te reviento»), y como el juego sabe lo que le conviene elimina el ejecutable principal y volvemos al mismo punto de antes.

La solución está en terminar el proceso, para que la protección no tenga tiempo de borrar nada. Pasemos a la solapa Procesos (obvio, ¿no?) y ahí veremos más claramente lo que está pasando realmente.

Procesos activos
En los procesos está la solución.

El proceso de nombre ZumasRevenge.exe es la protección (la «chapita»), mientras que el juego que está andando en memoria se llama -como ya vimos antes- popcapgame1.exe. Nótese la diferencia de recursos que utiliza cada uno. Marcá entonces ZumasRevenge.exe y pulsá Terminar. Ahora que volvemos al Explorador, nuestro éxito debería ser evidente: ¡la ranita ha recuperado su aspecto! (aunque sigue estando un poco pálida).

Para terminar, borremos el archivo ZumasRevenge.exe y «des-ocultemos» al popcapgame1.exe, al que -dicho sea de paso- deberíamos ponerle el nombre ZumasRevenge.exe, nomás para ser prolijos. Ahora podemos hacer doble-clic sobre la única ranita que nos queda y disfrutar del Zuma’s Revenge (o cualquier otro juego del catálogo PopCap) durante todo el tiempo que se nos dé la gana.

Instalar Windows Home Server desde USB

Windows Home Server está pensado como un servidor ciego, es decir, que no requiere monitor, teclado ni ratón para funcionar. Su administración puede gestionarse completamente a través de la red, mediante la consola diseñada para tal fin. Pero durante la instalación es necesario contar con una lectora de DVD, interna o externa. A pesar de no ser una opción contemplada de fábrica, con cualquier pendrive de unos 2GB se puede salir del paso sin problemas.

La clave está en el programa DiskPart que viene con Windows. Lamentablemente, la versión 5.1 que trae el XP no es suficiente, dado que ignora las unidades USB. Es por eso que necesitamos contar con una PC con Windows Vista o superior, o al menos con el disco de instalación, como veremos más adelante.

Arrancamos DISKPART.EXE y le indicamos las siguientes órdenes:

Diskpart>list disk
vemos las unidades conectadas
Diskpart>select disk #
# es el número asignado a nuestro pendrive
Diskpart>detail disk
verificamos que sea el disco correcto
Diskpart>clean
borramos todo (OJO: todo, todo…)
Diskpart>create partition primary
creamos una nueva partición
Diskpart>active
la activamos (para poder arrancar desde ahí)
Diskpart>format fs=fat32
le damos formato en FAT32
Diskpart>exit
nos fuimos…

Una vez hecho esto, sólo nos resta copiar el contenido completo del DVD de instalación a la raíz del pendrive, seleccionar el inicio desde un dispositivo USB, y listo.

Si usamos Windows XP, no todo está perdido. Tenemos que iniciar la PC con el disco de instalación de cualquier versión de Vista (¿Quién no tiene a mano un disco de Vista?, pregunto). Cuando aparezca el botón «Instalar ahora», pulsemos la opción «Reparar el equipo». En la lista de sistemas operativos «reparables» no va a aparecer nada (porque el disco de Vista no repara instalaciones de XP). Le damos «Siguiente», y elegimos «Símbolo de sistema». A partir de ahí, el procedimiento es el mismo, ya que, de hecho, se está ejecutando el entorno de preinstalación de Vista.