Respuesta: Crear / Portar parches VKP complejos
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:
Código:
;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:
Código:
+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:
Código:
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
Respuesta: Crear / Portar parches VKP complejos
Tienes analizados mal los entrypoint el asm te debe quedar de esta manera(solo codigo nuevo)
Código:
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
1 Archivos adjunto(s)
Respuesta: Crear / Portar parches VKP complejos
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:
Respuesta: Crear / Portar parches VKP complejos
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
Respuesta: Crear / Portar parches VKP complejos
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?
Respuesta: Crear / Portar parches VKP complejos
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.
Respuesta: Crear / Portar parches VKP complejos
Cita:
Iniciado por
vulreilt29
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
Respuesta: Crear / Portar parches VKP complejos
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
Respuesta: Crear / Portar parches VKP complejos
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
Respuesta: Crear / Portar parches VKP complejos
soad16
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)