PDA

Ver la versión completa : [DISCUSION] Crear / Portar parches VKP complejos



Karl05
19/04/2008, 01:13:18
TUTORIAL PARA PORTAR PARCHES COMPLEJOS (ASSEMBLING BASICO)



por
--- !64! Karl05 !64! (http://www.topsony.com/forum_es/private.php?do=newpm&u=123902) ---




Este será el tema para Discutir sobre el tutorial:


Crear / Portar parches VKP complejos (http://www.topsony.com/forum_es/showthread.php?t=64277)


Expongan todas sus dudas aqui.




Saludos

Theadrian
19/04/2008, 01:40:39
:eek::eek::eek: la verdad solo lei el primer parrafo, apoco es tan complegisimo portar un patch?? nunca lo pense, creo que es mas facil crear el patch para el firmware corespondiente que portar uno de otro firmware!!

pues gracias man, muy completo tu tuto!!

saludos!;)

Mike006
19/04/2008, 01:47:14
Ya era hora de de que se tradusca ese tutorial... ja ja
@Karl05
Recien empiezo con esto de portar parches y no se si estoy en lo correcto en decir que:

Mientras mas variedades del mismo parche a portar tengamos es mas facil el proceso.
Algunos firmwares tienen cadenas similares a otros, y se puede optar por el que nos resulte mas "similar"

Un ejemplo podria ser el que esta en este tema:
Portando Parches... (http://www.topsony.com/forum_es/showthread.php?t=64181)(Parece como si hubieras contestado mi pregunta)
Alli se ve la similitud del parche del W810 R4EA031 con el Firmware a portar (W200 R4HA014)

Ademas no dijiste que los archivos ApplyPatch.idc y UndoPatch.idc Tienen que copiarlo en la carpeta idc dentro de la carpeta donde se instalo el IDA por defecto C:\Archivos de programa\IDA\idc)

ts005
19/04/2008, 01:52:15
Excelente Felicidades estare poniendolo en practica y te hago saber mis dudas, tambien estaria bueno un tuto mas avanzado para portar parches como el confidentiality

saludos

gtfly
19/04/2008, 02:12:20
muchas gracias por el tutorial con esto ya podre crear parches dificiles jaja.
oye saves si con este se puede crear un parche para cambiar el logo de operador?

Malfreds
19/04/2008, 02:25:51
muchas gracias por el tutorial con esto ya podre crear parches dificiles jaja.
oye saves si con este se puede crear un parche para cambiar el logo de operador?

Ayuda mucho si tienes experiencia en lenguajes ensambladores.
Para cambiar el logo (supongo que quieres escribir algo diferente), con un elf podrias.

itay
19/04/2008, 02:35:08
Seria bueno que subas un link con los programas necesarios
Aca les dejo un link para:
FASMARM:http://jokerxt.3dn.ru/files/armpc.rar
IDC scripts: http://jokerxt.3dn.ru/files/idc.rar
Smelter: http://avkiev.kiev.ua/Siemens/Smelter/Smelter.rar (agan un click derecho y selecciones guradar como)
IDA: 4shared.com - online file sharing and storage - download IDA PRO 5.0.0.879.rar (http://www.4shared.com/file/28118661/3668f237/IDA_PRO_500879.html?s=1)

Karl05
19/04/2008, 03:33:42
Seria bueno que subas un link con los programas necesariosYa estan los links en el tuto, gracias por la sugerencia.

ts016
19/04/2008, 03:44:28
Excelente aporte Karl05.Me solucionaste el problema de leer en ingles!ahora no tienen excusas para no aprender, eh?

miguel8e
19/04/2008, 04:25:35
Hola, vaya como que me leiste la mente! hoy me pase todo el dia viendo estos tutoriales para intentar aprender a portar, esta muy bueno el tutorial amigo, felicidades, lo voy a Adherir.

Ahora mi pregunta, porque me sale este error al querer abrir el Smelter.exe?

http://img260.imageshack.us/img260/6061/dibujoyh5.th.jpg (http://img260.imageshack.us/my.php?image=dibujoyh5.jpg)

Saludos

ts016
19/04/2008, 05:02:54
porque te falta el archivo comdlg32.ocx en la carpeta del smelter o en windows/system32. Aca lo dejo.

LeO_snm
19/04/2008, 09:16:06
Bueno, estoy intentando hacer esto pero tengo 1 problema y una duda, el problema es que cuando cargo el .raw en el smelter no se abre mostrandome las direcciones sino que me sale esto



Smelter : v9.64
OS : Microsoft Windows (2) 5.1.2600 Service Pack 2
Flash : C:\armpc\main_nuevo.raw
Tama?o : 840201 = 8,25048923492432M = 8651265
Firmware
Cargando base : 7BFDFF
Telefono
Manufacturer
Fecha ensamblaje
************************************************** ******************************
Cargando base
44140000


y cuando presiono la b para buscar la direccion no hace nada, simplemente se queda en la ventana para insertar la direccion, alguna solucion para esto?, gracias!

miguel8e
19/04/2008, 15:12:33
Bueno, estoy intentando hacer esto pero tengo 1 problema y una duda, el problema es que cuando cargo el .raw en el smelter no se abre mostrandome las direcciones sino que me sale esto



y cuando presiono la b para buscar la direccion no hace nada, simplemente se queda en la ventana para insertar la direccion, alguna solucion para esto?, gracias!
A mi tambien me paso eso, solo encontro este 002103482570????????0be0

pero otra direccion no.

Otra pregunta:

Cuando estamos en la parte de comparar las direcciones del FW original con el FW a portar, tenemos que sumarle la diferencia de los ultimos offsets a las direcciones del asm, asi cpmo lo dice esta parte:


El último de R6CA009 es 45651F84 (offset: 1511F84) y el de R6GA004 es 45664F24 (offset: 1524F24) lo que nos da una diferencia de +12FA0. Asi que sumamos este valor al “patch2” y obtenemos: 45665530.En mi w810 el ultimo es 45714984 (offset 1574984), entonces restando con el del z550 que es 45664F24, me da AFA60, eso se lo sumo a las direcciones del asm que son:


patch1 equ 0x454E416A
patch2 equ 0x45652490
dir1 equ 0x454DE6C8
dir2 equ 0x45604480
dir3 equ 0x453DFDE1
dir4 equ 0x455A12AD

Asi es que tengo que hacer?

Otra cosa, cuando debo comparar las direcciones con el IDA, deben decir lo mismo? digo, en las funciones? que pasa si no coincide alguna?

SAludos

Karl05
19/04/2008, 16:15:16
A mi tambien me paso eso, solo encontro este 002103482570????????0be0

pero otra direccion no.
Estos son los patrones a buscar:
patch1: 002103482570????????0be0
dir1: f1b581b000256846002405801ce0
dir2: 004b1847????????20200021024a (aparecen 2, pero el DCD de 45604484 es igual solo en 456172F8)
dir3 y dir4: 680349884201d10120704700207047 (aparecen muchas, lo siento, no me pregunten, stuCk ubico las direcciones apropiadas).
Cuando estamos en la parte de comparar las direcciones del FW original con el FW a portar, tenemos que sumarle la diferencia de los ultimos offsets a las direcciones del asm,
En mi w810 el ultimo es 45714984 (offset 1574984), entonces restando con el del z550 que es 45664F24, me da AFA60, eso se lo sumo a las direcciones del asm. Asi es que tengo que hacer?
Como dije en el tuto esto no es necesario, el nuevo codigo se puede ubicar en cualquier lugar libre, pero creo que esto es recomendable. ¿Por que? pues, porque de esta manera es menos problable que 2 parches se superpongan (cosa que ya me pasó). Si los parches que portamos del firm de origen no se superponian, tampoco lo haran en el destino si seguimos esa regla. Igualmente recomiendo realizar una copia del idb del firm de destino y aplicarle todos los parches que tengamos. Luego lo guardamos por ejemplo como "R6GA004_Parchado.raw". Cuando terminemos nuestro parche, lo aplicamos en esta idb y lo revizamos para ver si no hay conflictos antes de ponerlo en el telefono (de esa manera nos ahorramos pantallazos en blanco innecesarios;))


Otra cosa, cuando debo comparar las direcciones con el IDA, deben decir lo mismo? digo, en las funciones? que pasa si no coincide alguna?Lo que voy a responder va sonar muy poco tecnico, pero creo que hay que seguir nuestros instintos:p. Tenemos que poner la que nos paresca mas apropiada, incluso si alguno valores difieren. Tambien puede suceder que la funcion que se busca no exista en nuestro firm por alguna cuestion (no tiene tapa, no tiene tal tecla, no tiene tal menu, etc). Si hay pocas opciones podriamos simplemente probar cada una.
Alguien con mas experiencia que me corrija si tiene una mejor respuesta.

Mike006
21/04/2008, 22:23:58
Cuando guardo la database del Firmware, en la parte inferior del IDA me sale "error no se encontro el archivo C:\...\IDA\plugins\jdprean.p64" algo asi y termina guardandolo con extencion .i64 y no .idb como dice el tutorial.

Karl05
21/04/2008, 22:40:48
Cuando guardo la database del Firmware, en la parte inferior del IDA me sale "error no se encontro el archivo C:\...\IDA\plugins\jdprean.p64" algo asi y termina guardandolo con extencion .i64 y no .idb como dice el tutorial.Que raro, el jdprean es un plugin para IDA llamado Justdapreanalizer, pero es un plw, no un p64 :confused:).
Yo puedo usar el IDA perfectamente si ese plugin. Tal vez sea a causa del archivo de configuracion. Te paso el que tengo yo para que lo pruebes.
No se me ocurre otra solucion en este momento.

Mike006
21/04/2008, 22:51:06
En la carpeta plugins si esta el plugins.cfg
Ademas de otros archivos .plw y .p64
Digamos hay un strings.p64 y un strings.plw, un samaout.p64 y un samaout.plw
Pero supuestamente el problema es por no contener el jdprean.p64, aunque el jdprean.plw si esta.
Provare desintalando el IDA (el que tengo lo descarge de otra pag.)e instalando el que esta en el tutorial.
EDITO:
Ya solucione mi problema pero ahora el parche que estoy intentando portar tiene demasiadas llamadas a distintas partes del Firm!!:mad:

LeO_snm
24/04/2008, 07:00:23
Bueno, estuve probando el portar algunos parches que ya estaban y funciono!, gracias karl05!, ahora el tema es que queria portar el parche del w710 para ver en pantalla completa y no pude, creo que el principal problema radica en el .asm que se creo, es BASTANTE RARO, aca les paso para ver si alguno encuentra alguna solucion, gracias!

Edito: problema solucionado, lo hice de nuevo y salio bien, en algo me debo haber confundido

ahora tengo un nuevo problema me sale error: relative jump out of range, el tema es q no entiendo arreglarlo con la solucion que diste, porque no tengo ningun BL, mira esta es la primera parte del asm



include "x.inc"

patch equ 0x44141FBC
dir1 equ 0x44162796
dir2 equ 0x44162CB8
org patch
Align 4
loc_45790257: ADD R7, 0xBA
LSL R3, R7, 6
LSL R5, R4, 6
B dir1

el error me sale en B dir1, como harian en este caso? gracias!

Skipped
26/04/2008, 19:23:20
Quitemos el parche que habiamos aplicado ejecutando el IDC “UndoPatch.idc” de la misma forma que el anterior idc seleccionando el parche a quitar, o sea el mismo que aplicamos al comienzo.
Abrimos el Smelter. “Flash” -> “Abrir”, tipo:”Todos los archivos” y seleccionamos el Raw del firm de origen (R6GA004). . “Flash” -> “Cargando base” -> “Enter the Address” y ponemos “44140000” (o la base que corresponda a tu modelo).
En la parte de arriba hay una fila de botones con letras: E, L, M, P… Presionamos la “B” que abre el cuadro “Search bytes” para buscar en el firm.
Vamos a portar todas las direcciones que definimos al principio del asm (las precedidas por “equ”), buscando su equivalente en el nuevo firm.
Nos dirigimos a 454E416A donde se alojaba el “patch1”. Analizamos el código presionando “C” :No entiendo las dos partes en negrita, en lo primero en negrita, ¿el firm de origen no es R6CA009 ? ¿cual se abre con el smelter entonces, el de origen o el de destino?
y en lo segundo en negrita, nos dirigimos a esa direccion (454E416A), dentro del IDA del firm de origen o de destino? ¿con parchar o sin parchar?


y por ultimo en esta parte:

Observen que hay un BL en 454E4170, que llama una subroutine en 454F21EC, el valor de estas instrucciones (Branch) depende tanto del origen como del destino. A diferencia de los DCD en que solo dependerán del destino. Mas alla de eso es evidente que tanto origen como destino puede que no se encuentran en las mismas direcciones en ambos firms, por lo tanto estos 4 bytes pueden ser distintos.

¿que otros valores dependen tanto de origen como de destino?? porque existen muchos mas..

gracias
Gracias

Karl05
26/04/2008, 23:53:01
@ LeO_snm: Tengo entendido que esa solucion deberia servir con B, BL, BLX. Yo solo tuve ese problema con los BL, por eso puse este ejemplo en el tuto. Si tengo tiempo veo ese parche con mas detenimiento.
nos dirigimos a esa direccion (454E416A), dentro del IDA del firm de origen o de destino? ¿con parchar o sin parchar?:pOops! es el de destino (sin parchar, claro esta), perdón por la errata, ya lo corrigo.
¿que otros valores dependen tanto de origen como de destino?? porque existen muchos mas.. En principio BL, BLX, DCD, me parece que a veces algunos B, LDR. Imagino que depende de si la distancia relativa es igual o no entre los firm.
Yo utilizo comodines cada vez que veo una llamada de 4 bytes a otra parte del firm. Aunque tuve casos en que cambiaban valores analizados de a 2 bytes por el IDA.
Realmete no conozco lo suficiente de assembler como para darte una respuesta bien fundamentada. Espero te haya sido util de todos modos.
Un saludo.

LeO_snm
27/04/2008, 18:38:58
LeO_snm: Tengo entendido que esa solucion deberia servir con B, BL, BLX. Yo solo tuve ese problema con los BL, por eso puse este ejemplo en el tuto. Si tengo tiempo veo ese parche con mas detenimiento..


el problema es con B, el tema es que no entiendo de donde salen los numeros para agregar esa parte q dice el tuto

estiuv02
26/05/2008, 22:02:35
la funcion dword_456521B0 me parece que esta fuera del rango, hay que hacer lo mismo que las que empiezan en off, loc, sub
es que intento portar el management radio and player set of means v3.5 y aparece esta de r6ca009 a r6ga004
otra cosa es que en el momento de usar el fasmarm me dice que no se encuentra el archivo temp.bin

myrzeug
24/06/2008, 14:02:24
Haberm he estado tratando de aplicar este tuto a un parte mas complicado que el del ejemplo (el parche ya existe en varias versiones y para casi todo celuar, lo hice mas para ENTENDER y APRENDER mejor)
Agarre este parche:


;W810 SW-R4EA031
;Missed calls and messages notification by camera button/vibra/melody
;Notification starts after 1 minute after missed call/message
;You can set the type of notification yourself: 00 - on, 01 - off
;Vibra/melody stops during active call
;v. 3
;© IronMaster
+44140000
10c633e: 3378002B1F4F 204FB847002B
10c63c0: D3E50000 01F06B45
1341388: 021C0020052A00B5 00B53DF25AFE052A
14049ea: 0A1C011C 7AF11CFB
157f000: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 4D4F3378FFB54D4F3E78B007C00F09D1
157f010: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 02252E433E70F007C00F03D14A484949
157f020: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 8DF732F9FFBD0A1C011CFFB5424B8B42
157f030: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 06D1002A04D1414F3E78FD252E403E70
157f040: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFBD021C0020FFB53C4F3E78321C0029
157f050: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 01D00E4301E0FE210E403E707107C90F
157f060: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 07D104210E433E70FA2002A101318DF7
157f070: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0BF9FFBDFFB5314F3E78FB252E403E70
157f080: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF C907C90F09D1F107C90F06D0B107C907
157f090: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 03D12D482B498DF7F7F8FFBDFFB52EA1
157f0a0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0978012901D100F003F800F01EF8FFBD
157f0b0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFB5224F3E78B007800F09D001210820
157f0c0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 00F036F8FF20F53002A101318DF7DCF8
157f0d0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFBDC046FFB50021082000F029F8FF20
157f0e0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F5301B498DF7D0F8FFBDFFB54FF54EFC
157f0f0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 072801D8002816D1104F3E78B007800F
157f100: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 15D015A56978012907D10D488069FA21
157f110: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 890032220B1C70F4A1FBA978012902D1
157f120: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E8788DF797F90B4808498DF7ADF8FFBD
157f130: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 004A10475DEE2945D3E50000442B024C
157f140: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E44D044C9DF06B4560EA0000EBF06B45
157f150: FFFFFFFF B1F06B45
157f154: FFFFFFFF 204E0000 ;Time between notifications
157f158: FF 01 ;Cammera button
157f159: FF 01 ;Vibra
157f15a: FF 00 ;Melody
157f15b: FF 0B ;Type melody (charger connected)
y lo pase a asm obteniendo esto:



include "x.inc"

adrress0 equ 0x456BF0D4
adds1 equ 0x456BF074
adds2 equ 0x456BF158
address1 equ 0x4564C288
address2 equ 0x456BF0B0
address3 equ 0x456BF0EA
address4 equ 0x456BF130
address5 equ 0x4540E98C
address6 equ 0x4532F85C
address7 equ 0x4564C454
address8 equ 0x4529EE5C
address9 equ 0x456BF09C
dir1 equ 0x452063C0
dir2 equ 0x456BF042
dir3 equ 0x456BF026
ram1 equ 0x4C022B44
ram2 equ 0x4C044DE4
hook1 equ 0x452063c0
patch1 equ 0x4520633E
patch2 equ 0x45481388
patch3 equ 0x455449EA
patch4 equ 0x456BF000


org patch1
loc_4520633E:

LDR R7, dir1
BLX R7
CMP R3, 0
org hook1
DCD loc_456BF000+1

org patch2
loc_45481388:
PUSH {LR}
BL dir2
CMP R2, 5
org patch3
loc_455449EA:
BL dir3

org patch4
loc_456BF000:
LDR R7, dword_456BF138
LDRB R3, [R6]
PUSH {R0-R7,LR}
LDR R7, dword_456BF13C
LDRB R6, [R7]
LSL R0, R6, 0x1E
LSR R0, R0, 0x1F
BNE loc_456BF024
MOV R5, 2
ORR R6, R5
STRB R6, [R7]
LSL R0, R6, 0x1F
LSR R0, R0, 0x1F
BNE loc_456BF024
LDR R0, dword_456BF148
LDR R1, off_456BF144
BL address1

loc_456BF024:

POP {R0-R7,PC}
ADD R2, R1, 0
ADD R1, R0, 0
PUSH {R0-R7,LR}
LDR R3, dword_456BF138
CMP R3, R1
BNE loc_456BF040
CMP R2, 0
BNE loc_456BF040
LDR R7, dword_456BF13C
LDRB R6, [R7]
MOV R5, 0xFD
AND R6, R5
STRB R6, [R7]

loc_456BF040:

POP {R0-R7,PC}
ADD R2, R0, 0
MOV R0, 0
PUSH {R0-R7,LR}
LDR R7, dword_456BF13C
LDRB R6, [R7]
ADD R2, R6, 0
CMP R1, 0
BEQ loc_456BF056
ORR R6, R1
B loc_456BF05A

loc_456BF056:
MOV R1, 0xFE
AND R6, R1

loc_456BF05A:
STRB R6, [R7]
LSL R1, R6, 0x1D
LSR R1, R1, 0x1F
BNE loc_456BF072
MOV R1, 4
ORR R6, R1
STRB R6, [R7]
MOV R0, 0xFA
adr R1, adds1
ADD R1, 1
BL address1

loc_456BF072:
POP {R0-R7,PC}

loc_456BF074:
PUSH {R0-R7,LR}
LDR R7, dword_456BF13C
LDRB R6, [R7]
MOV R5, 0xFB
AND R6, R5
STRB R6, [R7]
LSL R1, R1, 0x1F
LSR R1, R1, 0x1F
BNE loc_456BF09A
LSL R1, R6, 0x1F
LSR R1, R1, 0x1F
BEQ loc_456BF09A
LSL R1, R6, 0x1E
LSL R1, R1, 0x1F
BNE loc_456BF09A
LDR R0, dword_456BF148
LDR R1, off_456BF144
BL address1

loc_456BF09A:

POP {R0-R7,PC}

loc_456BF09C:
PUSH {R0-R7,LR}
adr R1, adds2
LDRB R1, [R1]
CMP R1, 1
BNE loc_456BF0AA
BL address2

loc_456BF0AA:
BL address3
POP {R0-R7,PC}

sub_456BF0B0:

PUSH {R0-R7,LR}
LDR R7, dword_456BF13C
LDRB R6, [R7]
LSL R0, R6, 0x1E
LSR R0, R0, 0x1E
BEQ loc_456BF0D0
MOV R1, 1
MOV R0, 8
BL address4
MOV R0, 0xFF
ADD R0, 0xF5
adr R1, adrress0
ADD R1, 1
BL address1

loc_456BF0D0:
POP {R0-R7,PC}
NOP

loc_456BF0D4:
PUSH {R0-R7,LR}
MOV R1, 0
MOV R0, 8
BL address4
MOV R0, 0xFF
ADD R0, 0xF5
LDR R1, off_456BF150
BL address1
POP {R0-R7,PC}

sub_456BF0EA:

PUSH {R0-R7,LR}
BL address5
CMP R0, 7
BHI loc_456BF0F8
CMP R0, 0
BNE loc_456BF126

loc_456BF0F8:
LDR R7, dword_456BF13C
LDRB R6, [R7]
LSL R0, R6, 0x1E
LSR R0, R0, 0x1E
BEQ loc_456BF12E
adr R5, adds2
LDRB R1, [R5,1]
CMP R1, 1
BNE loc_456BF11A
LDR R0, dword_456BF140
LDR R0, [R0,0x18]
MOVL R1, 0x3E8
MOV R2, 0x32
ADD R3, R1, 0
BL address6

loc_456BF11A:
LDRB R1, [R5,2]
CMP R1, 1
BNE loc_456BF126
LDRB R0, [R5,3]
BL address7

loc_456BF126:

LDR R0, dword_456BF154
LDR R1, off_456BF14C
BL address1

loc_456BF12E:
POP {R0-R7,PC}

sub_456BF130:
LDR R2, off_456BF134
BX R2

align 4
off_456BF134 DCD address8+1
dword_456BF138 DCD 0xE5D3

dword_456BF13C DCD ram1

dword_456BF140 DCD ram2
off_456BF144 DCD address9+1

dword_456BF148 DCD 0xEA60

off_456BF14C DCD address3+1
off_456BF150 DCD address2+1
dword_456BF154 DCD 0x4E20

loc_456BF158:

LSL R1, R0, 4
LSR R0, R0, 0xC
para no aburrirme buscando direcciones en otro main (pues el parche ya existe en varios modelos) lo volvi a compilar con las mismas direcciones del w810 obteniendo el parche inicial :a35:, entonces esta bien verdad?:a35:

Ahora voy por el Confidentiality + Extended File Manager. para w610 =P

eze92
20/07/2008, 21:26:12
hola...bueno amigos lo que me ocurre a mi es similar a lo de migue8 solo que el archivo que me falta es "ritchtx32.ocx"...alguien me lo podria pasar o decirme donde lo consigo xfa...desde ya muchas gracias...

miguel8e
21/07/2008, 00:51:01
hola...bueno amigos lo que me ocurre a mi es similar a lo de migue8 solo que el archivo que me falta es "ritchtx32.ocx"...alguien me lo podria pasar o decirme donde lo consigo xfa...desde ya muchas gracias...

aqui lo tienes, saludos.

eze92
21/07/2008, 12:05:32
gracias amigo pero tengo u problema porque mi ordenador me tira un virus en el archivo...si melo puedes pasar nuevamente te lo agradeceria....

Karl05
21/07/2008, 17:27:00
Eze chequea esta pagina Archivos requeridos .DLL y .OCX para los programas y utilidades Msn messenger (http://mundomessenger.com/archivos_requeridos.php) hay varios dll y ocx disponibles para descargar

ts005
01/08/2008, 18:40:38
Al intentar compilar con el fasarm me marca que falta el archivo temp.bin alguna solucion ya probe varias versiones de farsar y pasa lo mismo

EDITO solucionado el error era el un archivo intercale alguno de una version que si me funciono.

saludos

eze92
18/08/2008, 16:31:06
disculpen amigos estoy empezando con esto de portar parches y tengo una duda...quizas esta sea una pregunta tonta pero en fin me gustaria que me expliquen...
lo que quiero saber es cual es el ULTIMO BYTE DE MI FIRM para completar los datos en el ida...
mi cel es un w580 r8be001 y lo que ocurre es que el ida no me rellena ese dato, ya que me aparece una combinacion bastante extraña...tambien quisiera saber como averiguarlo yo mismo en el caso de que luego utilize otro modelo...

desde ya muchisimas gracias al foro del que siempre aprendo y sepan disculpar mi ignorancia...

miguel8e
18/08/2008, 17:43:49
puedes abrir el .raw de tu firmware con UltraEdit o WinHex y vas hasta el ultimo offset, ese será lo que colocarás.

y le sumas 100000 para que se extienda del rango y puedas trabajar con parches que exceden el limite del firmware, como el elfpack, etc...

Mike006
12/09/2008, 11:05:10
puedes abrir el .raw de tu firmware con UltraEdit o WinHex y vas hasta el ultimo offset, ese será lo que colocarás...
En db2020 solamente ponemos el ultimo offset :a12: (no extendemos length).
En db2010 hay que hacer lo que dijiste :a01::

y le sumas 100000 para que se extienda del rango y puedas trabajar con parches que exceden el limite del firmware, como el elfpack, etc..
Pd: Hay una manera mas facil de portar con parches que trabajan fuera del firmware y no es necesario extender el length en db2010 y tomar menos en db2020.:a31:

tocinonaro
18/09/2008, 11:49:07
Una pregunta, estoy empezando a portar parches moderados, empeze con los sencillos sin assembling y fueron sobre ruedas. Al grano, quisiera saber que poner en Rom Start Adress, mi suposicion es 44140000 y en Rom size tengo otra pregunta como debo poner el numero en hexadecimal?, osea tengo el firmware R4EA031 W810, y veo que finaliza en 01576FD0 hexadecimal, que debo sumar 100000 osea 01586FD0 y ponerlo en Rom Size?

Karl05
18/09/2008, 12:55:52
Una pregunta, estoy empezando a portar parches moderados, empeze con los sencillos sin assembling y fueron sobre ruedas. Al grano, quisiera saber que poner en Rom Start Adress, mi suposicion es 44140000 y en Rom size tengo otra pregunta como debo poner el numero en hexadecimal?, osea tengo el firmware R4EA031 W810, y veo que finaliza en 01576FD0 hexadecimal, que debo sumar 100000 osea 01586FD0 y ponerlo en Rom Size?Te felicito y espero tengas el mismo exito con tus proximos ports. Bien, vamos con tu consulta:
Abris el raw con el IDA, en "processor type" ponés "AMR Processors: AMR710a" le das "Set" y luego "OK". En la proxima ventana solo tiene que estar tildado Create ROM section
Luego pones:

ROM start address: 0x44140000
ROM size: 0x01674985

Loading address: 0x44140000
File offset: 0x00000000
Loading size: 0x01674985

Fijate que los valores de ROM start address, Loading address y File offset antes de que los reemplases estan en 0x00000000.
En ROM size y Loading size ya te deberia aparecer el valor del ultimo byte que reconoce el IDA antes de que reemplaces.
Cuando abri tu firm me apareció: 0x01574985, o sea que solo le sumé 1 a la tercera cifra despues del 0x.

Espero que se haya aclarado tu duda. Un saludo.

tocinonaro
18/09/2008, 18:10:21
Hola gracias por la anterior he avanzado un poco, estoy portando un parche de cuando te llaman prenda la luz, el tema es que las ultimas partes del parche mas bien cuando el codigo es 0000000000 o FFFFFFFF manda un error que dice Command MarkCode failed y no puedo avanzar.

PD: Editado, lo anterior ya lo solucione. El tema ahora es el ASM del paso 1, ya lo construi y saque las lineas con ; y demas pero donde lo veo con colores? osea tu dices rojo y azul, pero en block de notas? por que lo veo todo igual en negro.
PD2: Expongo mi progreso hasta ahora, desamble el parche:
;W810 SW-R4EA031
;Ìèãàíèå ôîíà*ÿ ï*è âõîäÿùåì âûçîâå
;Ïå*åäåëàíà ëîãèêà ïàò÷à, ï*è íàæàòèè íà # èëè êà÷åëüêó âìåñòå ñ ìóçûêîé/âèá*îé âûêëþ÷àåòñÿ è ìèãàíèå
;Blinking a small lamp at an entering call
;v. 2
;(c) IronMaster
+44140000
10c673a: 206B2F49 30498847
10c67fc: 816A2045 B1556B45
10c7e14: 0D4D 1E4D
10c7e20: 4C34E078 0A488047
10c7e4c: B0624D44 FB556B45
15755b0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 206B1749FFB5154F7E78012E03D00121
15755c0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 797000F001F8FFBDFFB5104F3E78012E
15755d0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 07D01E203CF746FF32200E4996F754FE
15755e0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFBD00263E707E70FFBDFFB53CF746FF
15755f0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3220094996F748FEFFBD4C34E078FFB5
1575600: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 024F7E78012E00D13E70FFBD402B024C
1575610: FFFFFFFFFFFFFFFFFFFFFFFF 816A2045EB556B45C9556B45
Y HA QUEDADO ASI:

include "x.inc"

loc_456B55B0:
LDR R0, [R4,0x30]
LDR R1, loc_456B5610
PUSH {R0-R7,LR}
LDR R7, loc_456B560C
LDRB R6, [R7,1]
CMP R6, 1
BEQ loc_456B55C6
MOV R1, 1
STRB R1, [R7,1]
BL sub_456B55C8

loc_456B55C6:
POP {R0-R7,PC}



sub_456B55C8:
PUSH {R0-R7,LR}
LDR R7, loc_456B560C
LDRB R6, [R7]
CMP R6, 1
BEQ loc_456B55E2
MOV R0, 0x1E
BL sub_455F2464
MOV R0, 0x32
LDR R1, off_456B5614
BL sub_4564C288
POP {R0-R7,PC}


loc_456B55E2:
MOV R6, 0
STRB R6, [R7]
STRB R6, [R7,1]
POP {R0-R7,PC}




loc_456B55EA:
PUSH {R0-R7,LR}
BL loc_455F247C
MOV R0, 0x32
LDR R1, off_456B5618
BL sub_4564C288
POP {R0-R7,PC}

loc_456B55FA:
ADD R4, 0x4C
LDRB R0, [R4,3]
PUSH {R0-R7,LR}
LDR R7, loc_456B560C
LDRB R6, [R7,1]
CMP R6, 1
BNE loc_456B560A
STRB R6, [R7]

loc_456B560A:
POP {R0-R7,PC}


loc_456B560C:
CMP R3, 0x40
LDR R4, off_456B5618

loc_456B5610:
LDR R1, [R0,0x28]
CMP R0, R4

Karl05
18/09/2008, 20:02:09
El tema ahora es el ASM del paso 1, ya lo construi y saque las lineas con ; y demas pero donde lo veo con colores? osea tu dices rojo y azul, pero en block de notas? por que lo veo todo igual en negro.
Claro que vas a ver todo en negro en el block de notas, ¡Es texto sin formato!. Los colores son solo orientativos, para que veas como deben ser las zonas del vkp o asm a las que me refiero.

En ese parche tenes 4 DCDs (en 10c673a, 10c67fc, 10c7e20 y 10c7e4c), que vas a tener que poner "manualmente" en el ASM. Lee con detenimiento el Tutorial que esta explicado.
Tenes un pequeño cambio en el firm (en 10c7e14) y todo el codigo nuevo desde 15755b0 (que son las FFFF).
Notá que el parche esta escrito en offset+base. O sea que para buscar en el IDA tenes que sumarle 4414000 a los offsets.

Una vez listo el ASM reemsamblalo con el Fasarm para ver si, efectivamente, genera de nuevo el mismo parche vkp del que partiste. Si todo esta OK, entonces pasa a la Fase 2 para comensar a portarlo.

tocinonaro
18/09/2008, 21:01:22
Perdon por hacer tantas preguntas salgo de una duda y me meto en otra, lo que dices antes creo que entendi algo, o para mi es mas facil, yo dijo los offset que modifican algo en el firm como lo son los 5 primeros, esos no seria mas facil portarlos despues? osea como si fueran un parche simple, que no requieran assembling? y otra duda, te segui hasta que tienes que poner patch, dir 1, dir 2, dir 3, dir 4, etc. En patch se que poner que es donde comienza el codigo nuevo, pero en dir 1, y los demas dir no se como obtenerlos? osea en tu tutorial veo que obtienes dir1 equ 0x454DE6C8 de la nada eso creo?

PD: Avanza hasta aca:

include "x.inc"

patch equ 456B55B0
dir 1 equ
dir 2 equ
dir 3 equ
dir 4 equ

loc_456B55B0:
LDR R0, [R4,0x30]
LDR R1, loc_456B5610
PUSH {R0-R7,LR}
LDR R7, loc_456B560C
LDRB R6, [R7,1]
CMP R6, 1
BEQ loc_456B55C6
MOV R1, 1
STRB R1, [R7,1]
BL sub_456B55C8

loc_456B55C6:
POP {R0-R7,PC}



sub_456B55C8:
PUSH {R0-R7,LR}
LDR R7, loc_456B560C
LDRB R6, [R7]
CMP R6, 1
BEQ loc_456B55E2
MOV R0, 0x1E
BL sub_455F2464
MOV R0, 0x32
LDR R1, off_456B5614
BL sub_4564C288
POP {R0-R7,PC}


loc_456B55E2:
MOV R6, 0
STRB R6, [R7]
STRB R6, [R7,1]
POP {R0-R7,PC}




loc_456B55EA:
PUSH {R0-R7,LR}
BL loc_455F247C
MOV R0, 0x32
LDR R1, off_456B5618
BL sub_4564C288
POP {R0-R7,PC}

loc_456B55FA:
ADD R4, 0x4C
LDRB R0, [R4,3]
PUSH {R0-R7,LR}
LDR R7, loc_456B560C
LDRB R6, [R7,1]
CMP R6, 1
BNE loc_456B560A
STRB R6, [R7]

loc_456B560A:
POP {R0-R7,PC}


loc_456B560C:
CMP R3, 0x40
LDR R4, off_456B5618

loc_456B5610:
LDR R1, [R0,0x28]
CMP R0, R4

Karl05
18/09/2008, 22:52:58
Bueno, los nombres patch y dir1, dir2, etc. tambien son orientativos, realmente le podes poner cualquier nombre que quieras. Respecto a lo anterior, lo explique en el tuto para el BL pero voy a tratar de explicarlo mejor para tu caso que son DCD:

Cada bloque que va escribir el fasarm tiene que tener esta forma:

org (Nombre de la direccion donde empieza a escribir)
"loc o sub" (Direccion de partida):
INSTRUCCION (Nombre de la direccion de destino)

Por ejemplo esta linea:
10c67fc: 816A2045 B1556B45

Donde empieza?: 10c67fc+44140000 = 452067FC y esta es tambien la direccion de partida para el salto.
Instruccion?: para realizar un salto es "DCD"
destino?: 456B55B0+1 (fijate que son los valores invertidos de a pares)

Entonces tiene que quedar asi:

org salto2
loc_452067FC:
DCD parche+1

¿Ves que queda parecido al org patch1 del tuto, pero con DCD? Tenes que definir los nombres salto2 y parche. Asi que al comienzo del ASM pones:

salto2 equ 0x452067FC
parche equ 0x456B55B0

Tambien nota que si bien le puedo poner cualquier nombre al destino lo llame "parche" ya que si te fijas es donde comienza el codigo nuevo. Esto es importante que lo notes para luego portarlo en la fase 2.

Para seguir agregando bloques de instrucciones consecutivas volves a usar el comando "org".

Si seguis teniendo dudas, pregunta, para eso esta esta seccion. Podria haber sido mas explicativo en el tuto, pero ya esta bastante largo, no?:a26:

tocinonaro
18/09/2008, 23:21:46
He entendido hasta ahi, pero tengo la misma pregunta, no es mas facil los 5 primeros offset hacen cambios al main, mientras que los otros añaden nuevas funciones, lo que hacen cambios al main no los podria portar al final? osea porto mediante este tuto los que añaden nuevas funciones y mediante el tuto sin assembling con winhex los otros.

Karl05
19/09/2008, 00:13:58
Ah!, eso si. Podes agregarlos como si fuese un parche sencillo si conoces el destino de los saltos mediante winhex. Yo a veces tampoco los pongo en el ASM (incluso ni siquiera uso winhex) solo los veo en el IDA y los meto al final editando directamente el vkp con el block de notas.
Pero quise ser mas extructurado y coherente al explicarlo, asi no creaba mas confusion.
Mirá que tenes que conocer los otros destinos en el nuevo firm, tal vez tengas que usar el smelter para buscar, el winhex no te permite buscar comodines (?).

tocinonaro
19/09/2008, 21:47:21
Hola, bueno voy a empezar todo otra vez, ya que vi que algunas cosas no coincidian, y cierto ya que he empezado de 0 el tuto y algunas se me habian escapados.
Bueno una pregunta me quedo esto:

include "x.inc"

Patch equ 0x456B55B0
dir 1 equ 0x456B5614
dir 2 equ 0x456B5618
dir 3 equ 0x4C022B40

org 0x456B55B0

:loc_456B55B0
LDR R0, [R4,0x30]
LDR R1, loc_456B5610
PUSH {R0-R7,LR}
LDR R7, dword_456B560C
LDRB R6, [R7,1]
CMP R6, 1
BEQ loc_456B55C6
MOV R1, 1
STRB R1, [R7,1]
BL sub_456B55C8

:loc_456B55C6
POP {R0-R7,PC}




:sub_456B55C8
PUSH {R0-R7,LR}
LDR R7, dword_456B560C
LDRB R6, [R7]
CMP R6, 1
BEQ loc_456B55E2
MOV R0, 0x1E
BL sub_455F2464
MOV R0, 0x32
LDR R1, off_456B5614
BL sub_4564C288
POP {R0-R7,PC}


:loc_456B55E2
MOV R6, 0
STRB R6, [R7]
STRB R6, [R7,1]
POP {R0-R7,PC}

DCB 0xFF
unk_456B55EB DCB 0xB5
DCB 0x3C
DCB 0xF7
DCB 0x46
DCB 0xFF

MOV R0, 0x32
LDR R1, off_456B5618
BL sub_4564C288
POP {R0-R7,PC}


:loc_456B55FA
ADD R4, 0x4C
LDRB R0, [R4,3]
PUSH {R0-R7,LR}
LDR R7, dword_456B560C
LDRB R6, [R7,1]
CMP R6, 1
BNE loc_456B560A
STRB R6, [R7]

:loc_456B560A
POP {R0-R7,PC}

dword_456B560C DCD 0x4C022B40

:loc_456B5610
LDR R1, [R0,0x28]
CMP R0, R4


PD: Fijate si no es mucho pedir y si no te interrumpo, si los dir 1, dir 2 y dir 3 estan bien, entiendo que estos son las direcciones que sobresalen de los offset, que no se encuentran dentro del rango y que patch es donde empieza el parche. Otra duda que tenia que son los unk_xxxxx y si tambien debo ponerlos con : y otra duda donde debo poner los valores de dir 1, dir 2 y dir 3. Muchas Gracias.

tocinonaro
21/09/2008, 12:28:00
Tengo una pregunta, ya he terminado el ASM, y procedi con el compilado con Fasarm, el tema es que queda casi identico al codigo base del que partio, quisiera saber como me doy cuenta de mis errores:
Codigo base:

;W810 SW-R4EA031
;Ìèãàíèå ôîíà*ÿ ï*è âõîäÿùåì âûçîâå
;Ïå*åäåëàíà ëîãèêà ïàò÷à, ï*è íàæàòèè íà # èëè êà÷åëüêó âìåñòå ñ ìóçûêîé/âèá*îé âûêëþ÷àåòñÿ è ìèãàíèå
;Blinking a small lamp at an entering call
;v. 2
;(c) IronMaster
+44140000
10c673a: 206B2F49 30498847
10c67fc: 816A2045 B1556B45
10c7e14: 0D4D 1E4D
10c7e20: 4C34E078 0A488047
10c7e4c: B0624D44 FB556B45
15755b0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 206B1749FFB5154F7E78012E03D00121
15755c0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 797000F001F8FFBDFFB5104F3E78012E
15755d0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 07D01E203CF746FF32200E4996F754FE
15755e0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFBD00263E707E70FFBDFFB53CF746FF
15755f0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3220094996F748FEFFBD4C34E078FFB5
1575600: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 024F7E78012E00D13E70FFBD402B024C
1575610: FFFFFFFFFFFFFFFFFFFFFFFF 816A2045EB556B45C9556B45

Codigo compilado con Fasarm:

+44140000
15755b0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 206B1749FFB5154F7E78012E03D00121
15755c0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 797000F001F8FFBDFFB5104F3E78012E
15755d0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 07D01E203CF746FF32200E4996F754FE
15755e0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFBD00263E707E70FFBDFFB53CF746FF
15755f0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3220094996F748FEFFBD4C34E078FFB5
1575600: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 024F7E78012E00D13E70FFBD402B024C
1575610: FFFFFFFFFFFFFFFFFFFFFFFF 816AA042EB556B45C9556B45

Si se fijan coinciden casi todos, sacando el ultimo offset, 1575610, del cual hay 2 errores:
codigo verdadero: 816A2045EB556B45C9556B45
codigo compilado hecho por mi:
816AA042EB556B45C9556B4

Quisiera saber si el error es pequeño osea tengo que editar el ultimo offset nada mas o debido a este error debo editar todo de nuevo.

PD: Si alguien me quiere ayudar a buscar el error:

include "x.inc"

patch equ 0x456B55B0
dir1 equ 0x455F2464
dir2 equ 0x456B5614
dir3 equ 0x4564C288
dir4 equ 0x455F247C
dir5 equ 0x456B5618


org patch

loc_456B55B0:
LDR R0, [R4,0x30]
LDR R1, loc_456B5610
PUSH {R0-R7,LR}
LDR R7, loc_456B560C
LDRB R6, [R7,1]
CMP R6, 1
BEQ loc_456B55C6
MOV R1, 1
STRB R1, [R7,1]
BL sub_456B55C8

loc_456B55C6:
POP {R0-R7,PC}




sub_456B55C8:
PUSH {R0-R7,LR}
LDR R7, loc_456B560C
LDRB R6, [R7]
CMP R6, 1
BEQ loc_456B55E2
MOV R0, 0x1E
BL dir1
MOV R0, 0x32
LDR R1, dir2
BL dir3
POP {R0-R7,PC}


loc_456B55E2:
MOV R6, 0
STRB R6, [R7]
STRB R6, [R7,1]
POP {R0-R7,PC}


loc_456B55EA:
PUSH {R0-R7,LR}
BL dir4
MOV R0, 0x32
LDR R1, dir5
BL dir3
POP {R0-R7,PC}


loc_456B55FA:
ADD R4, 0x4C
LDRB R0, [R4,3]
PUSH {R0-R7,LR}
LDR R7, loc_456B560C
LDRB R6, [R7,1]
CMP R6, 1
BNE loc_456B560A
STRB R6, [R7]

loc_456B560A:
POP {R0-R7,PC}

loc_456B560C:
CMP R3, 0x40
LDR R4, loc_456B5618

loc_456B5610:
LDR R1, [R0,0x28]
CMP R0, R4

loc_456B5614:
STRB R3, [R5,R7]
CMP R3, SP

loc_456B5618:
STRB R1, [R1,R7]
CMP R3, SP

ts005
21/09/2008, 20:50:58
Tienes analizados mal los entrypoint el asm te debe quedar de esta manera(solo codigo nuevo)


include "x.inc"
dir1 equ 0x456B55C6
dir2 equ 0x456B55C8
dir3 equ 0x456B55E2
dir4 equ 0x455F2464
dir5 equ 0x4564C288
dir6 equ 0x455F247C
dir7 equ 0x4564C288
dir8 equ 0x456B560A
dir9 equ 0x45206A81
dir10 equ 0x456B55EA
dir11 equ 0x456B55C8
ram equ 0x4C022B40
patch equ 0x456B55B0
org patch
loc_456B55B0:
LDR R0, [R4,0x30]
LDR R1, off_456B5610
PUSH {R0-R7,LR}
LDR R7, dword_456B560C
LDRB R6, [R7,1]
CMP R6, 1
BEQ dir1
MOV R1, 1
STRB R1, [R7,1]
BL dir2

loc_456B55C6:
POP {R0-R7,PC}

sub_456B55C8:
PUSH {R0-R7,LR}
LDR R7, dword_456B560C
LDRB R6, [R7]
CMP R6, 1
BEQ dir3
MOV R0, 0x1E
BL dir4
MOV R0, 0x32
LDR R1, off_456B5614
BL dir5
POP {R0-R7,PC}

loc_456B55E2:
MOV R6, 0
STRB R6, [R7]
STRB R6, [R7,1]
POP {R0-R7,PC}

loc_456B55EA:
PUSH {R0-R7,LR}
BL dir6
MOV R0, 0x32
LDR R1, off_456B5618
BL dir7
POP {R0-R7,PC}

ADD R4, 0x4C
LDRB R0, [R4,3]
PUSH {R0-R7,LR}
LDR R7, dword_456B560C
LDRB R6, [R7,1]
CMP R6, 1
BNE dir8
STRB R6, [R7]

loc_456B560A:
POP {R0-R7,PC}
align 4
dword_456B560C DCD ram
off_456B5610 DCD dir9
off_456B5614 DCD dir10+1
off_456B5618 DCD dir11+1

saludos

Karl05
21/09/2008, 22:19:04
Bueno, dragoblazt se me adelanto, pero puso varias direcciones innecesarias, que te pueden complicar a la hora de portar (Fijate que muchos de las loc_ ya estan definidas dentro del parche). Te dejo adjunto el ASM completo que reproduce exactamente el parche original.
Pido perdon, dije que algunas instrucciones eran DCDs y estaba equivocado (No lo habia visto detenidamente), solamente 2 son DCD.
Respecto al problema que tuviste, es por las direcciones que se definen despues del "align4", seguramente habras forzado al IDA a analizarlo 2 veces.
Te deben haber aparecido lineas de 4 pares de cifras (pasó automaticamente a 32-bit) en este caso hay dejarlas así, no las fuerces a estar en 16-bit.

Ahora tenes que portar solo los EQUs.
No te quiero desalentar, pero la cruel realidad es que hasta acá fue la parte "sencilla", ahora viene lo dificil: La fase 2 es la mas laboriosa y en la que se pueden presentar los problemas. No te preocupes, con perseverancia y practica lo vas a lograr:a18:
Si ves que las cosas se te complican, empeza con un parche mas sencillo, alguno que ya este portado para practicar y que puedas comparar resultados.

Saludos:a16:

ts005
22/09/2008, 01:22:33
Como dice karl05 se me pasaron algunas direcciones de mas Ups, no estan digamos tan fuera de lugar el parche compila, pero igual si quires obviar eso las siguientes direcciones estan de mas.

dir1 equ 0x456B55C6
dir2 equ 0x456B55C8
dir3 equ 0x456B55E2
dir8 equ 0x456B560A
dir10 equ 0x456B55EA
dir11 equ 0x456B55C8
patch equ 0x456B55B0 (aunque habria que editar el asm y dejarlo asi
org 0x456B55B0).

Aunque te pueden servir de referencia si quieres rediccionar el codigo nuevo.

saludos

vulreilt29
28/04/2009, 22:32:36
hola amigos disculpen quiero hacer y portar parches con un w595 y me gutaria saber que diferencias hay o no cambia nada y luego me gustaria saber el rom start address o si es el mismo y como dije antes tambien cambia en otras cosas?

Karl05
29/04/2009, 14:47:59
Portar entre modelos de la misma plataforma era relativamente sencillo, pero las cosas se complicaban cuando intentaba portar entre db2010 a db2020 o viceversa. Muchas funciones eran muy distintas y se hacia imposible localizarlas. Pero uno podia ayudarse con las libs del elfpack para orientarse.

Los modelos nuevos como el w595 tienen plataforma A2, que imagino debe ser muy distinta a los modelos anteriores y como tampoco tenemos elfpack ni libs en estos modelos creo que esta bastante complicado por ahora.

m1ch43lzm
29/04/2009, 14:57:31
hola amigos disculpen quiero hacer y portar parches con un w595 y me gutaria saber que diferencias hay o no cambia nada y luego me gustaria saber el rom start address o si es el mismo y como dije antes tambien cambia en otras cosas?
En lugar del MAIN, tomas el phone_app.cxc que está dentro de la carpeta BOOT
Tambien hay que "recortar" con un editor hexadecimal los primeros 0x1000 (o 0x2000) bytes, dependiendo del modelo/firmware (con el editor hexadecimal, buscas 18 F0 9F E5 18 F0 9F E5 desde el principio, y recortas todo lo anterior, antes del primer 18 F0 9F E5, dependiendo del editor esa opcion se puede llamar "borrar bytes")

En ROM Start address sería 0x10000000 despues de "recortar" el phone_app.cxc

vulreilt29
02/05/2009, 02:47:29
si , pues ando intentado y eh podido solo que me eh atorado en la parte donde debo de colocar el patch 1 y 2 no eh podido encontrar el room donde se encuentre el codigo para ponerlo en el patch 1 y al final en los off set me salio todavia esto
Align 4

off_117D3C04 DCD dir4



loc_117D3C08

LSL R1, R0, 0x19
ASR R5, R3, 5

loc_117D3C0C
ADD R1, 0xB1
ASR R0, R3, 5

loc_117D3C10
STRH R5, [R4,R1]
no se si valle bien

soad16
08/05/2009, 02:27:47
yo tengo una duda esq cuando buscas los bytes con el smelter y no encuentra niguna coincidencia con el del parche que debo acer?? nadamas encuentra los primeros 3 o 4 pares de los bytes pero no todo que hago??

aqui les dejo el parche que intento portar

;W760_R3EA037
;?????? ?????? ? ??????? ??????
;????? ????? ?????????? ?????????? ???????
;?? ??????? ????????
;Clear window on lock buttons
;Now no delay occurs immediately block
;When locked immediately included sleep
;At no place screensaver
;v. 3
;© IronMaster
;(p) -=Tanusha_SE=-
10983c24: E9F0D0F92449A06A6CF38CF8 201CFFF7C3FF00F061F8F0BD

nadams encuentro estos bytes E9F0D0 los demas no


otra cosa si te salen varias coincidencias cual saber el que es verdadero o el que hara funcionar el parche

jkram
08/05/2009, 13:43:43
soad16 (http://www.topsony.com/forum_es/miembros/soad16.html)
debes entenderel código!

al aplicar el parche en el firmware W760_R3EA037, que comandos aparece?
Para ayudarte postea la parte del codigo (en IDA) que esta en el offset 10983c24, correspondiente a E9F0D0F92449A06A6CF38CF8
(no tengo IDA ni el main del W760 por el momento)

soad16
08/05/2009, 14:04:34
esto es lo que me aparece en el offset del parche

http://img8.imageshack.us/img8/5196/idag.jpg
pero no se encuentran los mismos bytes en el firm a portar

jkram
08/05/2009, 14:37:04
si pero segun lo que veo, eso aparece cuando aplicas el parche
necesito ver como estaba antes de aplicar el parche

es decir a la izquierda deben aparecer los bits
E9F0D0F92449A06A6CF38CF8

y no 201CFFF7C3FF00F061F8F0BD, que es lo que veo en la imagen

soad16
08/05/2009, 15:28:57
mira aqui te dejo lo que mira aqui te dejo lo que dice sin parchar el offset del parche pero hay mas codigo abajo tambien lo quieres ver o con esto men??

http://img6.imageshack.us/img6/3065/ida1l.jpg

a ver si me puedes ayudar porque no paso de ese punto

jkram
08/05/2009, 20:03:11
ahora si (me falto preguntar a que modelo lo estas portando)
pero bueno, intenta con esta secuenciencia en el smelter:
????????2449A06A????????274AA06A291C????????A06A00 22291c????????A06A291c1d4d
si no encuentras nada intenta
??????????49A06A??????????4AA06A291C????????A06A00 22291c????????A06A291c????
y en último caso con
????????????A06A????????????A06A291C????????A06A00 22291c????????A06A291c????

donde seguramente aparecerán muchas opciones, debes decidir cual es segun los comandos que ves a la derecha, el que mas parecido tenga...

la idea es esta:
los bits (numeros) de la instrucción BL sub_xxx nunca son los mismos entre firmware/modelos distintos, debes poner todo ????????

los CMP, MOV, ADD, si no tienen dentro de la instruccion algun sub_xxx o loc_xx puedes poner todos los numeros tal cual, casi siempre coinciden

para el LDR hay que tener en cuenta si o no tienen una dirección de referencia, por ejemplo en
LDR R0, dwor_xxxx
la referencia R0 podra ser la misma en diferentes firmware pero seguramente el dwor_xxxx no, asi que pueden variar 2 de los 4 bits en el mejor de los casos, o sino todos los 4

EDITO:
es mucho mas facil si subes un poco en el IDA hasta que veas algun PUSH, justo luego de un espacio sin bits a la izquierda (encabezado con un sub_xxxx o loc_xxx) que gerealmente indica el inicio de una función o subfunción

en ese caso comienzas la secuencia a buscar con los 4 numeros correspondientes al PUSH que casi siempre son los mismos en los firmware/modelos a portar

soad16
09/05/2009, 03:41:35
no men los 3 codigos que me diste dan el mismo offset y no son iguales los bits nadamas 3 pares) que al original y las estructuras no se parecen una es mas corta que la original mira te dejo el offset que me dio el smelter para que veas que sale

http://img14.imageshack.us/img14/9030/ida3t.jpg

vulreilt29
09/05/2009, 19:14:34
mmm alguien me podria responder ami? porfavor:a19:

soad16
13/05/2009, 03:48:13
tengo un problema al momento de querer probar el parche con armpc la pantaalla de cmd me sale lo siguiente y no me crea el parche espero que me sepan ayudar en que anda fallando

mi archivo asm es este


include "x.inc"

dir1 equ 0x10E58164
dir2 equ 0x11C480BC
patch equ 0x11B74970
hook1 equ 0x11C47EC4
hook2 equ 0x11C47EBC
org patch

org hook1
loc_11C47EC4:
LDR R1, off_11C4808C
ASR R7, R6, 6

org hook2
loc_11C47EBC: LDR R1, dir2
ASR R7, R6, 6





loc_11B74970:
PUSH {R0-R7,LR**
LDR R7, off_11B7498C
BLX R7
ADD R0, 0xA
LDR R7, dword_11B74990
BLX R7
POP {R0-R7,PC**

DCB 0xFF
DCB 0xB5

LDR R7, off_11B7498C
BLX R7
SUB R0, 0xA
LDR R7, dword_11B74990
BLX R7
POP {R0-R7,PC**

align 4

off_11B7498C DCD dir1+1

dword_11B74990 DCD 0x10E581A5



y este es el parche

;W760 SW-R3EE001
;??????????? ??????? ????????? "????????? +/-"
;Adjust the brightness of the keys "Volume +/-"
;v.1 fix
;(C) 2007KrasH
;(P) HotRabbit
11C47EC4: 616BE210 7149B711
11C47EBC: ED6AE210 7F49B711
11B74970: 00000000000000000000000000000000 FFB5064FB8470A30054FB847FFBDFFB5
11B74980: 00000000000000000000000000000000 024FB8470A38024FB847FFBD6581E510
11B74990: 00000000 A581E510

espero su ayuda

jkram
13/05/2009, 15:03:22
soad16 (http://www.topsony.com/forum_es/miembros/soad16.html)
enonctraste los offsets?
no logro ver las imagenes, en mi trabajo tienen bloqueadas algunas páginas y por ello algunas imagenes no las veo lo siento

el comando correcto para el assabler eso
...make name_of_asm.asm Name_firmware.raw +xxxxx

te falto poner el nombre del asm

vulreilt29 (http://www.topsony.com/forum_es/miembros/vulreilt29.html)

no entiendo bien el problema, podrias alclararlo mejor?
de que telefono y a que telefono estas portando
db2010 a db2020 duro casi imposible si no tienes conocimientos de assambler
db2020 a db2020 facil en la mayoria de casos un juego de niños
db2020 a db3150 facil, se parecen mucho ambas plataformas, de vez en cuando se complica...

para el base address de los db3150, no se si ya esta en algun lado del foro
1) Abrir phone_app.cxc en cualquier hex-editor
2) bajar hasta ver el siguiente codigo 18 F0 9F E5 18 F0 9F E5....
3) Remover todo el codigo que esta antes de la direccion donde encontraste el codigo anterior
4) guarda el raw y al usarlo con IDA la base que usaras sera 0x10000000
o puedes usar phone_app.cxc inicial sin recortar nada pero el base address sera 0x10000000-la direccion que encontraste arriba

vulreilt29
14/05/2009, 03:02:52
vulreilt29 (http://www.topsony.com/forum_es/miembros/vulreilt29.html)

no entiendo bien el problema, podrias alclararlo mejor?
de que telefono y a que telefono estas portando
db2010 a db2020 duro casi imposible si no tienes conocimientos de assambler
db2020 a db2020 facil en la mayoria de casos un juego de niños
db2020 a db3150 facil, se parecen mucho ambas plataformas, de vez en cuando se complica...

para el base address de los db3150, no se si ya esta en algun lado del foro
1) Abrir phone_app.cxc en cualquier hex-editor
2) bajar hasta ver el siguiente codigo 18 F0 9F E5 18 F0 9F E5....
3) Remover todo el codigo que esta antes de la direccion donde encontraste el codigo anterior
4) guarda el raw y al usarlo con IDA la base que usaras sera 0x10000000
o puedes usar phone_app.cxc inicial sin recortar nada pero el base address sera 0x10000000-la direccion que encontraste arriba

gracias por responderme amigo pues mira es de un w910 a un w595 y ´pues me refiero a que no veo la direccion donde poner el ´path 1 y el path 2, pues en si solo eh llegado a poner el path y hasta ahi me quede por eso puse eso no se si lo pueda dejar asi o que le puedo poner?

jkram
14/05/2009, 11:36:58
dejame ver el parche que estas portando ...y el asm original

vulreilt29
19/05/2009, 17:49:36
mmmm es que es el parche para poder cambiar la cancion, o detenelar mediante las manos libres y pues el asm xD que es es que ya no me aacuerdo

crash_200
17/07/2009, 16:04:30
hola estoy portando este parche para w200 r4ha014

;w300 R4EA031
;Patch compatible with modom elfpaka by Tartes since version 1.9.1
;Now do not have to choose the version elfloadera
; v2 (English)
;© Tartes
;(db2010) ZEN
;(p) andhe7
+44140000
10f421a: 0221 0321
10f4364: 0004000C02D001280ED0 0049084761CB6345C046
10f41b4: 0004000C02D001280CD0 00490847ADCB6345C046
14fcb60: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0004000C05D0012805D0022805D02049
14fcb70: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 08471D4908471D49084726A00021244A
14fcb80: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 224EB047011C381C1D4EB04726A00021
14fcb90: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1F4A1E4EB047011C381C1A4EB0474D4A
14fcba0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0026381C184EB0470126E0E70004000C
14fcbb0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 05D0012805D0022805D0104908470D49
14fcbc0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 08470D49084701B400F006E810494162
14fcbd0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 01BC08490847C04600402DE90200A0E3
14fcbe0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0F0100EF0080BDE8714323458D432345
14fcbf0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E9432345C1412345D941234597412345
14fcc00: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 798B0F45898B0F45B98B0F45456A2845
14fcc10: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF00004E006F00200045006C007600
14fcc20: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 6500730000000000430068006F006F00
14fcc30: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 73006500200074006800690073006D00
14fcc40: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 6F0064006500200066006F0072002000
14fcc50: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 73007700690074006300680069006E00
14fcc60: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 67002D006F006F006600200065006C00
14fcc70: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 660073002C007400680065006E002000
14fcc80: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 74006800650079002000630061006E00
14fcc90: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 62006500200069006E0063006C007500
14fcca0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 64006500640020007500730069006E00
14fccb0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 67002000650070006D0065006E006100
14fccc0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 6700650072002E0065006C0066002E00
14fccd0: FFFFFFFFFFFFFFFF 0000000045EA0000

ya arme el asm pero el fasarm me tira este error (lo dejo adjunto)
a que se debe este error?