[CycloWiz V3.0b] Firmware source code

un amigo de un amigo me ha pasado esto para que lo postee aqui.

A ver si alguien le saca provecho, confirma que funciona y lo porta a algun pic si se puede o que se yo.


Miguel Tarascó Acuña - Tarako@gmail.com - 2007


CycloWiz Firmware Dumped from f10.exe
---------------------------------------


Zip
| Readme.txt
|
+---asm
| CycloWizLog_V3.0B_D2B_PAL.asm
|
\---bin
CycloWizLog_V3.0B_D2B_JAP.bin
CycloWizLog_V3.0B_D2B_PAL.bin
CycloWizLog_V3.0B_D2B_USA.bin
CycloWizLog_V3.0B_DMS-D1A_JAP.bin
CycloWizLog_V3.0B_DMS-D1A_PAL.bin
CycloWizLog_V3.0B_DMS-D1A_USA.bin


+------------------------------------------------------------------------+
| Los firmwares estan extraidos del ejecutable pero no han sido probados |
+------------------------------------------------------------------------+


Si estas aburrido leete esto.

La aplicacion f10.exe the ofrece la posibilidad de reflashear un cyclowiz cuando se ha "roto" por una
mala actualizacion o similares, y como recientemente ha publicado ALEJO3R7 [1], la aplicacion es capaz
de programar un chip sx28 vacio creando un cyclowiz totalmente funcional, por lo que sabiendo esto rapidamente
se te viene a la cabeza "Si esto es posible, el firmware del cyclowiz ha de esta entero en el exe".


El primero intento logico de intentar obtener este firmware es por medio de un sniffer de RS232 pero debido
a que para programar un chip los datos se han de enviar de determinada manera por el puerto paralelo enviando
datos a mayores para habilitar estados internos del pic etc, esta no es la mejor manera de obtenerlo.

Entonces vamos a desensamblar el f10.exe y echar un vistazo, rapidamete puedes obtener los offsets de los
6 diferentes firmwares que supuestamente contiene (o que puede usar) mas un codigo comun que siempre se
manda antes de los firmwares especificos.

Una opcion es copiar y pegar directamente estos bloques del exe a fichero pero puede que el firm este cifrado
de algun modo por lo que es posible que lo que obtengamos no nos valga para nada entonces vuelve a ser una mala
opcion.


Ni sniffer de RS232 (hooks en las fuciones de escritura Out32() de la inpout32.dll tampoco valen) y tampoco
"copy&paste" de los bloques, entonces... Vamos a hookear funciones antes de las llamadas a Out32.dll, donde
cada byte del firm es enviado y justo antes de la escritura al puerto LPT

Se prepara una DLL para inyectarsela al f10.exe y en el DllMain() se hookea la funcion de escritura parcheando
el CALL [2] (WriteProcessMemory() escribiendo en 00401302 esto E8 79FD8A00 para obtener CALL DLLHookM.00CB1080) y en
0x00CB1080 [3] esta nuestra funcion con un fwrite() volcando los valores a fichero.

Ademas hace falta falsear los valores devuelto por la funcion encargada de detectar que la Wii esta conectada al
puerto [4] (algo trivial, si se devuelve un 1 se cree que esta conectado a una DMS y si es un 2 a una D2B)


Con estas cosas ejecutamos f10.exe y le inyectamos la DLL para parchear las llamadas de las funciones, seleccionas
tu firmware favorito y dale a continuar hasta que te diga que el chip esta programado y voila, tendras el firmware
en un fichero :)

Es gracioso ver en el codigo un par de Sleep() para hacer creer que esta haciendo algo cuando en realidad simplemente
esta esperando, al igual que los mensajes de borrado del chip y similares cuando en realidad no hace nada de nada



[1] http://www.elotrolado.net/hilo_-TUTORIA ... os-_824270)


[2]
.text:004012FF push edx
.text:00401300 push eax
.text:00401301 push esi
.text:00401302 call MuchosWriteLPT // CALL DLLHookM.00CB1080


[3]
//---------------------------------------------------------------------------
// 0x00CB1080
#define Ruta "CycloWizLog.txt"

int __cdecl MiMuchosWriteLPT(int a1,int a2,byte CharDelFirm) {
FILE *f=fopen(Ruta,"a+b");
fwrite(&CharDelFirm,sizeof(byte),1,f);
fclose(f);
return(1);
}


[4]
.text:0040139B cmp al, 0C9h //
.text:0040139D setz cl // XOR EAX,EAX
.text:004013A0 mov eax, ecx // ADD EAX,2
.text:004013A2 pop ecx //
.text:004013A3 retn


Los podeis descargar de AQUI

Un saludo.
Esto es lo que a mi me gusta ^^. No los ficheros en sí (que se agradece), sino el cómo se ha obtenido :D. Dale las gracias a tu amigo de mi parte ;).
Glicer muchas gracias por la información, y dale las gracias a tu amigo.

Creo que tengo algun Sx28 en casa, asi que intentaré programarlos y hacer la prueba.

Estos del cyclowiz... como se lo curran eh? XDDDDDD
Ostia que guapo, como se lo ha currado el socio!

Tengo algunos magic y sx28 por aqui, despues abro mi wii y lo pruebo, aunque a saber donde estara el fluffy. Veo interesante el portarlo a un pic, pero en ese caso seria imposible la programacion en la propia consola a no ser que se cambie todo el sistema. El interruptor activaria de igual modo VPP en el pic, pero despues se programa con dos cables y no uno. Tambien el portarlo a un SX48, pero habria que modificar despues cada update puesto que este nos grabaria el codigo para SX28.

No obstante no entiendo el que haya diferentes firmwares dumpeados.
Me explico, firmare 3.0b solo hay uno. Cuando seleccionamos un modelo/region en el f10.exe es por el parcheo que se le aplica a la consola para hacerla cargar los datos del programa que graba el cyclo, al igual que un chip detecta si tenemos DMS/D2A o D2B a la hora de atacar al controlador cuando cargamos un disco copiado, pero ese chip lo instalemos en la consola que lo instalemos siempre va a funcionar puesto que hay un unico codigo siempre (hasta la version 3.5, pero eso ya no nos interesa, lo interesante es partir de la version 3.0b)

No tengo aqui mas que notepad, en casa ya le echare un vistazo detenidamente.

Ahora mismo yo programo los chips usando mi propia consola, sin PC ni nada, es extremadamente sencillo, hace falta sacar unos cables y unos interruptores. En cuanto pueda os pongo fotos de que va la cosa para que veais lo simple que es.
ALEJO3R7 escribió:Ostia que guapo, como se lo ha currado el socio!

Tengo algunos magic y sx28 por aqui, despues abro mi wii y lo pruebo, aunque a saber donde estara el fluffy. Veo interesante el portarlo a un pic, pero en ese caso seria imposible la programacion en la propia consola a no ser que se cambie todo el sistema. El interruptor activaria de igual modo VPP en el pic, pero despues se programa con dos cables y no uno. Tambien el portarlo a un SX48, pero habria que modificar despues cada update puesto que este nos grabaria el codigo para SX28.

No obstante no entiendo el que haya diferentes firmwares dumpeados.
Me explico, firmare 3.0b solo hay uno. Cuando seleccionamos un modelo/region en el f10.exe es por el parcheo que se le aplica a la consola para hacerla cargar los datos del programa que graba el cyclo, al igual que un chip detecta si tenemos DMS/D2A o D2B a la hora de atacar al controlador cuando cargamos un disco copiado, pero ese chip lo instalemos en la consola que lo instalemos siempre va a funcionar puesto que hay un unico codigo siempre (hasta la version 3.5, pero eso ya no nos interesa, lo interesante es partir de la version 3.0b)

No tengo aqui mas que notepad, en casa ya le echare un vistazo detenidamente.

Ahora mismo yo programo los chips usando mi propia consola, sin PC ni nada, es extremadamente sencillo, hace falta sacar unos cables y unos interruptores. En cuanto pueda os pongo fotos de que va la cosa para que veais lo simple que es.

Estaría muy interesante tener ese código portado a un PIC ^^. Se agradecería.
pacoupo escribió:me uno a la petición


+1

Interesantísimo lo que han hecho, tanto el "dump" como el WiiMagic xDD

¡Felicidades! y gracias

Salu2;)
Lo primero felicitar al amigo del amigo de Glicer por el trabajo tan cojonudo que ha realizado, como dice ArangeL, no por los ficheros que por cierto no son validos, sino que ha explicado con pelos y señales como lo realizo.

Me explico por lo de los ficheros, lo que ha realizado es un dump de todo lo que se enviaria por el puerto, pero tambian estan incluidas las ordenes de programacion que se le envian al SX28 junto con los datos del propio firmware.

El asm que se incluye esta mal, lo primero que indica es que el chip es un sx52 cuando el ciclo usa un sx28, eso es lo de menos, el problema es que echandole un vistazo al codigo, no tiene ni pies ni cabeza, y dudo mucho que llegase a funcionar.

El firmware del ciclo si se encuentra dentro de los ficheros bin que incluye, pero hay que sacarlo todabia.

Un Saludo
No entiendo nada... la ultima version no era la 3.6beta?
8 respuestas