jueves, 24 de marzo de 2016

Nintendo sucks (CFW edition).

Hola que tal ¿Cómo están?

Tal como el año pasado, este inicio de primavera trae un clima bastante loco por mis latitudes, espero que por las de ustedes gocen de un excelente clima para aprovechar al máximo los días de asueto (si disfrutan de ellos) o sus días de trabajo (si son como su servidor).

Pues bien, en el capítulo anterior de esta "emocionante" saga titulada "Nintendo sucks" repasamos el proceso para poder extraer la valiosa OTP de nuestras consolas 3DS y poder utilizar el hardware de la misma a todo su potencial mediante la instalación del a9lh.

Ahora que tenemos nuestra OTP tenemos que compilar el archivo arm9loaderhax.3dsx (el exploit propiamente dicho) que posteriormente instalaremos en nuestra consola.

Para compilar el exploit, podemos recurrir a dos alternativas:

  1. La primera es establecer un entorno de desarrollo y compilación en nuestra computadora.
  2. La segunda es recurrir a un servicio de compilación en línea, el cual puede ser mediante una aplicación web o recibiendo ayuda en los foros de la scene de los "compiladores voluntarios".

Ambos procesos son igualmente válidos, pues el exploit obtenido será el mismo en ambos casos.

Paso 9. Compilación del exploit arm9loaderhax.
Objetivo: Generar el exploit a9lh correspondiente a nuestra consola haciendo uso de la OTP.

Si optamos por establecer el entorno de desarrollo necesitamos cumplir con algunos requisitos:

  • Una computadora con sistema operativo Windows. Si bien su servidor emplea Linux como sistema operativo de cabecera, se han reportado casos en que la compilación en Linux no es satisfactoria o que el exploit generado provoca "brickeos". Dado que queremos minimizar los riesgos para este proceso nos decantaremos por Windows.
  • Descargar el DevKitPro, obtenerlo mediante este enlace. Descargar e instalar en nuestra computadora el "Automated Installer" en su versión más reciente (al momento de escribir esto devkitProUpdater-1.6.0.exe). Al instalar el devkitpro nos interesa instalar la parte devkitpro ARM, los demás módulos no son necesarios para el proceso.
  • Descargar e instalar Python, en su variante 2.x (al momento de escribir esto la versión más reciente es la 2.7.11) que corresponda a la arquitectura de nuestro sistema operativo (32 o 64 bits) de ésta página. Al instalar Python hay que asegurarse que se agregue Python a las variables de entorno PATH (la opción inferior del instalador que se encuentra desmarcada por defecto).
  • Descargar e instalar Pycrypto, en la variante de nuestro sistema operativo (32 o 64 bits) de la siguiente página
  • Descargar la "master branch" del arm9loaderhax de este repositorio. Este repositorio contiene todos los dumpeos necesarios para llevar a cabo la compilación. Para descargarlo debemos ir a la derecha de la página y presionar el botón "Download ZIP". Una vez descargado el ZIP, debemos descomprimirlo, teniendo la precaución de que no aparezcan espacios en toda la jerarquía de directorios que compongan la ruta, de lo contrario obtendremos un error al tratar de compilar.
  • Descargar e instalar la herramienta "make" de la página del proyecto

Una vez descargadas e instaladas las herramientas necesarias, debemos hacer lo siguiente:

  1. Copiar nuestro archivo otp.bin a la carpeta "data_input" de nuestra copia local del repositorio arm9loaderhax-master.
  2. Abrir una consola de comandos (CMD) dentro del directorio arm9loaderhax-master y teclear make.
  3. Después de unos cuantos segundos se creará una carpeta llamada "data_output" y dentro se encontrará el archivo arm9loaderhax.3dsx que será nuestro exploit instalable en la consola.

Si optamos por compilar el exploit vía web sólo tendremos que dirigirnos en nuestro navegador preferido a la página https://felipejfc.com/a9lh y arrastrar nuestro archivo otp.bin. La página hará algunas validaciones y nos ofrecerá descargar nuestro arm9loaderhax.3dsx.

Paso 10. Instalación del arm9loaderhax en la consola.
Objetivo: Instalar el exploit a9lh en una copia de la EmuNAND con la versión de firmware más reciente y el FBI previamente inyectado, con el fin de facilitar el proceso de instalación de aplicaciones. Esta imagen de EmuNAND se inyectará en la SysNAND, por lo que la consola quedará en la versión más reciente de sistema.

Una vez que obtenemos nuestro exploit deberemos instalarlo de alguna forma en nuestro 3DS. En este punto la mayoría de las guías obvian el paso resumiéndolo como "ejecutar el arm9loaderhax.3ds con cualquier entrypoint" y bueno ¿Cuál es CUALQUIER entrypoint (algo así como el clásico "Press ANY key...")?
Pues bien, para instalar nuestro exploit recomiendo los siguientes pasos:

  1. Copiar a la raíz de nuestra tarjeta SD el respaldo de la EmuNAND con versión más reciente de firmware que generamos en el paso 4 de la guía previa y renombrar el archivo a "nand.bin".
  2. Ir a la página https://smealum.github.io/3ds/ y descargar ya sea el "Homebrew starter kit" o sólo el ejecutable del "Homebrew Launcher".
  3. Extraer los archivos, copiar el archivo "boot.3dsx" y la carpeta "3DS" a la raíz de la memoria SD.
  4. Copiar nuestro "arm9loaderhax.3dsx" a la carpeta 3DS ubicada en la raíz de la memoria SD.
  5. Insertar la memoria en nuestra 3DS, encenderla y activar la cámara (presionando los botones L y R al mismo tiempo).
  6. Ingresar en nuestra computadora a la página https://yls8.mtheall.com/3dsbrowserhax.php y escanear con la 3DS el código QR que aparece. O en su defecto dirigirse a la siguiente página desde el navegador de internet de la consola: http://yls8.mtheall.com/3dsbrowserhax_auto.php
  7. Al cargar la página aparecerá una barra con un deslizador en la pantalla inferior de la consola, debemos tocar cualquiera de los extremos de la barra para activar el browserhax.
  8. El browserhax es un exploit un tanto inestable, en ocasiones tendremos que intentar varias veces antes de que arranque el Homebrew Launcher.
  9. Una vez cargado el Homebrew Launcher, ejecutar el arm9loaderhax.3dsx (aparecerá en el menú de aplicaciones). La instalación del exploit tardará un poco, pues se inyectará en la copia de la EmuNAND (renombrada a nand.bin) que colocamos en la memoria y posteriormente inyectará esa imagen en la NAND del sistema.
  10. Al concluir la instalación del exploit la 3DS se tratará de reiniciar, pero se quedará con ambas pantallas en negro y el indicador de POWER quedará encendido. Esto es normal y ocurrirá cada vez que encendamos la 3DS sin un "payload" en la memoria SD (o directamente sin memoria SD insertada en la consola).
  11. Debemos forzar el apagado de la consola (manteniendo presionado el botón POWER) y extraerle la memoria SD para ponerle un "payload" válido al a9lh.

Paso 11. Instalación de CFW (a9lh payload).
Objetivo: Instalar un CFW compatible con el a9lh, de forma que el ejecutable del CFW cumpla la función de payload del exploit y podamos aprovechar todas las ventajas del mismo.

Entre los payload válidos por el momento contamos con los CFW auReiNand y cakesFW.

En primera instancia opté por el auReiNand, debido a su simplicidad y a que fue el primer CFW con soporte para a9lh. Sin embargo he probado el cakesFW y es un CFW con mayor funcionalidad, mejores opciones de configuración y un rendimiento muy bueno, por lo tanto el payload que compartiré corresponde al de cakesFW.

  1. Se deben borrar de la memoria SD los archivos utilizados en el paso previo (nand.bin, boot.3dsx y /3DS/arm9loaderhax.3dsx).
  2. Se deben copiar a la raíz de la memoria los archivos contenidos en el este paquete. Este paquete contiene los archivos base del cakesFW y todos los dumpeos necesarios para configurarlo y hacerlo funcionar.
  3. Insertar la memoria SD a la consola y encenderla. Deberá mostrarnos el menú de configuración del cakesFW.
  4. En el menú seleccionar la opción "Select patches" y verificar que la opción "Enable EmuNAND" esté desactivada, puesto a que ya no emplearemos la EmuNAND en lo sucesivo, lo que nos dará 1GB extra de diversión en nuestras memorias SD.
  5. En el menú "Select patches" seleccionar las opciones "Disable signature checks" y "Block FIRM partition updates". De esta forma podremos instalar aplicaciones sin firmar y actualizar nuestro sistema sin perder el exploit o brickear la consola. 
  6. Presionar START para guardar los cambios.
  7. Ir al menú "More options", seleccionar "Toggleable options" y activar "Enable autoboot (Press L to enter the menu)". 
  8. Presionar START para guardar los cambios.
  9. En el menú principal seleccionar "Boot CFW" para arrancar nuestra consola con CFW desde la SysNAND.
Pues bien, ya tenemos nuestra consola con 3DS con CFW. A partir de aquí podemos hacer varias cosas con la consola, como instalarle el Homebrew Launcher en formato CIA para tener acceso cómodo a nuestras aplicaciones desde el menú principal de la consola, también podemos instalar el AGB parcheado en nuestra SysNAND para poder instalar juegos de GameBoy Advance y jugarlos desde el emulador nativo de la consola, entre muchas otras posibilidades.

Sin lugar a dudas colocar CFW en una 3DS incrementa de forma notable las posibilidades de la consola. Nos brinda un control prácticamente total sobre la misma y nos permite aprovechar el hardware más allá de las restricciones que el fabricante ha impuesto sobre la misma.

Espero que se puedan divertir con sus consolas, ahora con su potencial liberado. Su servidor de momento se retira a seguir jugando con una consola de la competencia X_x, en espera que la scene de la misma llegue a surgir y producir la combinación de exploits de hardware y software necesarios para flexibilizar el desarrollo de aplicaciones sobre la misma.

Y para ser políticamente (hipócritamente) correctos recuerden... ¡No apoyamos a la piratería! Ni nos hacemos responsables del uso o las posibles averías que puedan surgir, bla, bla, bla, ya saben a lo que nos referimos ¿Verdad n_n?

¡Estamos en contact!

Renuncia de responsabilidad.

Hola ¿Cómo están? Espero que estén bien. En esta ocasión sólo traigo un aviso parroquial y es que he decidido formalizar los términos de uso...