Desensamblando IOS

Estoy desensamblando IOS9 para practicar y aprender pero me encuentro con muchas dificultades asi que me preguntaba si seria posible que los experimentados en estos menesteres nos ayudasen explicando un poquito por encima como hacerlo sin morir en el intento??.

Un saludo.
Joder menuda palabreja la del título. La he tenido que buscar en la rae y es así como se ha de utilizar XD

desensamblar
No sé mucho sobre desensamblar (gracias CyBeR PeReZ ;) ), pero creo que es mejor utilizar para las pruebas los IOS30 en adelante, ya que no son monolíticos, sino que están divididos en módulos (en ELF) fácilmente identificables.
En el blog de sven tienes un ejemplo de como se parchea el límite de lectura de DVD en un IOS de los modernillos, que puede serte útil :)
http://svenpeter.blogspot.com/2008/07/d ... hacks.html
gracias iacaca lo que me interesa es aprender a desensamblar el codigo y poder estudiarlo para poder posteriormente aplicar parches por mi mismo.

@CyBeR PeReZ: pero digo yo que desensamblando es una conjugacion del verbo desensamblar, no?? jajajaj
Acabo de localizar una guía de ensamblador ARM... parece antigua, pero puede que te sirva ;)
http://www.heyrick.co.uk/assembler/
Jbom escribió:Estoy desensamblando IOS9 para practicar y aprender pero me encuentro con muchas dificultades asi que me preguntaba si seria posible que los experimentados en estos menesteres nos ayudasen explicando un poquito por encima como hacerlo sin morir en el intento??.

Un saludo.


Lo primero como comentaron es usar un ios a partir del 30, este tiene , por supuesto, que estar descifrado y extraido de su wad para comenzar. El ios una vez extraido tiene 2 ficheros, usa el mas gordo (el segundo). Este fichero contiene 2 "elfs", para extraerlos debes localizar el inicio de la cabezera del ELF ($7b$4C$4f$46) (0x7b4c4f46), puedes usar un editor hex para esto (esta justo detrás de ese RSA de 4096 bits que esta al comienzo y que servirá casi seguro para que si cambias algo te pete la wii XD ) Luego copia todo desde el inicio de la cabecera del elf hasta la siguiente cabecera del segundo elf. Para empezar usa el primer ELF, que es el que más jugo tiene (aquí están los comandos para el DVD entre otras cosas).

Ahora necesitarás un depurador que acepte código para arm (por ejemplo el Ida o Radare) y lo siguiente es tener una ligera idea de que significa cada "mnemotécnico" (juas, toma palabro, que quiere decir: cada comando en ensamblador) y otra poca idea de como funciona el lenguaje ensamblador, y para empezar ya tienes.

Salu2.
Pifia escribió:Ahora necesitarás un depurador que acepte código para ppc (por ejemplo el Ida o Radare) y lo siguiente es tener una ligera idea de que significa cada "mnemotécnico" (juas, toma palabro, que quiere decir: cada comando en ensamblador) y otra poca idea de como funciona el lenguaje ensamblador, y para empezar ya tienes.

Salu2.


Casi, el IOS no es PPC, sino que es ARM. El Starlet es una CPU ARM9 creo...
Bushing utiliza el IDA Pro, asi que es de suponer que admite ARM ;)
iacaca escribió:
Pifia escribió:Ahora necesitarás un depurador que acepte código para ppc (por ejemplo el Ida o Radare) y lo siguiente es tener una ligera idea de que significa cada "mnemotécnico" (juas, toma palabro, que quiere decir: cada comando en ensamblador) y otra poca idea de como funciona el lenguaje ensamblador, y para empezar ya tienes.

Salu2.


Casi, el IOS no es PPC, sino que es ARM. El Starlet es una CPU ARM9 creo...
Bushing utiliza el IDA Pro, asi que es de suponer que admite ARM ;)


Carai, es verdad, se me fue la pinza... (yo uso ida pro) [ok]
@Pifia: Sobre asm se algo pero para micros ST19 nunca he tocado de el de ARM. El ida algo he tocado tambien y el IOS 9 lo tengo casi desensamblado pero me encuentro con varias dudas que no se si se podran pegar trozos muy pequeños del IOS9 para exponer las dudas.

EDIT: Pifia podrias exponer como desensamblar asi por encima un ejemplo cualquiera pequeño y las diferentes secciones que nos encontramos, por que yo en el IOS9 me encuentro con unas tablas de offset que no se par que son o si lo he hecho bien.

Que algun admin me aclare si es legal pegar porciones del IOS9 para exponer las dudas.
Trollazo está baneado por "Troll"
El desensamblador que desensable la IOS de la Wii buen desensablandor sera. [sonrisa]
Jbom escribió:@Pifia: Sobre asm se algo pero para micros ST19 nunca he tocado de el de ARM. El ida algo he tocado tambien y el IOS 9 lo tengo casi desensamblado pero me encuentro con varias dudas que no se si se podran pegar trozos muy pequeños del IOS9 para exponer las dudas.

EDIT: Pifia podrias exponer como desensamblar asi por encima un ejemplo cualquiera pequeño y las diferentes secciones que nos encontramos, por que yo en el IOS9 me encuentro con unas tablas de offset que no se par que son o si lo he hecho bien.

Que algun admin me aclare si es legal pegar porciones del IOS9 para exponer las dudas.


Pufff , yo toy como tú o peor, toy empezando también...
Lo guapo sería tener una wii de pruebas pa ir metiéndole caña hasta que explotara, esto de ir desensamblando de esta manera es como hacerselo con un agujero en una pared de ladrillo... [qmparto]
Trollazo escribió:El desensamblador que desensable la IOS de la Wii buen desensablandor sera. [sonrisa]



LOL LOL [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto]
Pifia escribió:Pufff , yo toy como tú o peor, toy empezando también...
Lo guapo sería tener una wii de pruebas pa ir metiéndole caña hasta que explotara, esto de ir desensamblando de esta manera es como hacerselo con un agujero en una pared de ladrillo... [qmparto]


Podremos investigar sin miedo dentro de no mucho tiempo (suponemos, claro) cuando marcan & company (el Team Kazorla, digo... Twiizers [qmparto] ) publiquen su sistema antibrickeos. Con este sistema, aunque os cargueis el IOS principal o reventeis el sistema, podreis recuperar el estado anterior al desastre :cool:
O eso o lo que se utiliza actualmente: Infectus y Amoxiflash, aunque hace falta un chip Infectus, y soldarlo a la NAND.
Cual es el mejor desempaquetador wad?? por que el que tengo yo en el IOS30 me saca 8 archivos... :-?
Jbom escribió:Cual es el mejor desempaquetador wad?? por que el que tengo yo en el IOS30 me saca 8 archivos... :-?


Tal vez sean 8 archivos para ese ios, yo es que no se que ios desempaqueté ... [360º]

Para extraer puedes usar mi wadtool:

hilo_wadtool-1-0-beta_1009969?hilit=wadtool#p1711833516

salu2.
IOS30+ tienen varios archivos. Uno es un ID (de 64 bytes, creo) sin importancia. Uno es el ejecutable principal, que es un cargador de ELFs en formato binario seguido del ELF que contiene el kernel, ES, y FS. El resto son drivers aparte.

Para saber qué es cada archivo, lo mejor es sacar todas las cadenas de texto y buscar IOSVersion.

Ejemplo bajo linux / unix:
$ for i in 0* ; do echo "$i": ; strings $i | grep IOSVersion ; done
00000000:
00000001:
$IOSVersion: DIP: 06/08/07 18:17:09 64M $
00000002:
$IOSVersion: OH0: 07/12/07 14:30:33 64M $
00000003:
$IOSVersion: OH1: 06/08/07 18:17:21 64M $
00000004:
$IOSVersion: SDI: 06/08/07 18:17:16 64M $
00000005:
$IOSVersion:  SO: 06/28/07 02:37:15 64M Release/apricot-win/HEAD $
00000006:
$IOSVersion:  KD: 08/30/07 04:58:02 64M Release/apricot-win/SDK_FW_30_4_13_branch $
00000007:
$IOSVersion:  WD: 08/07/07 09:43:29 64M Release/apricot-win/SDK_FW_30_4_13_branch $
00000008:
$IOSVersion: WL: 06/28/07 02:37:25 64M Ver.4.30.44.0/Release $
00000009:
$IOSVersion: NCD: 06/28/07 02:37:17 64M Release/apricot-win/HEAD $
0000000A:
$IOSVersion: ETH: 08/09/07 18:09:02 64M Release/apricot-win/SDK_FW_30_4_13_branch $
0000000B:
$IOSVersion: STM: 06/28/07 02:37:18 64M Release/apricot-win/HEAD $
0000000C:
$IOSVersion: KBD: 08/27/07 11:20:18 64M $
0000000D:
$IOSVersion: SSL: 06/21/07 14:52:11 64M Release/srd/HEAD $
0000000E:
{$IOSVersion:  FFS: 06/08/07 18:10:10 64M $
$IOSVersion:  ES: 07/10/07 18:11:26 64M $
$IOSVersion: IOSP: 06/25/07 14:17:16 64M $


Recomiendo usar IOS30 o superior para desensamblar. IDA tarda mucho menos en autoanalizar y luego es más fácil concentrarse en cierto driver en lugar de tener todo mezclado.
marcansoft escribió:IOS30+ tienen varios archivos. Uno es un ID (de 64 bytes, creo) sin importancia. Uno es el ejecutable principal, que es un cargador de ELFs en formato binario seguido del ELF que contiene el kernel, ES, y FS. El resto son drivers

Recomiendo usar IOS30 o superior para desensamblar. IDA tarda mucho menos en autoanalizar y luego es más fácil concentrarse en cierto driver en lugar de tener todo mezclado.


Vaya horas pa tar aquí ... [sonrisa]
Pijadas aparte, gracias por la info ;)

Salu2.
Con el WadTools de Pifia obtenemos del IOS


IOS30-64-v1040.000 (64 bytes)   --> Cabecera DLF = (ID sin importancia que comenta marcan??)
IOS30-64-v1040.001 (10,4 Kb)   --> IOSVersion: DIP: 06/08/07 18:17:09 64M = (Creo que es el driver del DVD)??
IOS30-64-v1040.002 (25,5 Kb)   --> IOSVersion: OH0: 07/12/07 14:30:33 64M = (Bus usb externo)
IOS30-64-v1040.003 (14,9 Kb)   --> IOSVersion: OH1: 06/08/07 18:17:21 64M = (Bus usb interno - Bluetooth)
IOS30-64-v1040.004 (10,4 Kb)   --> IOSVersion: SDI: 06/08/07 18:17:16 64M = (lector tarjetas SD)
IOS30-64-v1040.005 (167 Kb)   --> IOSVersion:  SO: 06/28/07 02:37:15 64M Release/apricot-win/HEAD = ???
IOS30-64-v1040.006 (352 Kb)   --> IOSVersion:  KD: 08/30/07 04:58:02 64M Release/apricot-win/SDK_FW_30_4_13_branch = ???
IOS30-64-v1040.007 (61 Kb)   --> IOSVersion:  WD: 08/07/07 09:43:29 64M Release/apricot-win/SDK_FW_30_4_13_branch = ???
IOS30-64-v1040.008 (439 Kb)   --> IOSVersion: WL: 06/28/07 02:37:25 64M Ver.4.30.44.0/Release   = (adptador Wireless)
IOS30-64-v1040.009 (41,5 Kb)   --> IOSVersion: NCD: 06/28/07 02:37:17 64M Release/apricot-win/HEAD = ???
IOS30-64-v1040.010 (29.8 Kb)   --> IOSVersion: ETH: 08/09/07 18:09:02 64M Release/apricot-win/SDK_FW_30_4_13_branch = ???
IOS30-64-v1040.011 (18,6 Kb)   --> IOSVersion: STM: 06/28/07 02:37:18 64M Release/apricot-win/HEAD = ???
IOS30-64-v1040.012 (27,7 Kb)   --> IOSVersion: KBD: 08/27/07 11:20:18 64M = (Keyboard driver)
IOS30-64-v1040.013 (348 Kb)   --> IOSVersion: SSL: 06/21/07 14:52:11 64M Release/srd/HEAD = (SSL)
IOS30-64-v1040.014 (154 Kb)   --> IOSVersion:  FS: 06/08/07 18:10:10 64M = (FileSystem Driver)


He intentado indentificar cada archivo pero seguro que he metido la pata. Esos son todos los que me saca de un IOS30

Este me aparece como FS no como FFS:
$IOSVersion: FFS: 06/08/07 18:10:10 64M $

Y estos no me salen:
$IOSVersion: ES: 07/10/07 18:11:26 64M $
$IOSVersion: IOSP: 06/25/07 14:17:16 64M $


PD.: Pifia acabo de comprobar que tu wadtools no saca los archivos bien, no los desensambla el Ida
Jbom escribió:PD.: Pifia acabo de comprobar que tu wadtools no saca los archivos bien, no los desensambla el Ida


oks, voy a revisarlo... gracias por avisar..

Ya está arreglado. [oki]
Para descargarlo el enlace esta en el mismo hilo que puse más arriba.

Salu2.
Muy interesante!

Yo acabo de desembarcar en esto de la scene de wii... (parece que el ambiente esta movidito estos ultimos dias)

Me asalta una duda mientras leo este post, de donde sacais los IOS? Estan disponibles publicamente? Que version recomendais que comience a intentar desensamblar (hace anyos que no veo nada de desensamblador!)

Tengo curiosidad por ver como funciona nuestra blanquita. A ver si entre todos sacamos algo en claro.

Salu2
Intento seguir vuestro ritmo pero me quede en el paso del "sudo apt-get install khexedit" XDD No, en serio, voy comprendiendo de que va la cosa pero me tendría que poner...
danitxu escribió:Muy interesante!

Yo acabo de desembarcar en esto de la scene de wii... (parece que el ambiente esta movidito estos ultimos dias)

Me asalta una duda mientras leo este post, de donde sacais los IOS? Estan disponibles publicamente? Que version recomendais que comience a intentar desensamblar (hace anyos que no veo nada de desensamblador!)

Tengo curiosidad por ver como funciona nuestra blanquita. A ver si entre todos sacamos algo en claro.

Salu2


No se si dumpeando la nand se pueden conseguir, pero puedes hacer un dump de algun juego con actualización =D
danitxu escribió:Muy interesante!

Yo acabo de desembarcar en esto de la scene de wii... (parece que el ambiente esta movidito estos ultimos dias)

Me asalta una duda mientras leo este post, de donde sacais los IOS? Estan disponibles publicamente? Que version recomendais que comience a intentar desensamblar (hace anyos que no veo nada de desensamblador!)

Tengo curiosidad por ver como funciona nuestra blanquita. A ver si entre todos sacamos algo en claro.

Salu2


xj.-
El IOS lo puedes sacar de cualquier juego que traiga un update (Metroid, Galaxy,...)
Con el trucha mismo se puede sacar
Ufff... veo que tengo que estudiar mucho! :-P

Supongo que con el Dumper de Nitro podre sacar los archivos del DVD y desde ahi tratar de extraer la IOS. Es esto correcto?
Lo del trucha, no tengo ni idea de como va... (Tenia entendido que era para firmar software) Con el tambien puedo extrar archivos de la imagen del DVD?

Muchas gracias por las respuetas.

Salu2
Perdona, se me ha ido la olla. En realidad con el Wiitools simplemente ya puedes sacar el IOS

wiki/Extracci%C3%B3n_de_archivos_con_WiiTools
Merci Harry, esta noche lo intentare cuando este en mi casa. A ver que saco en claro.
Respondo sobretodo para intentar evitar que estos hilos interesantes se vallan al fondo...
¿Que es lo que buscais exactamente? Yo tambien estoy empezando con los IOS y quiza pueda ayudar.
technik escribió:Respondo sobretodo para intentar evitar que estos hilos interesantes se vallan al fondo...
¿Que es lo que buscais exactamente? Yo tambien estoy empezando con los IOS y quiza pueda ayudar.


Nada en concreto realmente, simplemente ver un poco como funciona la wii por dentro. Es más mera curiosidad que otra cosa...

Después me gustaría meterme con la programación. Igual que ensamblador hace siglos que no hago C, pero bueno... con esto no creo que tenga tanto problema ^^
technik escribió:Respondo sobretodo para intentar evitar que estos hilos interesantes se vallan al fondo...
¿Que es lo que buscais exactamente? Yo tambien estoy empezando con los IOS y quiza pueda ayudar.


Buscar no buscamos nada, solo aprender, exponer las dudas que salgan al intentar destripar el ios y poder entenderlo para poder aplicar despues parches.

Tengo varias dudas de novato en este mundillo a ver si alguien me puede ayudar.

1.- Al desensamblar el driver para el dvd (IOSVersion: DIP: 06/08/07 18:17:09 64M) veo una zona de datos que viene marcada como "AREA LOAD, DATA, ALIGN=0" que va desde el offset 0x00000000~0x000000F0. No comprendo esta zona. estos datos van a ram?? por que salta de 0x000000F0 a 0x20200000??.

2.- Veo en los archivos que desensamblo cadenas de texto los cuales supongo que seran msg que manda el ios para el debug. esos msg se pueden ver de alguna manera (tipo homebrew)??

3.- No termino de comprender el System Menu. Se trata de una especie de GUI que comunica con el ios llamando a sus funciones y esperando sus respuestas?? de ser asi... se podria modificar el System menu para crear una ventana debug???

4.- En el desensamblado con el ida veo zonas negras en la barra que hay en la parte superior y las nombra como gap y que son como cortes en los offset en los que salta de uno a otro. que son esas zonas??

Seguro que alguna chorrada he preguntado asi que ruego me perdonen. XD


EDIT: Pongo que tengo un CF a ver si asi la gente postea?? [enfado1]
28 respuestas