Introduccion:
Este humilde tutorial es para poder parchar cualquier telefono que no se pueda parchar pero si flashear, por ejemplo el w200 original, me di cuenta de esto gracias al tutorial para portar parches complejos de karl05, y vamos a utilizar una pequeña porcion de su tutorial, asi que agradecimientos y reconocimientos desde el principio a el.
Ok, COMENCEMOS!!!
Necesitamos:
*Main de nuestro telefono (lo encontras en la zona de descarga)
*IDA PRO (Advanced dissasembler)
*IDC SCRIPTS: ApplyPatch.idc y UndoPatch.idc
En este caso vamos a parchar la main del w200 como ejemplo, ya que existen millones de parches gracias a la conversion del k310 y no se puede parchar. Pero se puede con cualquier telefono.
Parte extraida del Tutorial de karl05
Instalamos IDA PRO
Ejecutamos el IDA PRO (32-bit) -> New -> Se abre una ventana para seleccionar el tipo de archivo que van a abrir, seleccionen cualquiera, el IDA luego reconocerá el formato adecuado. Seleccionamos en tipo: "All files (*.*)", buscamos y abrimos el main, extension .mbn
También se puede hacer click con el boton derecho del mouse sobre el archivo main -> Abrir con -> The interactive dissasembler
Se abre la ventana "Load new file", en "processor type" pongan "AMR Processors: AMR710a" (esta al principio de la lista) le damos "Set" y luego "OK".
Se abre la ventana Disassembly memory organization. En "ROM start address": 0x44140000 (o la base que corresponda a tu modelo*), colocamos el mismo valor en "Loading address": 0x44140000.
*si no la sabes basta con ver el archivo .vkp de algun parche y casi siempre aparece
Esta direccion no siempre es la misma, creo que dependen del DB, pero no estoy seguro. Fijense que la direccion aparece sin el 0x que pusimos en la direccion en el IDA PRO, es porque el 0x le indica al programa que es hexadecimal.;W200 R4HA014
;Hyper_EQ_Preset_for_k310@w200_r4ha014
;(C) Lukitas
+44140000
6EA5BD: 0500000003 1405FE070A ;hyperBass
6EA5C2: 0E00000003 0E00000003 ;megabass
6EA5C7: 0000000600 0A06020D09 ;hyperVoice
6EA5CC: 0000000006 1200FC090B ;hyperTreble
En "ROM size" el offset del ultimo byte del firm. Normalmente aparece solo, en W200 R4HA014 es 0x13CBB20. Dado que muchos parches agregan bloques de código nuevo después de este valor, es necesario ampliar un poco la sección de firm que va a ser leída por el IDA (con unos 100000 bytes es suficiente). Por esta razón colocamos 0x14CBB20. Hacemos lo mismo en "Loading size": 0x14CBB20. Una vez modificados estos 4 valores le damos "OK" y esperamos a que se cargue en la database. Cuando nos diga "Generating list of Strings", le damos "Cancel" (ver imagen1)
Nose si sera necesaria esta parte, la verdad que no probe si funciona sin hacerlo, cuando sepa les aviso, por el momento,la hagamos:
Vamos a "Options" -> "General" en el cuadrito de la derecha "Number of opcode bytes" colocamos "4"
Cambiamos a la siguiente solapa: "Analysis". Click sobre "Processor specific analysis options" y habilitamos la opción: "Disable pointer referencing", le damos "OK". Click en "Reanalyze program" y le damos "OK".
Vamos a "Options" -> "Setup data types…" y deshabilitamos "1 byte" y "2 word" (solo queda activado "3 double word") le damos "OK".
Bueno, hasta aca usamos parte del tutorial de karl05, editado un poco por mi para lo que nos interesa puntualmente.
Ahora usaremos los scripts que bajamos anteriormente, los tenemos que cargar en el IDA, nos vamos a File, IDC file..., y abrimos el ApplyPatch.idc y se nos abre una ventana para seleccionar el parche que queramos aplicar, buscamos en archivo .vkp, abrir y luego a yes, habra veces que tendremos que apretar mas de una vez yes. Ok, el parche esta aplicado, para aplicar otro simplemente hacemos click en el acceso que se creo a los scripts en el de ApplyPatch.idc. (ver imagen2)
cargamos todos los parches que queramos. Listo!, la main parchada
Ahora lo que haremos sera ir a file--->produce file---->create EXE file..., le damos guardar y listo! (asegurence de guardar la main parchada en otro directorio o con un nombre diferente al de la main original por cualquier cosa, mas vale prevenir que
lamentar)
"File" -> "Close". En el cuadro que nos aparece le damos "Don't pack database" y "Don't save database", luego aceptamos.
Bueno ya tenemos nuestra main, ahora solo la cargamos con el setool2lite, xs++ o programa que usen como si fuera una main comun y corriente, nuestro telefono que no acepta parches, ya esta parchado!!!!!![]()
Marcadores