martes, 30 de septiembre de 2008

MAME: El emulador que nos faltaba

Ojeando Cydia a lo largo del día me he topado con algo interesante. Si si, ya se que tenemos emuladores de PSX, de GBA, NES, Genesis, ScummVM... pero personalmente nada como el bueno de MAME y los clásicos de siempre.

De la mano de ZodTTD de nuevo... ¿Quien dijo que el JB no sirve para nada? Otra razón más.

Que buenos tiempos aquellos en los que te ibas con la paga semanal en las maquinolas, cambio en monedas de 25 y a disfrutar como niños... como niños que éramos. Lo peor de todos señores, al menos en mi caso, aun recuerdo muchos de los trucos, habilidades, rincones... de algunos de aquellos juegos.

Para aquellos nostálgicos como yo:




Posiblemente de los mejores juegos que jamás existirán.

El emu? Funciona perfectamente. Quizás se echa en falta un modo apaisado, pero bueno... no nos quejemos verdad?

viernes, 26 de septiembre de 2008

iPhone 3G iPod Touch Nuevo: Avances

En el post anterior indicábamos brevemente lo que se está cociendo estos días.

Está claro que el iPhone 3G es el punto fuerte, dado que por ahroa no se ha logrado liberar. Por otro lado el iPod Touch nuevo permanece aun sin JB. Se cree que al realizar el JB al iPod Touch nuevo, tambien abriría algunas puertas a la liberación del iPhone 3G, por ello siguen sendas similares.

Por ahora no hay nada concluyente.

Está claro que una vez que se crease una firmware personalizada parcheada y se introdujese en el dispositivo, problema resuelto. El problema es crear esa imagen personalizada y parchear los archivos en cuestión, sin que el kernel del iPod Touch nuevo lo rechace. Para que no rechace la nueva firmware es necesario saltarse la protección de firma del kernel. Para todo ello hace falta saltare ciertas protecciones.

La primera es evidentemente obtener las keys que nos dejarán tener acceso a las rutinas de arranque del sistema (por así decirlo, aunq no es del todo cierto). En el dispositivo todas las rutinas importantes están encriptadas. Son desencriptadas o por certificados o por AES, de una u otro forma son tramitadas internamente en el hardware del dispositivo. Al no tener esas llaves y necesitar el contenido de ciertas zonas de la memoria, no queda otra que obtenerlas desde el dispositivo una vez que están desencriptadas. Esto se puede hacer, pero antes de poder hacerlo de nuevo, hace falta poder ejecutar código no firmado... es la pescadilla que se muerde la cola.

Se ha visto que el modo DFU es similar en el iPod Touch nuevo. Luego lo primero que se ha intentado (Sin éxito por ahora) era el método de Pwnage. El problema es que el Hardware AES del dispositivo es nuevo, y tiene una nueva Key GID. La clave GID como ya hemos dicho en otro lado, es una clave compartida por todos los dispositivos. Para todos es la misma... hasta la fecha. Antes no hacía falta saber la Key, dado que la key se usaba conjuntamente con otra cadena para dar como resultado la Key 0x837. Esta Key última es la que se usaba y se usa para la encriptación de muchas de las rutinas antes comentadas, así como de los archivos IMG2/3. Ahora mismo, hasta la fecha, aun no se conoce siquiera la AES GID Key de los iPhone y los iPod Touch viejos, y en todos es la misma. Pero si que sabemos que la GID Key en los Touch nuevos es diferente, luego aun cuando nada más hubiese cambiado, la Key 0x837 habría sido modificada, y sin tener acceso a ella...

Como no tenemos la GID Key ni la Key 0x837 en el dispositivo nuevo, la única forma de poder desencriptar el contenido es directamente en el mismo iPod Touch. Es decir, sabemos que el dispositivo puede "invocar" el motor AES y realizar la desencriptación en él. Esto es lo que se ha intentado. El problema es que para poder realizar dicha invocación se debe de permitir código no firmado. Hay que comprender que todo lo que se realiza es al final para lo mismo: Poder ejecutar código no firmado en el dispositivo, y así poder hacer y deshacer lo que deseemos. Como decía antes la pescadilla que se muerde la cola.

Mucho es ir repitiendo, lo sé, pero mejor ir poco a poco para intentar más o menos ir explicándolo.

Sabiendo todo esto el proceso que se ha intenado llevar a cabo (repito, sin éxito) ha sido el siguiente:

Indudir el dispositivo en DFU (no hay problema con esto)

Enviar el archivo de iniciado iBBS (Todas las firmwares tienen un archivo iBBS que se carga nada más poner el dispositivo en uno de sus modos, existe uno para cada modo de operación. Es digamos un archivo que incluye toda la secuencia de iniciado del sistema... un archivo descriptor del proceso a realizar.

Una vez el iPod Touch nuevo acepta el modo DFU se podría en teoría también subir un archivo IBBS de una versión antigua de iPod Touch viejo, en particular la versión beta 4 de la 2.0. Por qué esta versión? porque después de esta apareció el IMG3 y el sistema se complicó. Hay que tener en cuenta que lo primero es lograr un acceso, sea cual sea, una vez se consiga se podrían obtener keys y sistemas mejores. Esto se pensó que sería posible dado que se hizo lo mismo con el iPhone 3G y funcionó bien, es decir, si al iPhone 3G le envias un IBBS del iPhone antiguo de la versión 1.1.4, comienza la inicialización también.

Una vez que el dispositivo se encontrase iniciado con el IBBS de restauración de la versión 2.0 beta 4 del iPod antiguo, se podría usar una herramieta creada por Cwm (si, el creador de Winpwn) gracias al trabajo de George Hotz, para tener acceso interactivo del iboot. El iboot es por asi decirlo como un pequeño programa de iniciación que se coloca para hablar con los sistemas de restauración, ejecución del sistema... etc. Al cargar el IBBS el iboot sería accesible con esta herramienta. Por ejemplo el antiguo iPhuc se trataba de esta herramienta, aunq menos sofisticada. Igualmente gracias a esta herramienta sería posible usar un sistema para invocar el uso del hardware AES para poder desencriptar los archivos necesarios.

Lo siguiente sería por lo tanto subir el archivo que deseamos desencriptar usando el hardware AES. Pero para poder subir un archivo y ejecutar código ya hemos dicho que no es posible. Existe un método antiguo, un exploit (que llamaremos "diag") que no se comentó mucho (yo no lo conocía) que permitía también ejecutar código sin firmar. Este exploit se corrigió en la versión 2.0, de ahí la importancia también de usar una firmware antigua. Una vez se subiese el archivo en cuestión (posible por el exploit) se podría invocar el hardware AES (gracias a iboot) y desencriptar en el mismo iPod el archivo necesario.

Una vez se tuviese por fin esa desencriptación se podría proceder por lo tanto al parcheo de los archivos necesarios, los archivos IMG3, la reconstrucción de la firmware... etc.

Todo esto evidentemente se quedó en teoría. No ha sido posible hacerse. Para empezar no fue posible enviar el IBBS del iPod Touch viejo...


Por otro lado, de poderse hacer todo lo citado, dado que se estaba usando el exploit "diag", este exploit deja de tener efecto una vez que el sistema se reinicia, se restaura, se apaga... con lo que habría que comenzar todo de nuevo. Es decir, de poder hacerse y todo hubiese sido perfecto, tan solo duraría un corto período de tiempo.

De todos modos como digo no ha sido posible al final realizarlo de este modo. La principal prioridad sigue siendo dos:

1º. Poder desencriptar el KBAG (digamos que es algo así como partes de los archivos IMG3). Y para desencriptar esto solo hay dos opciones: Hacerlo desde el mismo iPod usando su propio hardware AES o extrañendo las Keys de algún modo.

2º. Lograr ejecutar código sin firmar, dado que conseguir los certificados de firma de Apple sería imposible

Frente a las dos cuestiones, la primera se ha intentado de una forma, y ahroa se intentará de la segunda. Esto es, intentado acceder directamente al hardware e intentar extraer por métodos hardware la GID Key.

Frente a la segunda cuestión, lograr los certificados será imposible. Lograr un sistema para saltarse el chequeo es la solución, pero para ello lo primero son las Keys igualmente. Una vez se tengan las Keys AES se podrá pensar en la solución de lo segundo.

Comprendo que es un poco complicado comprender todo esto... y parte de la información que he escrito es incompleta e imprecisa en algunos puntos. Tan solo quiero decir con todo esto que no es nada facil la "lucha" que se lleva a cabo. Tampoco sabemos si Apple ha puesto otras medidas de seguridad que desconocemos.

Por ahora hay investigaciones, pero cuando parece estar la solución cerca... se aleja un poco más, ya que se van agotando cartuchos. Quizás un nuevo exploit abra las puertas al sistema o quizás la solución venga por algo más simple que todo esto.

Ya veremos que sucede

Firmware 2.2 beta: Jailbreakada

Apple está preparando la versión 2.2 de su software. Evidentemente ya sea por puro placer del Dev-Team han confirmado otra vez más que Apple no puede hacer nada con su sistema mientras no modifique el Hardware del dispositivo (cosa que hizo en el iPod Touch nuevo)

Por otro lado la liberación del iPhone 3G o el JB al iPod Touch nuevo continua siendo un misterio. Según su blog durante este fin de semana probarán sistemas hardware para intentar conseguir el acceso al sistema. Hay que comprender que conseguir acceso al sistemas es un primer paso mu importante, aunque este acceso tan solo sea posible hacerlo por Hardware. Una vez realizado, si se consigue ejecutar código no firmado o la extracción (aunque sea por hardware) de alguna de las keys, abriría la puerta a muchas posibilidades. Claro que por ahora todo esto tan solo se queda en el plano teórico, y aun queda u largo camino.

Como hemos dicho otras veces, que sea posible o no un JB al iPod Touch nuevo, tan solo el tiempo lo dirá. Quizás mañana, quizás dentro de una semana o quizás nunca.

miércoles, 24 de septiembre de 2008

Apple: ¿Mala prensa o hay algo de verdad?

No me gusta criticar ni usar mi blog para poner en tela de juicio las estrategias o la moralidad que tenga Apple hacia cierto tipo de cosas. Tan solo cuando veo algo que es demasiado "Claro" hago uso de mis letras para, al menos, que se conozcan las cosas.

De nuevo si alguien se pregunta, no, no trabajo para MS, no, no odio a Apple.

Primero vamos a intentar ponernos un poco en situación. Todo comienza cuando Apple lanza el SDK y el método que usará para que los programadores puedan tener sus aplicaciones en el Store.

Cualquier programador que quiera publicar su aplicación en el Store lo primero que tendrá que hacer será pagar por tener ese privilegio. Según Apple en concepto de revisión del software, las Keys de firma... lo que es cierto es que esto son 99$ para quienes quieran crear aplicaciones y ponerlas en el Store, sean usuarios o emrpesas, y 299$ para aquellas empresas que quieran crear software para dentro de la misma empresa. Este método suena un poco raro... para quien no lo sepa tan solo decir que hay otros métodos de instalar aplicaciones que no son por medio del AppSTore, tambien se puede hacer esto distribuyendo las aplicaciones por WIFI.

Es decir, un programador casero ya de por sí se tiene que gastar los 99$, quiera poner su App gratuita o de pago. Pero la cosa no se queda ahí. Una vez realizado el desembolso tiene que crear la aplicación y cuando esté terminada enviarla a Apple, y esperar que dicha aplicación sea aceptada por ellos. Y aquí comienza el problema, en una lagar lista:

1º. Tiempo de respuesta de Apple para la aceptación o no de la aplicación. No solo de aplicaciones nuevas, sino también de actualizaciones. Hay programadores que han dicho que han tardado hasta dos y tres semanas para aceptar las actualizaciones.

2º. Una vez que Apple contesta el segundo problema. Se acepta o no se acepta?. Lo gracioso es que los términnos de aceptación o no de las aplicaciones de Apple varían cada día y completamente de forma anárquica. Es decir, digamos que Apple rechaza las aplicaciones que le da la gana. Por ejemplo, y esto no es nuevo, hay programadores que simplemente le han echado hacia atrás sus aplicaciones por una mala traducción, por incluir palabras como "culo" "teta" "mierda"... lo gracioso es que otras muchas aplicaciones con tales defectos las aceptan sin problema. Esto no era algo nuevo, lo nuevo viene ahora.

Recientemente Apple ha ido rechazando aplicaciones que ellos concevían que tenían las mismas funcionalidades que las ya creadas por Apple. Es decir, la primera con notoriedad fue una aplicación que pretendía la descarga directa de PodCast en el dispositivo. Apple le contestó que la tenía que rechazar, puesto que iTunes ya disponía de la opción de introducir PodCast y que dicha aplicación no aportaba nada nuevo. Cosa evidentemente además falsa, pues aunque las dos cosas sirven para descargar y meter Podcast el sistemas es completamente diferente. Además la aplicación permitía usar Podcast de muchos sitios.

Bueno, su creador que por supuesto ya pagó los 99$ o 299$ para publicarla, se ha quejado y reconocido que si Apple sige negándose distribuirá su App por WIFI (cosa que se puede hacer).

Pero hace un par de días saltó otro problema igual. Apple impedía que una aplicación que servía para gestionar las cuentas de Correo de Gmail apareciese en el AppStore. La contestación de Apple fue clara: Ya existe la aplicación mail que está para tal efecto. Y da igual si la aplicación nueva es mejor o peor que la de Apple, simplemente esa aplicación no aparece y listo.

Ah, pero la historia no se queda ahí. Apple a la vista de estas quejas de los programadores en Internet, en blogs... ha modificado los terminos de las licencias y contratos para que las mismas cartas de aceptación y cancelación estén amparadas bajo NDA, es decir, que la información que se transmite por esas cartas de Apple a los programadores SON privadas, no puede hacerse público su contenido. Evidentemente para que no nos enteremos nunca de los actos abusivos de Apple. Vamos, que quien firme o esté de acuerdo con dichos términos, no puede hablar al respecto de la cancelación de Apple, puesto que sería ilegal. Sin entrar mucho en política es lo que pasa en China. En china nunca sucede nada malo, no hay prensa negativa!! con lo que a ojos de los ciudadanos todo es perfecto y armonía. Apple dice: "Esto es mala prensa, tenemos que hacer algo" Y en vez de modificar su política un tanto absurda pone trabas legales a que se conozcan los intereses de Apple. Increible verdad?

Claro que si no estás de acuerdo con los términos de Apple, simplemente no puedes publicar aplicaciones. Es un poco como AdSense de Google. Si aceptas las condiciones te estás exponiendo a que hagan contigo lo que quieran cuando quieran. Como si en cualquier momento Apple cree que tiene que suspender una aplicación. El motivo no importa, simplemente ellos tienen la sartén por el mango.

Después aun dicen en muchos sitios si el JB seguirá siendo viable o no, si el AppStore acabaría con el JB o que si el JB tan solo persiste para piratear las aplicaciones del Store. No señores. Los programadores cada vez están más artos de la política de Apple con el Store. Si es cierto que al principio muchos se fueron al Store de Apple para probar suerte y sacar algo de dinero, muchos están volviendo y volverán más, a Cydia y otros sistemas en los que Apple no meta las narices o les diga que es lo que pueden poner o no dependiendo exclusivamente de los intereses económicos, de marketing... o sean cuales sean.

Señores, otro suspenso más para Apple. Desde luego los tiempos cambian, y los pocos que permanecían supuestamente honrados y que velaban por los derechos del consumidor... todos caen, y los mitos se desmitifican.

Un saludo amigos

sábado, 20 de septiembre de 2008

Artículo: iTunes 8: Lo bueno, lo malo y lo peor

Hace ya unos cuantos de días que salió de forma oficial iTunes 8. Desde todos lados decían que Apple había modificado en gran parte esta vez iTunes para dotarlo de mayor velocidad, menos fallos y nuevas funcionalidades.

Desde mi punto de vista ha sido poco más o menos un desastre. Hay cosas buenas, cosas malas y cosas peores. Así que vamos a ir viendolas poco a poco. Podemos decir que esto es un mini review de iTunes 8. Al final veremos un par de trucos, para solucionar parte de las cosas "peores" de iTunes 8


Lo mejor:

La única función nueva añadida, Genius. Genius es un nuevo sistema de crear listas de reproducción personalizadas basadas teóricamente en la similitud entre ciercas canciones. Os explico el proceso. iTunes primero debe de recolectar información sobre toda nuestra música. Esta información es ENVIADA A APPLE. Apple recive dicha información y la añade a su base de datos, para comprobar que tipo de música nos gusta, escuchamos más frecuentemente... Una vez realizada dicha comprobación, nos envia de vuelta los datos que supuestamente son más relevantes para nosotros. Estos datos se basarían de nuevo en teoría de los cientos o millones de personas que están usando Genius. Por ejemplo, si reproducimos la canción "Princesa" de Joaquín Sabina, y le damos a Genius, entre otras entradas me aparecen canciones como: "Cuando nadie me ve" de Alejandro Sanz o "A contracorriente" de El canto del loco. Posiblemente porque la base de datos de Apple interpreta que dichas canciones son del mismo tipo a "princesa" basándose en los gustos recolectados de esos millones de personas.

Claro que Genius dicta mucho de ser perfecto, y pueden colarse canciones que no pintan nada.


Quitando Genius, la verdad es que no hay nada destacable de iTunes 8. En todo caso destacar la nueva vista de música. Desaparece la vista "listada". En vez de esta se crea otra que muestra en mosaico por artista, album... cada uno de los discos.


Lo malo:

Por mucho que Apple dijera que habían mejorado el rendimiento general de iTunes, personalmente lo veo igual de malo. Consume muchísimos más recursos que cualquier otro reproductor de audio, por no decir de video. iTunes sigue suspendiendo para la reproducción. Siempre he dicho que como gestor de tus álbumnes es una maravilla, pero como reproductor es de lo peorcillo que existe.


Lo peor:

Por si fuera poco, hay problemas incomprensibles en iTunes 8. Por ejemplo sigue sin existir una opción en iTunes para poder deshabilitar la copia de seguridad automática. Para hacer esto hay que recurrir de nuevo a las lineas de comando (en caso de MAC) y edición de archivo (en caso de Windows).

Pero por si no echábamos de menos esta opción, Apple también a aprovechado para eliminar otra. Antes iTunes nos daba la opción de que no nos aparecieran las flechas en cada una de las canciones, flechas que enlazan directamente al Store y nos muestran otras cancioens del mismo artistas, albumnes y otros. Para mi, estas flechas siempre han sido bien incómodas, no uso iTunes para comprar música, y lo ultimo que quiero es "publicidad" hacia el Store. Estoy seguro que muchos incautos han comprado música accidentalmente por tener la opción de compra "Un click". De nuevo Apple deja claro que lo que le importa es el dinerom y no el usuario.

Y para acabar, dentro de lo peor también, parece ser que Apple ha cometido fallos en la versión para Windows de iTunes 8. Me hace gracia por que a raiz de esto he oído frases como: "Es que Windows es una porquería, usar un MAC". El problema es debido al parecer por un componente de iTunes, usbaapl.sys bajo Windows Vista. Al ser un controlador de sistema se carga al iniciar Windows, y el problema está en que no para de provocar BSOD en algunos usuarios. Sinceramente, se pone también de manifiesto la mentalidad de la comunidad MAC a la de Windows. No digo que Windows sea mejor o peor, personalmente creo que son dos OS diferentes orientados a mundos diferentes. Pero tan solo la comunidad MAC es capaz de decir que un fallo de programación de Apple en un controlador es problema también de M$. Por favor...

La solución que ha dado Apple ha sido desinstalar Mobile Device e instalar iTunes 8 de nuevo.


Para acabar, pero no menos importante, vamos a decir como podemos solucionar al menos algunos de los fallos de iTunes. En este caso la copia de seguridad automática y la eliminación de las dichosas flechas de enlace a Store. Dependiendo de si simos usuarios de Windows o de MAC OS, el proceso será diferente:


En Windows, la manera más simple de hacer todo el proceso es por linea de comandos, aunque hay otros métodos que implican la edición manual de archivos. Voy a explicarlo por lineas de comando puesto que me parece más simple. Lo primero es ir a Inicio/Ejecutar. Esta ventana tambien puede ser sacada presionando la tecla Windows + R

En el diálogo que nos aparecerá teclearemos lo siguiente: cmd

Esto nos dará acceso al promp de Windows. En el tendremos que desplazarnos a la carpeta que se encuentra en:

C:\Archivos de programas\Archivos Comunes\Apple\Mobile Device Support\bin

Si nuestro Windows estuviese en ingles pues sería:

C:\Program Files\Common Files\Apple\Mobile Device Support\bin

Vamos a suponer que estamos en ingles, pero el proceso es igual en español que ingles, salvo que las rutas hay que ponerlas en ingles.

Teclearemos lo siguiente en el promp de Windows:

cd\
cd Program Files\Common Files\Apple\Mobile Device Support\bin

Esto nos situará en la carpeta en la que se encuentra la utilidad que vamos a usar. Ahora todo depende de la acción que queramos conseguir.

Para deshabilitar la copia de seguridad automática:

defaults.exe write com.apple.iTunes AutomaticDeviceBackupsDisabled -bool true


Para hacer desaparecer las flechas:

defaults.exe write com.apple.iTunes show-store-arrow-links -bool true


En MAC OS el proceso es igual, salvo que no es necesario moverse a la carpeta en cuestión, dado que iTunes se encuentra integrado casi completament en el sistema. Tan solo hace falta acceder al terminal y ejecutar:

defaults write com.apple.iTunes AutomaticDeviceBackupsDisabled -bool true

ó

defaults write com.apple.iTunes show-store-arrow-links -bool true



Eso es todo por hoy, y bueno... esperemos que un día Apple empiece a pensar un poco más en el usuario que en su bolsillo.

Un saludo.

Firmware 2.1: Jailbreak IV, también para Windows

Ayer salío de la mano del Dev-Team la compilación para Windows de QuickPwn, en su versión GUI. Con esta simple herramienta podremos hacer JB directamente sobre nuestro dispositivo.

Recordar que QuickPwn no crea imágenes personalizadas, sino que hace el JB diréctamente a nuestro dispositivo. Luego el proceso sería:

1º. Instalar iTunes 8
2º. Descargar e instalar la firmware apropiada. Los enlaces los teneis en la página de Enlaces a firmwares

Nota: En iTunes 8 creo que ya no es posible hacer el "truco" de shift + click derecho para cargar la firmware que deseemos, así que cuando usemos para crear la firmware personalizada (que no se hace con QuickPwn) tendremos que copiar esta a la carpeta donde iTunes descarga las firmwares. En Vista esta carpeta está en:

C:\Users\[tu sesión]\AppData\Roaming\Apple Computer\iTunes\iPod Software Updates (o iPhone Software Updates)

3º. Descagar QuickPwn y ejecutarlo. Seguir las escasas instrucciones que nos dan.

No recomiendo instalar Installer, pero cada cual que decida. Sobre como modificar las imágenes de Boot, el procedimiento con QuickPwn sería el mismo que el que expliqué para la versión anterior. Habrá que descomprimir el ejecutable, sustituir los logos por los tuyos y ejecutar el programa desde los archivos descomprimidos.

sábado, 13 de septiembre de 2008

Firmware 2.1: Jailbreak III (Solo para MAC)

Bueno, ahora sí ha salido de manera oficial JB para 2.1, tan solo para MAC aun, aunque es de suponer que la versión para Windows de QuickPwn y Winpwn no se haga de esperar. Como no soy usuario de MAC (ni quiero serlo) no puedo poner una guía de como usarlo, pero vamos, que no tiene ciencia alguna. Os dejo los enlaces:

Pwnage 2.1

QuickPwn 1.1

Un saludo y feliz JB

Nota: Recordar que nada para iPod Touch nuevo ni liberación para iPhone 3G

Firmware 2.1: Jailbreak II

En el post anterior hice una apreciación sobre el suuesto método de JB que había salido. Yo alegaba que no había sido con el consentimiento del Dev-Team, pero que podía equivocarme. Acaban de hacer público este comunicado:

"We would just like to point out that that there are lots of fake sites using the QuickPwn name, these muppets don’t know anything special, and they don’t have anything unique , they are vultures that sit on the domain names and plagiarize content and information in the hope that you donate to them, or click the google ads.

As we’ve mentioned before we don’t accept donations and we certainly don’t allow ads on our site, anyone who asks for donations in our name, is lying, end of story.

So, we would recommend that you stay away from badly designed chaotic sites (especially ones of a monochrome variety) that capitalize on the name of our tools.

Spammers should also watch out, even if they are part of the extended iPhone community. Like any decent blog we don’t moderate our comments, we let the criticism flow alongside the praise, but we do filter on spamwords and then decide if they get posted. Play nice people, spamming just isn’t cool."


Traduciendo sin mucho cariño dice algo así como que recientemente han salido a la luz numerosos sitios FALSOS usando el nombre de QuickPwn. Dichos sitios no tienen conocimientos especiales, ningún trabajo real ni nada por el estilo (Es decir, que no hacen más que modificar aquí y hallá, un trabajo de niños). Tan solo son sitios que usan el mismo nombre, plagian contenido y esperan que pinches aquí y allá, en los banner de google u otros sistemas, donaciones... para ganar dinero. Nosotros jamás hemos usado ni ads (publicidad) ni hemos aceptado donaciones, CUALQUIER sitio que clame alguna de las dos cosas, claramente no tienen nada que ver con nosotros.Recomendamos evidentemente alejarse de todo este tipo de páginas caóticas, mal diseñadas y en especial por una de ellas, monocromática, de mal gusto... (En realidad lo que dice es que está poniendo a partir a la página que supuestamente se lanzó el JB 2.1). El SPam existe hasta en estos mundos, pero cualquier blog por "cutre" que sea, jamás moderaría un comentario que tan solo expone una explicación o crítica. Nosotros es cierto que usamos filtros para SPam, pero aceptamos cualquier comentario crítico que no esté de acuerdo con nuestras opiniones.


Bueno, en realidad se puede traducir mucho más. Lo que dice es que el post que puse justo abajo es del todo cierto, que son un grupo de chicos que no tienen ni idea y que tan solo eseperan hacerse con algo de dinero usando el nombre de la misma herramienta.

Evidentemente sé que no soy nadie para decir esto, pero quien me lee, si se cree lo que yo escribo claro, y quiere estar seguro siempre de las noticias y novedades al respecto, que espere siempre una entrada o un comunicado "oficial".

Un saludo amigos





viernes, 12 de septiembre de 2008

Firmware 2.1: Jailbreak

Ha salido hace poco una supuesta versión nueva de QuickPwn para realizar el proceso de JB a nuestro dispositivo. El problema es que hasta donde yo sé, no ha existido ninguna confirmación oficial por parte del Dev-Team, lo que combierte el asunto en "cauto".

El método que se ha usado es usar una versión modificada de QuickPwn para dar soporte a 2.1. Esto no tiene mayor problema, el problema llega ahora.

iTunes 8 tiene ciertos niveles mayores de seguridad para impedir el JB, así como para impedir la instalación de aplicaciones piratas, para ello ha actualizado el archivo encargado de ello, MobileInstallation, un archivo que ya hemos hablado de él. En el supuesto método para hacer JB se trata de realizar JB a la versión 2,1 como hemos realizado en las anteriores PERO sustituir MobileInstallation por una versión anterior!! esto como hemos dicho es un error enorme!!!

El Dev-Tem ya dijo que la solución pasa por parchear posiblemente iTunes. Es posible incluso que se pueda realizar con un nuevo parche a MobileInstalation, pero en última instancia se debería de usar un archivo d euna versión anterior, eso NUNCA.

Cada cual que pruebe, juege... yo esperaría a una confirmación oficial por parte de Dev-Team, dudo mucho que el JB que usen metan archivos antiguos. Yo diría que se esperase.

Firmware 2.1: iPhone GMS /iPhone 3G

Sin fatar a su palabra Apple ha liberado las dos versiones que faltaban, las de iPod Touch salieron antes, posiblemente a la comercialización de los iPod Touch nuevos.

En cualquiera de los casos os dejo los link de descarga directa y actualizo como es costumbre el post de "Enlaces de Firmwares"

Firmware 2.1 iPhone GSM/EDGE
Documentación Firmware 2.1 iPhone GSM/EDGE

Firmware 2.1 iPhone 3G
Documentación Firmware 2.1 iPhone 3G

jueves, 11 de septiembre de 2008

Firmware 2.1: Jailbreak, buenas y malas noticias

Empecemos por las malas:

Bueno, aquí no lo hemos comentado puesto que por ahora tampoco es que sea seguro nada.

Al parecer los nuevos iPod Touch han modificado algunas cosillas internamente suficientemente para impedir de momento el JB. Parece ser que Apple habría modificado el módulo criptográfico AES cambiando la GID-Key. La GID-Key es una Key grabada en hardware que pro ahora compartían la misma tanto los iPhone como los iPod Touch. Esta key se usaba para encriptar la cadena "345A2D6C5050D058780DA431F0710E15". El resultado de dicha encriptación no obtante era tambien conocido: "188458A6D15034DFE386F23B61D4377"

Este ultimo resultado era la Key de desencriptación de los archivos IMG2/IMG3 (el sistema IMG3 es diferente, pero también jugaba un papel importante en él). Estos archivos IMG2/3 están presente en todos los iPhone e iPod Touch, por poner un ejemplo el Kernel, las imágenes de Boot... sin esta GID-Key es imposible crear uan firmware personalizada, eso suponiendo que no existan mas barreras nuevas.

El problema es que incluso la GID-Key de los actuales iPhone e iPod Touch es desconocida. Sí, sabemos la cadena a encriptar y el resultado final, pero es imposible realizar un proceso inverso para obtener la GID-Key. Pero aun cuando la encontrásemos, en los nuevos iPod Touch esta GID-Key ha sido modificada. En un principio se pudieron obtener muchos datos gracias al primer JB. Una vez se realizó el antiguo JB y el iPod / iPhone nos dió acceso al sistema, gracias a ese primer paso, se logró obtener muchísima información de los dispositivos, información que es usada ahora en los nuevos JB. Por ejemplo, con ese acceso primero se podía "forzar" al hardware AES para lograr capturar algunos valores.

Pero para poder llamar al hardware AES sería necesario como poco poder ejecutar código en el dispositivo, y esto no es posible.

Para lograr algún avance, es muy posible que primero se necesitase encontrar o extraer de algún modo (quizás un exploit) esta GID-Key, aunque seguramente no sería la única barrera a superar.

Está claro que el iPod Touch es un proyecto secundario para los genios, y por ahora supongo que estarán más liados con el iPhone 3G para liberarlo... De todos modos nunca se sabe... tan solo podemos decir que, como era predecible, el JB para el iPod Touch nuevo es imposible por ahora.


Las buenas noticias:

La mayoría estamos de suerte!! el JB de la 2.1 se encuentra ya en camino. Como hemos dicho una y otra vez el JB en los viejos Touch e iPhone es posible debido a un exploit en su bootloader, y esto es algo que Apple no puede evitar. Pero también es cierto que Apple puede ir poniendo las cosas más complicadas. Apple no ha modificado NADA a nivel de firmware en la nueva firmware para impedir el JB... ahora se ha pasado a iTunes.

Apple se ha dado cuenta que más medidas de seguridad en los viejos dispositivos no puede poner... así que lo está intentando ahora hacer en iTunes. Algo así como un detector de iPod /iPhone que han sido Pwned. Ahora si iTunes 8 detecta un iPhone o iPod Touch que ha sido Pwned devolverá un error y no permitirá conectarlo. Luego cual es la solución? Parchear tambien iTunes 8.

Esto es un poco lo de siempre, un tira y afloja... la verdad es que un poco cansa, pero que le vamos a hacer. El primer parche ha sido para iTunes 8 para MAC e iPod Touch, y ha funcionado perfectamente. Casi con toda seguridad para la semana que viene tendremos la colección completa de todos los parches para MAC/Windows iPhone/iPod Touch. Si cuento bien serían un total de 6 Parches, 3 para MAC y 3 para Windows.

Es posible de todos modos que en el mismo programa de JB, ya sea Winpwn o Pwnage se añadan simplemente estos parches y el mismo programa realice el parcheo de los archivos en cuestión, luego para el usuario final no notará nada.

Bueno, es un alivio ver que vamos a poder seguir disfrutando de la última actualización de Apple con todo nuestro Software JB

Un saludo.

miércoles, 10 de septiembre de 2008

Firmware 2.1 /2.1.1para iPod Touch e iTunes 8

Digimos que la firmware saldría el viernes... pero ya la tenemos disponible, y con alguna sorpresa curiosa.

Estaba descargando las firmwares y me doy cuenta que efectivamente el iPod Touch nuevo tendrá una firmware "diferente" (es otro archivo, pero el 99% de la firmware es igual) y veo que misteriosamente ya viene con la versión 2.1.1!! es decir, Apple comienza a fabricar los nuevos iPod Touch con la 2.1 y descubre un fallo en la firmware y saca una nueva 2.1.1. Pronto empezamos... la compilacion es 138 frente a la 137 de la firmware 2.1 con lo que posiblemente es algún fallo que han descubierto a ultima hora. Espero que sea algo aislado y no comencemos de nuevo con una actualización tras otra para corregir errores.

Esto no ha sucedido cno la firmware para iPod Touch viejo.

Como nota decir que la firmware para iPod Touch viejo está protegida para que se tenga que pagar por ella, mientras que la firmware para iPod Touch nuevo se puede descargar directamente.

Así mismo es necesario la nueva versión de iTunes para poder instalar la versión 2.1.

Otra cosa curiosa es sobre esto. Para instalar esta versión iTunes te dice que tienes que usar la versión de iTunes al menos 7.7.1... es un poco absurdo cuando está disponible ya la versión 8.

Os dejo los enlaces para descargarlas. La versión para iPhone aun no está disponible:

iTunes 8

Firmware 2.1.1 (Solo para Touch nuevos)
Documentación Firmware 2.1.1

Firmware 2.1 (Solo para Touch viejos, enlace protegido)
Documentación Firmware 2.1


Igualmente he actualizado la entrada de los enlaces a firmwares.

martes, 9 de septiembre de 2008

Firmware 2.1, iTunes 8 y nuevos iPod: Resumen

Antes de seguir leyendo, NO INSTALAR iTunes 8 ni firmware 2.1 si se quiere conservar el JB o liberación del iPhone. Cuando exista un método se publicará como siempre. No quiero preguntas tipo: "he actualizado y ahora no me funciona..." o "he actualizado y ahora no puedo volver a la versión anterior..."

Estais avisados!


Bueno, el evento ha finalizado y la verdad no se han dado grandes novedades. Todos los anuncios eran esperados:

Nuevo iPod Nano: Es un poco mas freak, estéticamente no me gusta demasiado, pero ei, para gustos colores. Los precios no están mal del todo y las capacidades bastante buenas. Sobre el iPod Nano habían ido la mayoría de los rumores.

iPod Nano 8GB 149$
iPod Nano 16Gb 199$


El iPod Classic no hay cambios, pero se dejan de vender los modelos de 160Gb para abrir paso al nuevo modelo de 120Gb por 249$

Nuevo iPod Touch: Sobre la cantidad de rumores estas fechas si ha aparecido el nuevo Touch, pero era de esperar todo lo "nuevo" o no "nuevo" de él. El nuevo Touch está inspirado en la nueva arquitectura del iPhone 3G, internamente y estéticamente. Es decir, que lo único que han modificado ha sido ponerle un altavoz (cosa que la verdad sí se agradece) y el control de volumen lateral. Siguiendo con las mejoras del iPhone 3G, los componentes internos se han actualizado para el bajo consumo, así como la batería, dando una vida media superior. Pero nada más, ningún cambio realmente interesante, ni tampoco un Touch de 64Gb. Los cambios anunciandos son los que hemos ido anunciando este tiempo atrás, ni más ni menos. Era predecible.

iTunes 8 y Firmware 2.1: El nuevo iTunes supuestamente está mucho más optimizado para velocidad, sincronización... incorporan una nueva función llamada lista genio, que es algo así para construir de forma automáticas una lista de canciones según cada usuario. Esta nueva función se implementará tambien con la firmware 2.1.

Sobre la Firmware 2.1, será gratuita tanto para los usurarios de iPhone 3G y GSM (evidentemente) y tambien será gratuita para los usuarios de iPod Touch que ya compraron la 2.0, cosa bastante lógica, aunque no predecible, teniendo cuenta la actitud capitalista de Apple a este respecto. Para los usuarios que aun tengan la 1.1.X el precio será de 9.95$, lo mismo que costaba la 2.0.

La firmware 2.1 supuestamente soportará Nike+. Quien no sepa que es, digamos que hay ciertas zapatillas Nick con sensores en ellas, y el iPod reproduce según tus pasos. Según Steve, la 2.1 se ha centrado en fallos de seguridad, cierres de las aplicaciones, drenaje excesivo de batería... y para los iPhone 3G problemas de covertura, cortes de llamadas... vamos... que Apple se ha lucido con la 2.0... Sobre funciones nuevas poca cosa por ahora que podamos saber, aunque no se descartan otras funciones.

La Firmware estará disponible supuestamente de manera oficial el Viernes, ya veremos cuando tenemos acceso a ella.

---------------------------------------

Para concluir, voy a dar mi opinión del evento, puramente opinión personal:

Nada nuevo, aburrido y un poco sin sabor. La firmware 2.1 tan esperada tan solo es algo que tendría que haberse tenido lista cuando sacaron la 2.0.

Ningún motivo sustancial para adquirir los nuevos modelos de iPod Touch. Sí, el altavoz es algo que se agradece, pero no es un motivo ni mucho menos de peso para cambiarse ni para cambiar de opinión respecto a otros productos. Y respecto la batería bueno... siempre es bueno tener uan batería mejor, pero tampoco es un motivo decisivo para el cambio. Internamente el viejo y el nuevo son prácticamente el mismo, la prueba de ello es que la firmware será casi seguro la misma. Además se corre un riesgo añadido que ya descubriremos estos días que pasa con él: JailBreak.

Apple ha podido imponer cambios a la firmware suficientemente para impedir por un corto período de tiempo el JB para los modelos antiguos y los iPhone. Pero al ser los iPod Touch nuevos, el BootLoader es posible que se halla corregido. De ser así, el JB en los nuevos iPod Touch sería imposible de realizar. Y esto si que es un motivo de peso para adquirir un iPod Touch viejo. Muchos hablaban de vender corriendo el viejo y para adquirir el nuevo... es posible que esto sea la peor de las estrategias... claro está, siempre hablando desde el punto de vista del JB.

Mientras que los amigos sacan un nuevo JB para nuestro dispositivo, recordar que cualquier actualización que se realice (sobre todo al iPhone 3G) puede desde imposibilitar el JB a impedir ha usar el iPhone con otro operador para siempre (en el caso del 3G, debido a las actualizaciones de BaseBand). Si no os importa el JB, actualizar, comprar... lo que querais. Si preferis JB, ESPERAR.

Firmware 2.1 e iTunes 8 (Actualizado)

Estamos en Septiembre y Apple ya baticinó la salida de la firmware 2.1 en este mes. Si a eso le sumamos rumores y el llamamiento a la prensa de Apple para hoy... lo más posible es que la Firmware 2.1 junto con iTunes 8 vea hoy la luz.

Algunos dicen que Apple anunciará dos modelos de iPod nuevo, un nuemo iPod Touch y un nuevo iPod nano. Aunque lo más posible es que aun cuando esto fuese cierto, el nuevo iPod Touch sería casi igual al "antiguo".

Rumores o no por si acaso, se cumplan o no las espectativas un llamamiento a todos como siempre:

Si hay actualización de iTunes y Firmware, NO ACTUALIZAR si se desea tener JB y mucho menos si los usuarios de iPhone 3G quieren poder un día liberar el teléfono. Cada actualización actualiza tambien el baseband, con lo que Apple puede ir implementando medidas mayores de seguridad.

Todo aquel que no le importe perder el JB o su iPhone liberado, podrá como es costumbre actualizar sin problema alguno a esta nueva versión.

Se cree que las mejoras principales irán destinadas de todos modos al iPhone 3G, pero en cuanto tengamos más información la iremos añadiendo a esta misma entrada.

Un saludo.


ACTUALIZADO:

19.10: iTunes 8.0 será liberado hoy
19.17: Nuevo iPod Classic 120Gb 249€, el iPod Classic de 80 desaparece
19.28: Nuevo iPod Nano 149$ 8GB / 199$ 16GB
19.30: Nuevos auriculares
19.33: Nuevo Touch, contorl de volumen y altavoz. Forma similar al iPhone e integración con Nike+, version 2.1 posiblemente de fabrica
19.43: AppStore, AppStore... me aburro...
19.48: iPod Touch -> 8GB 229$ / 16GB 299$ / 32GB 399$
19.52: Firmware 2.1 el viernes. Gratis para iPhone, 9.95$ para iPod Touch si vienes de la 1.1.X y gratuita para Touch si ya tienes la 2.0 (menos mal, estaría bueno cobrar tambien a los que pagaron por la 2.0)
20.00: Se acabó, ahora hacemos un resumen más extenso de todo y alguna informacion como siempre adicional

jueves, 4 de septiembre de 2008

Proyecto: Modificando MobileInstallation: Usando iTunes para instalar aplicaciones

Antes de comenzar dos puntos a tener bien en cuenta: 1º. Esto tan solo es una muestra educativa o para ser usado con aplicaciones gratuitas. Cualquiera interesado podría hacerlo en casa sin mayores problemas, 2º. En internet abundan, al igual que pasaba con el antiguo parche de SpringBoard, diferentes versiones de MobileInstallation. JAMAS JAMAS se debe de usar una versión diferente del archivo que estamos usando!! esto es muy importante. Los parches que existen son todos normalmente EL MISMO, basado en el MobileInstallation 2.0. Usar versiones diferentes tan solo da lugar a problemas, fallos, relentizaciones... por eso es importante saber como fueron creados y adaptarlos a las nuevas versiones. En todo mi ejemplo yo estoy usando la versión 2.0.2. 3º. Existe un problema añadido de las distribuciones ilegales. Dado que los archivos deben de autofirmarse para que puedan ser usados, si le pasas un archivo creado pro ti mismo a cualquier otra persona, no solo estarás incurriendo en algo ilegal, que a muchos no les importa demasiado... sino que además estarás enviando un archivo que puede contener información personal. Por ejemeplo, en uno de los parches que existen por la red ilegales, contiene información personal de su creador. Esto es un error!!


Hace mucho tiempo hicimos una pequeña guia de como tan solo con un editor Hexadecimal, IDA o algún otro desensamblador se podía modificar de forma teórica el SpringBoard de nuestro dispositivo en los iPod Touch para activar las aplicaciones del iPhone, allá para la versión 1.1.4

Con la versión 2.0 nos sucede algo similar.

Cualquier Aplicación gratuita o de pago descargada desde AppStore se encuentra almacenada en un archivo .IPA. Este archivo no es más que un archivo zip que contiene la aplicación en sí, la firma y otros datos personales del comprador.

En teoría por lo tanto se podrían construir entonces paquetes .IPA de aplicaciones realizadas por la comunidad que previamente instalábamos por Cydia/Installer y tendríamos la opción también de instalarlos desde el mismo gestor de iTunes. Esto tiene algunas ventajas, aunque también algunos inconvenientes.

Ventajas:

Las puedes tener predescargadas en el PC, luego en el caso de restaurar tan solo con darle a un botón sería suficiente para sincronizarlas todas.
La velocidad de transferencia por cable es mucho mayor que por WIFI

Inconvenientes:

Las actualizaciones se tendrían que hacer también manualmente, es decir, descargando la aplicación al PC y después añadiéndola de nuevo a iTunes
No sería posible instalar aplicaciones que necesitasen tareas específicas como modificación de archivos de sistemas u otros. Es decir, no tendríamso script de instalación

Este es el método también que usan algunos piratas para poder sincronizar de manera simple las aplicaciones hackeadas del AppStore. Evidentemente no es el espíritu de esta entrada ni de este blog. Aquí solo informamos.

Como pasaba con el SpringBoard, no es posible publicar (dado que es ilegal) material de Apple modificado. No obstante esto no es una entrada de distribución, sino de aprendizaje. En este mini titurial aprenderemos como y por qué, cada cual puede modificar por su propia mano el archivo en cuestión: MobileInstallation

¿Y por qué tenemos que modificar nada? Bueno, Apple protege como es natural su negocio, y tan solo permite usar iTunes y sincronizar con nuestro dispositivo aplicaciones que han sido previamente firmada por ellos. Cualquier intento de sincronizar cualquier otra aplicación fallará. Aquí hay que hacer un pequeño parentesis para explicar que es esto de la firma digital, para quien no lo sepa ya:

Digamos que un archivo digital, el que sea, se puede firmar de forma que sea 100% seguro (hasta la fecha) que el destinatario final sepa si quien emitió dicho archivo es o no es genuino o si a sido modificado o no. Lo mejor es siempre un ejemplo. Pongamos por ejemplo una aplicación del Store, llamémosla Aplicación "X".

Apple emite por Store la aplicación X. A la aplicación X se le realiza el proceso de firma común. Esto normalmente es:

1º. Se calcula el Hash del archivo o los archivos. Una función hash devuelve siempre un valor alfanumérico de longitud fija, de forma que cualquier modificación, por mínima que fuese (aunque fuese la modificación de un solo byte) modificaria completamente este valor Hash. Este valor Hash es el que se usa para saber si la aplicación ha sido modificada o no. Imaginemos entonces que esta aplicación X tiene por Hash: 666777888 (por ejemplo).

2º. Este Hash se puede calcular en cualquier máquina final, tan solo hay que realizar la misma función de hash sobre el mismo archivo y el valor debería de ser el mismo que el que se calcula al inicio. Si el Hash calculado inicialmente coincide con el calculado por el usuario final podemos garantizar que el archivo no ha sido modificado, puesto que de hacerse, este tendría un Hash diferente. ¿Pero como sabe el usuario final cual fue el Hash calculado inicialmente?

3º. El hash se podría introducir en el mismo archivo, a lo mejor al final del archivo. Pero de ser así, cualquiera podría modificar el archivo y modificar también el hash, de forma que el usuario final vería que el hash calculado por él es el mismo que el calculado al inicio. Lo que se realiza es firmar. Cuando se habla de firma, lo que se hace es proteger el Hash inicial con un certificado de firma del emisor.

4º. Apple por tanto calcula el Hash de la aplicación X: 666777888 y lo protege con su certificado de firma, con una clave privada que solo Apple tiene y conoce. Pero como lo protege con su clave privada, cualquier usuario con la clave pública puede abrirlo y ver el Hash. La clave publica es algo que se conoce y tenemos en nuestro dispositivo. ¿Pero entonces que sentido tiene esto? Facil. Apple firma que el Hash es 666777888. Si cualquiera modifica el archivo el hash final cambiaría, con lo que debería de cambiar el hash protegido por la firma de Apple. Cualquiera puede ver el hash calculado por Apple, esto no es complicado, pero nadie puede reconstruir la firma de Apple. Un hacker debería modificar el archivo, recalcular el hash, eliminar la firma de Apple (hasta aquí todo perfecto), y firmar el nuevo Hash CON EL CERTIFICADO DE APPLE. Como no dispone de este certificado, lo único que podría hacer sería firmarlo con un mismo certificado o una autofirma. Pero entonces que pasaría en el usuario final?

5º. El usuario final reciviría el archivo, calcularía el Hash e iría a mirar el Hash calculado por Apple. Se encontraría que el certificado no pertenece a Apple!! si, el Hash puede ser correcto, pero la firma no es la de Apple, con lo que el usuario final intuye o imagina que el archivo ha sido modificado en el origen, puesto el archivo final que él tiene NO ES DE APPLE, si fuera de Apple, estaría firmado por ellos.


Bueno a priori puede resultar un poco confuso pero si se lee dos o tres veces se comprende. iTunes usa un sistema similar. Cuando introduces una aplicación en iTunes esta se la cree. Al intentar sincronizar con el iPod o el iPhone, estos verifican si está firmada por Apple. Al detectar evidentemente que no está firmada por Apple se impide la sincronización. El proceso de firma no se puede imitar, luego el vector de ataque es diferete.

Comprendemos ahora la necesidad de modificar este archivo de nuestro dispositivo. Este archivo es el que rechaza o acepta la aplicación, dependiendo de la verificación de la firma. Un simple salto incondicional en su código haría que fuese correcta o no la firma de la aplicación, se realizaría la sincronización.

Pero modificar este archivo tiene el mismo problema. Desde la versión 2.0 TODOS los archivos que se ejecutan dentro del dispositivo de Apple (incluyendo este archivo) tienen que estar firmados y autentificados. Así evita Apple que se pueda ejecutar cualquier tipo de archivo que no pertenezca a Apple. Estos chequeos los realiza el Kernel del dispositivo. Con lo que si modificásemos en principio este archivo, nuestro dispositivo sabría que ha sido modificado e impediría su ejecución, lo que nos daría de resultado final un dispositivo que no pasa del logo de Apple.

Gracias al JB del Dev-Team, estos al hacer el JB lo primero que se hace es parchear el kernel de Apple para que permita la ejecución de cualquier archivo. En realidad lo que se hace es saltarse el chequeo de la firma de Apple. Es decir, se verifica la firma sí, pero sea la de Apple o no lo sea se acepta. Es decir, nosotros en el archivo MobileInstallation vamos a hacer algo similar que lo que hicieron Dev-Team en el kernel. Aun así, la aplicación tendrá que estar firmada, aunque la firma no sea de Apple.

Esto nos dice que la modificación tiene dos partes. La primera será la búsqueda del salto incondicional en el código de la aplicación que nos permita pasar siempre la firma, sea de Apple o no lo sea. La segunda parte será firmar todo el proceso. Recordar que aunque podamos modificar lo que queramos, si no realizamos la firma, sea esta original o no lo sea, no podremos hacer nada. Cualquier archivo que se ejecute en el dispositivo tiene que está firmado. Con JB da igual que sea de Apple o de pepito grillo, pero tiene que estar firmado.


Manos a la obra.

Lo primero es obtener el archivo original, este archivo se encuentra en la ruta:

/System/Library/PrivateFrameworks/MobileInstallation.framework

el archivo se llama:

MobileInstallation (recordar que en MAC los archivos sin extensiones son ejecutables, equivalen a los .exe en windows)

Lo podemos sacar de nuestro dispositivo por SFTP sin problema alguno como es natural.

Lo siguiente es tener conocimientos de desensamblador para ARM (Que es el procesador que usa nuestro dispositivo). Con un buen desensamblador esto no sería problema. Desensamblar nos devuelve el código máquina del ejecutable, es decir, las instrucciones que se ejecutarán en la CPU. Mirando este código si se tiene experiencia, paciencia y un poco de prueba error (y suerte), es posible encontrar el lugar exacto. En mi caso he usado IDA. Nada mas abrir el archivo con IDA tenemos algo así, esto puede asustar un poco:

(click para agrandar)


En realidad asusta más de lo que es ;). En esas ventanas tenemos desde el código desensamblado como muchas otras cosas. Nos vamos a fijar tan solo en el código desensamblado.

Lo primero es tener imaginación. El problema a abordar como hemos dicho es la firma... el problema es saber exactamente el lugar donde se verifica la firma, y así poder actuar sobre dicho archivo. Pero es un archivo relativamente grande como para analizarlo poco a poco (que también es posible hacerse).

Todos los programadores al codificar usamos tanto comentarios de código como textos descriptivos para ciertas tareas. Estos son completamente necesarios, más aun cuando trabajamos con otros compañeros. Sin estas herramientas sería muchas veces casi imposible comprender el código de algo. Estas cadenas de texto son siempre un buen punto de partida. Si estas cadenas noo nos diesen una solución, tendríamos que pasar a entornos simulados, puntos de ropturas y una mayor compresión de ensamblador. Es decir, en nuestro caso, estoy seguro que si nuestro dispositivo detecta una firma no válida, este de una forma u otra tendría asociado algún error.

Nota: Antes de editar la entrada dejé puesto que estos comentarios los dejaban los mismos programadores por error. No me refería literalmente a eso. Los comentarios de código, al compilar una aplicación son ignorados, no forman parte del código. Siento la confusión.

En este caso lo tenemos muy muy facil ;). El código de Apple está bien comentado (cosa además que no es que sea un fallo de programación, es lo ideal).

Nota 2: Cuando hago referencia aquí a que el código está bien comentado, me refiero no a comentario de código, sino a textos descriptivos de ciertas partes del código.

Luego lo primero es la imaginación. El problema está con la firma... firmar en ingles es to "sign", y la firma en sí "signature". Pues lo primero será buscar en todo el código por "signature".

Curiosamente tenemos dos entradas. Una parece ser la función buscada claramente, mientras que la segunda entrada parece hacer referencia a precisamente lo que comentamos anteriormente, un registro de error interno de la aplicación. Este registro es necesario, sino que que pasaría? la aplicación simplemente dejaría de funcionar? siempre tiene que mostrar algún error, aunque sea a nivel interno. Como decía nos encontramos con lo siguiente:


Si no se aprecia hacer click para agrandar la imagen

No hace falta saber demasiado de ensamblador para ver lo que hace esa función. Es la función que se pasará al detectar uan firma no válida. Es decir, el código se ejecutará y en algún momento se pedirá que se verifique la firma. Se entrará en dicha función y dependiendo de si es correcta la firma o no, se modificará en este caso el valor del registro R4. El registro R4 según vemos en esta imagen, y esta otra:


debe de ser "Cero". De no ser Cero dicho registro, se entraría en las subsiguientes rutinas haciendo que la aplicación fuese rechazada. La comparación final la hace como vemos en la imagen con el código:

CMP R4, #0
BEQ loc_33245F1C

Es decir, compara el contenido de R4 con cero. Si es cero, entonces se ejecutará la instrucción de salto BEQ (Que realiza el salto si la comparación anterior es igual). De no ser cero el contenido en R4, la instrucción BEQ se omitiría y se ejecutaría la siguiente instrucción, que sería en este caso

LDR R0, =(___FUNCTION__.14048 - 0x33244EBC)

Que sería ya una de las funciones que al final nos devolverá el error de instalación de aplicación.

Sabiendo esto hay muchas formas de realizar la modificación. La primera forma y siempre clásica sería cambiar el salto BEQ por un salto incondicional BAL. Modificando por ejemplo tan solo esto, BEQ por BAL, sea cual sea el valor de R4 saltará a la dirección loc_33245F1C.

Otra solución sería forzar que en R4 hay un cero llegado a este punto, para ello lo más simple sería situarnos en la parte del código donde se elimina este valor (cuando se verifica la firma y esta es incorrecta). Esto se encuentra un pelin más arriba:

ADD R0, PC, R0 ; "verify_executable"
ADD R1, PC, R1 ; "Could not validate signature: %x"
BL _installlog
MVN R4, #0

Si vemos esa última instrucción, MVN R4, #0 lo que está forzando es que en R4 jamás haya un cero. La instrucción MOV asigna un valor la instrucción MVN lo asigna pero complementado. Es decir, si en R4 antes de ejecutar esa instrucción teníamos un cero, al pasar esta instrucción en R4 aparecerá el cero en complemento a uno es decir:

00000000 (cero en binario y sin complementar) -> 11111111 (el valor una vez realizado el complemento a uno)

Es decir, los ceros se cambian a unos y los unos a ceros. En realidad es algo técnico tan solo para decir que en R4 al pasar por esa instrucción jamás se almacenará un cero.

Pero si la misma instruccíon MVN la modificásemos por MOV:

MOV R4, #0

Lo que haríamos sería que cuando la verificación de firma fracasara, en R4 se introduciría un cero. Luego a efectos prácticos... si la verificación es correcta es un cero, y si no es correcta es tambien un cero. Luego el salto BEQ que vimos al principio también se cumpliría siempre.

Como vemos hay muchas opciones de atajar el problema, todo es cuestion de ver donde deseamos colocar la modificación. Se podrían hacer soluciones más complejas, pero como después estoy hay que pasarlo a un parche o a una edición hexadecimal, es mucho mejor intentar solo modificar instrucciones como estamos viendo, un MVN por un MOV o un BEQ por un BAL. A efectos de edición, esto tan solo es un byte a cambiar en el archivo después.


Bueno, por ahora vamos bien. Hemos localizado el punto exacto que creemos es el responsable de que falle la verificación. Ahora solo toca corregirlo. Lo primero es ver que valor hexadecimal corresponde a cada instrucción, no todos se conocen el taco de instrucciones ARM y el opcode de cada instrucción. Y yo tampoco me lo sé. Así que vamos a averiguarlo. En IDA o en otros desensambladores podemos modificar el código evidentemente. Vamos a hacer el ejemplo a priori con la la modificación de MVN a MOV, pero igual se puede hacer para el otro ejemplo.

Sabemos que instrucción vamos a cambiar, nos queda por saber que opcode le corresponde a dicha instrucción, cual es el offset donde se encuentra dicha instrucción y que opcode corresponde a la nueva instrucción que vamos a cambiar por la vieja.

Para todo ello tan solo tenemos que posicionarnos en la linea de la instrucción a modificar. A la izquierda de dicha opción tenemos el Offset (el desplazamiento en memoria) de dicha instrucción:

__text:33244E98 MVN R4, #0

es decir, en mi caso 33244E98. Si cambio de pestaña y abandono la vista desensamblada y paso a vista hexadecimal, desde el mismo IDA veo esto:

y aquí si que obtengo ya lo que me interesa, el codigo hexadecimal de toda la instrucción:

00 40 E0 E3

Pero de ahí no puedo sacar el Opcode, es decirl el valor hexadecimal de la instrucción. Sé qie es uno de eos valores. Evidentemente el 00 no será, el 40 lo dudo, luego lo que queda es E0 ó E3. Por simple lógica saldría solo. Si la instrucción es MVN R4, #0 seguramente el código hexadecimal equivaldría a:

40 = R4
00 = 0
E0 = Opcode
E3 = Método de direccionamiento, en este caso direccionamiento literal, dado que se está pasando a R4 un valor directamente.

De todos modos es facil saberlo, basta con mirar alguna instrucción MVN o MOV más para estar seguro al 100% de cual es el Opcode. Igualmente es facil imaginar el opcode de MOV, que ya de por sí os puedo decir que es A0.

Luego si el código en hexadecimal que teníamos en un principio:

00 40 E0 E3

lo tendremos que modificar a

00 40 A0 E3

Lo que nos queda por saber es que offset es. Es decir, en que lugar del archivo editado hexadecimalmente tendremos que posicionarnos. Pero este dato tambien nos lo dice el programita. Tan solo hay que seleccionar la instrucción. Abajo a la izquierda en mi caso, saldrá la posición de memoria. Hay que tener claro que la posición que nos daba anteriormente, 33244E98 es relativa al archivo desensamblado, no relativa al archivo editado directamente. Hay que tener esto muy presente. La direción real de esta cadena hexadecimal nos la da el mismo programa como hemos dicho, aunque está un poco más escondida. Si miramos bien en esta captura lo veremos:


Abajo a la derecha resaltado en amarillo lo tenemos. El offset de la izquierda es el real dentro del archivo, mientras el de la derecha es el relativo al programa. Para que este sea correcto debe de estar seleccionada la instrucción MVN a modificar. Luego el offset que debemos de apuntar es:

6E98

En realidad este es el inicio de la secuencia completa hexadecimal 00 40 E0 E3. Es decir, la posición 6E98 sería para el valor 00, 6E99 para el valor 40, 6E9A para E0 y para acabar 6E9B para el valor E3. Luego si queremos ser completamente exactos, el offset sería

0x00006E9A

Todo lo que hemos visto tan solo ha sido para:

1º. Encontrar el offset, el punto preciso donde se decidirá si la firma es válida o no lo es. Este punto en nuestro ejemplo es el offset 0x00006E98.

2º. Saber el valor a modificar en dicho punto. En nuestro caso el valor almacenado en el original es E0, el valor que tomará su lugar será A0.


Con estos datos podemos cerrar ya IDA y abrir el archivo original MobileInstallation con cualquier editor Hexadecimal. Yo he usado WinHex, pero cualquier otro es igual de válido. En el editor hexadecimal tan solo tenemos que posicionarnos en la posición apuntada por el offset, localizar el valor y modificarlo por el nuevo:


Ya solo queda guardar el archivo resultante y habremos modificado correctamente el archivo. Solo queda probarlo... ¿o no? Queda firmarlo.

Al realizar las modificaciones que hemos llevado a cabo, hemos logrado que este archivo no pueda ser leído por nuestro dispositivo, dado que el Hash de el archivo original y el nuevo es completamente diferente, y la firma de Apple nos lo rechazaría. Por eso es necesario realizar un último paso de firmado.

Esto lo llevaremos a cabo dentro del mismo dispositivo. Lo primero será tener el programa para firmar. Este lo podemos obtener desde el mismo Cydia o lo podemos descargar directamente desde:

AQUI

Este archivo lo copiamos por ejemplo dentro de nuestro dispositivo en /bin y evidentemente le asignamos permisos 0755
copiarlo en dicha carpeta es para evitar tener que desplazarnos a la carpeta que sea para invocarla.

Para acabar copiaremos el mismo MobileInstallation a nuestro dispositivo, sustituyendo el original. Evidentemente antes de hacer esto guardamos una copia de seguridad del otro. Una vez copiado a su carpeta de sistema tambien debemos de modificar los permisos a 0755.

Ya solo queda ejecutar esta instrucción por SSH para realizar el firmado:

ldid -s [archivo]

es decir, en nuestro caso:

ldid -s /System/Library/PrivateFrameworks/MobileInstallation.framework/MobileInstallation

Tras ejecutar esto por SSH o por terminal de nuestro dispositivo, se realizará el firmado de la aplicación modificada y podrá ser perfectamente ejecutada por nusetro iPod Touch o nuestro iPhone.

Reiniciaremos y listo. Tendremos un MobileInstallation completmaente funciona, actualizado para la versión 2.0.2 o la versión que sea y todo por nosotros mismos, que es lo que tiene más merito de todo.


Otro día, más.

Un saludo.

martes, 2 de septiembre de 2008

QuickPwn GUI 1.0 para MAC

La verdad es que salió hace unos días, pero entre una cosa y otra no me ha dado tiempo a ponerlo. Pues eso... despues de mucho tiempo y haciendo incapié en lo comentado con anterioridad sobre el soporte Windows/MAC.

Para descargar:

AQUI

poco más hay que citar sobre dicha herramienta.

lunes, 1 de septiembre de 2008

WinPwn 2.5

Cmw ya anunció que estaba terminando de prepararlo y así ha sido. Desde hace unos 3 días ya está disponible para descargarlo:

AQUI

Esta versión es radicalmente diferente (estéticamente) a su antecesora. Cmw a cambiado una interfaz GUI a un paso a paso, supongo que más simple para la persona de a pié, ya que no incurre en tecnicismos ni palabrería rara, tan solo lo mínimo necesario que debe de saber cualquier persona que quiera realizar JB.

Así mismo, el trabajo realizado por Cmw para windows (recordemos que Winpwn es tan solo para Windows, no para MAC) paradógicamente es una solución mucho más completa que la creada inicialmente para MAC. Recordemos que el Dev-Team siempre comenzó sus estudios y lanzamientos con MAC, de echo Pwnage es digamos la utilidad principal. De Pwnage, una utilidad exclusiva para MAC salió Winpwn. Más adelante, ya QuickPwn salio originalmente para MAC, pero en esta ocasión salió casi al mismo tiempo (minutos) su versión para Windows, dado que los programadores ya tenían portado todo el código. Evidentemente hay muchos más soporte, por asi decirlo, para Windows que para MAC, y una versión GUI de QuickPwn para Windows fue inmediata también.

Ahora mismo, tanto para MAC como para Windows están todas las utilidades disponibles, y en ambas plataformas funcionan perfectamente y con las mismas opciones. Lo único que sucede es que aunque las herramientas nativamente salen para MAC, están disponibles en su versión "sencilla" al mismo tiempo en el que salen para MAC en linea de comandos. Y una interfaz para MAC está tardando mucho más.

En cualquier caso, esta versión para Windows integra tanto la filosofía Pwnage como la filosofía Quickpwn, con lo que será posible desde crear la imagen personalizada ó si se prefiere optar por el JB directo.

En el paso a paso yo voy a hacer un ejemplo de imagen prediseñada para un iPhone GSM (no 3G). Evidentemente lo primero es desinstalar cualquier versión previa e instalar la nueva, pueso el enlace un poco más arriba. Después ejecutar...

Lo primero será seleccionar el tipo de modo que deseamos usar, si "Custom" o "Quick". Custom creará una imagen prediseñada que deberemos de introducir en un iPod/iPhone previamente con una firmware prediseñada o después de hacer el Pwned. Por otro lado el modo QuickPwn realizará el JB directamente en el dispositivo, evidentemente partiendo de una RESTAURACIÓN limpia. Tambien marcamos la opción "Expert", para poder tener algo más de control. Y a continuación el modelo que queremos hacer JB, en nuestro caso esta vez un iPhone:




Lo siguiente será seleccionar la firmware a hacer JB, evidentemnte, sea la opción de Quick o Custom, será necesario tener previamente descargada dicha versión en el HDD:




A continuación, sea iPod o iPhone nos harán una serie de preguntas a las que iremos contestando de manera simple. O sí o no. Dependiendo de iPod o Iphone nos preguntarán algunas cosas u otras. En nuestro caso, nos preguntarán cosas como: Si deseamos liberarlo (en caso de usar otro operador al contratado) "Do you want Unlock the iPhone?"


El resto de preguntas son para el iPhone:

"Do you want delete BootNeuter?" BootNeuter es una utilidad para actualizar o desactualizar el bootloader, activar el iphone o neutralizar el baseband. Esta opción elimina la aplicación BootNeuter que se instala por defecto, solo útil sí y solo sí sabemos exactamente que estamos haciendo, luego si no se conoce que hace BootNeuter, darle a Eliminar. Y si ya lo hemos usado con anterioridad, tampoco nos hace falta, así que podemos también en este caso acaptar dicha pantalla.

"Do you want activate the iPhone?" No se debe de confundir activar con liberar. Liberar permite su uso con cualquier operador de telefonía móvil. Activar permite usar el iPhone como iPod incluso cuando no hay SIM insertada. Esta opción la marcaremos.

"Do you want to install YouTube Activation?" Otra opción necesaria para los usuarios de iPhone que no activan el iPhone a través de iTunes por usar otros operadores y desean usar la aplicación Youtube. La marco también

"Do you want to install Cydia?" Si queremos instalar Cydia. La marco

"Do you want to install Installer 4?" Si queremos instalar Installer. No la marco, no quiero Installer.

"Do you want to resize the root partition?" Si queremos modificar el tamaño por defecto de la partición del OS. Esto es un poco a gusto de cada cual. Yo normalmente la dejo en 300-500MB, es decir, a veces le cambio el tamaño y a veces no. Cada cual que decida. Recordar que esto afecta dado que el dispositivo tiene dos particiones diferente, una usada solo para el OS y algunas aplicaciones y otra para los datos. Incrementar el tamaño en la particion del OS nos disminuirá el espacio disponible para datos, pero aumentará el tamaño para otras tareas. En la versión 2.0.2, el valor por defecto es 500MB, en las pre 2.0 era de 300MB. 500 está bien para la mayoría de los casos. Este valor lo modificaremos después.

"Do you want to wipe data (restore will take longer)?" Nos pregunta si deseamos eliminar todo rastro de archivos o información antigua, es recomendable pero tomará más tiempo a la hora de restaurar el dispositivo. Personalmente, la marco, aunque no es necesaria.

"Do you want to use custom boot/restore logos?" Nos pregunta si deseamos o no usar logos personalizados. La marco en mi caso, siempre pongo mss propios logos.

A partir de aquí tan solo nos preguntará aquellos ultimos datos necesarios, según hayamos respondido sí o no a algunas preguntas. Como dijimos que no cambiaríamos el tamaño de la partición no nos lo preguntará (aunque pondré la imagen para que se vea como saldría en caso de haber contestado que sí). Tambien nos preguntará por los logos y en caso de no tener la firmware en el directorio donde iTunes las descarga nos preguntará si la deseamos seleccionar manualmente:



Son las imágenes que quería mi hermano. Ahora bien, si nos damos cuenta, en medio de la imagen, en la parte de abajo hay un icono que reza "Browse", es decir, explorar. Si está en este modo seleccionaremos las imágenes desde nuestro HDD, por el contrario si le damos a dicho icono, "online" accederemos a algunos logos ya creados por otras personas. En mi caso solo uso lo propio, con lo que...




Y dado que mi firmware no está en la carpeta por defecto de iTunes, le doy a aceptar y la busco en mi HDD manualmente. En cuanto se acepte, se le calculará un hash para saber si es correcta la firmware seleccionada. Esto tarda unos escasos segundos.

Adicionalmente es posible que nos pregunte por dos archivos: "bl-39.bin" y "bl-46.bin"


Ahora toca la explicación. Para usar BootNeuter es necesario los baseband 3.9 y 4.6. Pero sería ilegal distribuir estos archivos en la misma suite de Winpwn. Si hemos optado por instalar BootNeuter o el modo expert, necesitaremos antes obtener estos archivos. Siento igualmente no poder daros enlaces a ellos, dado que sería ilegal. Luego cada cual que se saque las castañas del fuego. Lo que si puedo deciros es que si se opta por el método no expert y no se instala Bootneuter ó mejor aun, si no se marca la opciomn liberar, podemos instalar posteriormente BootNeuter desde cydia, (ya que podemos marcar no liberar pero si activar) y este Bootneuter instalado de Cydia SI tiene ambos archivos.

En cuanto acabemos este paso, la creación de la imagen personalizada se llevará a cabo. Dado que este método implica partir de una 2.0.2 limpia, despues de crear la imagen personalizada, hay que parchear el iPhone o el iPod para poder meter a posteriori la imagen a través de iTunes. En la versión anterior lo que se hacía era parchear iTunes. En esta de nuevo el parcheo se le hace al iPhone o al iPod in Situ. Lo conectamos y continuamos las instrucciones. Este paso no es necesario si ya tenemos instalada una firmware personalizada. Si no la tenemos, tendremos que seguir las instrucciones en pantalla, lo primero conectarlo al cable apagar el dispositivo y ponerlo en DFU. En cuanto esté en DFU el proceso comenzará y acabará

Una vez todo acabado, ya podremos restaurar desde iTunes el dispositivo sin problema alguno con "shift+Clic derecho" sobre restaurar.

Poco más se puede decir.

El proceso QuickPwn es muy similar.

Un saludo, y espero que quede todo claro
 
Creative Commons License
Esta obra está bajo una licencia de Creative Commons.