PDA

Ver la versión completa : Crear tus propios archivos *.asm



Cr@cShoT
26/10/2010, 15:20:06
Bueno, en esta ocacion les dare una pequeña guia, facil y directa para que puedan crear sus propios archivos *.asm y asi puedan portar sus propios parches

NOTA: Como dije, sera el metodo mas sencillo el que pondre aqui (a mi parecer), ya que ningun usuario arma un archivo *.asm de la misma forma, cada uno tiene su propio "estilo" de hacerlo...

1.- Para empezar... deberan abrir su Firmware usando ciertos plugins que ya fue explicado aqui

abrir raw de tu main y tu main en IDA PRO V.x (http://www.topsony.com/forum_es/desarrollo-parches-f202/abrir-raw-de-tu-main-y-tu-main-en-ida-pro-v-x-t120831.html)

En este tema, encontraran el Ida PRO, y los plugin, en el primer post esta los plugins para DB2020 que trabaja con Base *.raw y en el segundo post encuentran el plugin para A2, que trabaja con Base *.cxc

2.- Una vez que este abierto su firmware, necesitaran, dos archivos *.idc en la carpeta con el mismo nombre dentro de ida (Applypatch y Undopatch) que estan adjuntados en este mensaje.

3.- Empezemos... Usaremos este parche, creo que tiene el tamaño indicado:

;W705 R1GA031
;Change way of showing windows "Play mode", "Visualizations", "Visualizations/Visualizations" and "Stereo widening"
;v. fix
;(c) jamesbond22
;(p) Cr@cShoT
14cd1692: 2068022100F06DF82068 014B1847FFFF61C6D815
153ba11c: 7F49A4F091FF2068 004B184777C6D815
153ba298: 2049A4F0D3FE2868 004B184793C6D815
153ba152: 1549A4F076FF20680221 014B1847FFFFB1C6D815
15d8c660: 00000000000000000000000000000000 20680221204B9847206809211F4B9847
15d8c670: 00000000000000000000000000000000 2068174B18471A491D4B984720680021
15d8c680: 00000000000000000000000000000000 194B984720680921184B98472068114B
15d8c690: 00000000000000000000000000000000 18471349164B984728680021124B9847
15d8c6a0: 00000000000000000000000000000000 28680921114B98472868391C0A4B1847
15d8c6b0: 00000000000000000000000000000000 0C490F4B9847206800210B4B98472068
15d8c6c0: 00000000000000000000000000000000 09210A4B984720680221044B1847FFFF
15d8c6d0: 00000000000000000000000000000000 9D16CD1425A13B15A1A23B155DA13B15
15d8c6e0: 00000000000000000000000000000000 EF130000DD130000CDAD0B1489AE1214
15d8c6f0: 00000000 296B4414

Breve explicacion:

Comentarios:

;W705 R1GA031
;Change way of showing windows "Play mode", "Visualizations", "Visualizations/Visualizations" and "Stereo widening"
;v. fix
;(c) jamesbond22
;(p) Cr@cShoT

Hooks:

14cd1692: 2068022100F06DF82068 014B1847FFFF61C6D815
153ba11c: 7F49A4F091FF2068 004B184777C6D815
153ba298: 2049A4F0D3FE2868 004B184793C6D815
153ba152: 1549A4F076FF20680221 014B1847FFFFB1C6D815

Codigo nuevo:

15d8c660: 00000000000000000000000000000000 20680221204B9847206809211F4B9847
15d8c670: 00000000000000000000000000000000 2068174B18471A491D4B984720680021
15d8c680: 00000000000000000000000000000000 194B984720680921184B98472068114B
15d8c690: 00000000000000000000000000000000 18471349164B984728680021124B9847
15d8c6a0: 00000000000000000000000000000000 28680921114B98472868391C0A4B1847
15d8c6b0: 00000000000000000000000000000000 0C490F4B9847206800210B4B98472068
15d8c6c0: 00000000000000000000000000000000 09210A4B984720680221044B1847FFFF
15d8c6d0: 00000000000000000000000000000000 9D16CD1425A13B15A1A23B155DA13B15
15d8c6e0: 00000000000000000000000000000000 EF130000DD130000CDAD0B1489AE1214
15d8c6f0: 00000000 296B4414

Abrimos Ida, no dirigimos a File/IDC File, y alli buscamos el Applypatch.idc, seleccionamos y nos saldra una ventana buscando nuestro vkp a portar, lo seleccionamos y nos saldra un mensaje como este:

79055

Le daremos que SI y nuestro parche comenzara a aplicarse.

4.- Ahora en el *.vkp iremos al full offset donde inicia nuestro codigo nuevo, en este caso 15d8c660, para ello, presionamos la tecla "G" en el Ida y ponemos ahi nuestro full offset

5.- Comenzamos a analizar con la Tecla "C" el codigo, pero tendremos cuidado con los Entrypoint, ya que esos se analizan con "D"

79056

79057

En las imagenes que les puse, fue solo para referencia... pues muestra de donde a donde se analizo el parche, facilmente uno se da cuenta al mirar los offsets del parche o cuando en el IDA dan solo ceros.

5.- Una vez terminado de analizar todo el codigo nuevo, lo que hares es seleccionar toda la parte analizada, sea con mouse o con Alt+L y desplazarnos por todo el codigo, una vez seleccionado, presionamos Alt+F10 y guardemos nuestro nuestro ASM.

Este es nuestro *.asm


;
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
; º This file is generated by The Interactive Disassembler (IDA) º
; º Copyright (c) 2006 by DataRescue sa/nv, <ida@datarescue.com> º
; º Licensed to: Paul Ashton - Blue Lane Technologies (1-user Advanced 03/2006) º
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
;


; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
LDR R0, [R4]
MOV R1, #2
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R4]
MOV R1, #9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R4]
LDR R3, off_15D8C6D0
BX R3
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
LDR R1, dword_15D8C6E0
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R4]
MOV R1, #0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R4]
MOV R1, #9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R4]
LDR R3, off_15D8C6D4
BX R3
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
LDR R1, dword_15D8C6E0
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R5]
MOV R1, #0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R5]
MOV R1, #9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R5]
ADD R1, R7, #0
LDR R3, off_15D8C6D8
BX R3
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
LDR R1, dword_15D8C6E4
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R4]
MOV R1, #0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R4]
MOV R1, #9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R4]
MOV R1, #2
LDR R3, off_15D8C6DC
BX R3
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
DCB 0xFF
DCB 0xFF
off_15D8C6D0 DCD loc_14CD169C+1 ; DATA XREF: ROM:15D8C672r
off_15D8C6D4 DCD loc_153BA124+1 ; DATA XREF: ROM:15D8C68Er
off_15D8C6D8 DCD loc_153BA2A0+1 ; DATA XREF: ROM:15D8C6ACr
off_15D8C6DC DCD loc_153BA15C+1 ; DATA XREF: ROM:15D8C6CAr
dword_15D8C6E0 DCD 0x13EF ; DATA XREF: ROM:15D8C676r
; ROM:15D8C692r
dword_15D8C6E4 DCD 0x13DD ; DATA XREF: ROM:15D8C6B0r
off_15D8C6E8 DCD loc_140BADCC+1 ; DATA XREF: ROM:15D8C664r
; ROM:15D8C680r ...
off_15D8C6EC DCD loc_1412AE88+1 ; DATA XREF: ROM:15D8C66Cr
; ROM:15D8C688r ...
off_15D8C6F0 DCD loc_14446B28+1 ; DATA XREF: ROM:15D8C678r
; ROM:15D8C694r ...
Para mejor comprension, es mejor quitarle los textos antecedidos de un ";" (comentarios) y de esa forma armar los hooks:


LDR R1, dword_15D8C6E0
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R4]
MOV R1, 0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R4]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R4]
LDR R3, off_15D8C6D4
BX R3

LDR R1, dword_15D8C6E0
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R5]
MOV R1, 0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R5]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R5]
ADD R1, R7, 0
LDR R3, off_15D8C6D8
BX R3

LDR R1, dword_15D8C6E4
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R4]
MOV R1, 0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R4]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R4]
MOV R1, 2
LDR R3, off_15D8C6DC
BX R3

align 4
off_15D8C6D0 dw loc_14CD169C+1
off_15D8C6D4 dw loc_153BA124+1
off_15D8C6D8 dw loc_153BA2A0+1
off_15D8C6DC dw loc_153BA15C+1
dword_15D8C6E0 dw 0x13EF

dword_15D8C6E4 dw 0x13DD
off_15D8C6E8 dw loc_140BADCC+1

off_15D8C6EC dw loc_1412AE88+1

off_15D8C6F0 dw loc_14446B28+1 6.- Ahora armemos los hooks, para hacerlo facilmente, agreguemos un "Org" con el full offsets en Hexadecimal, y como nuestro Parte tiene 4 hooks, agreguemos 4 "Org", mas o menos asi:


include "x.inc" ;<---------- Incluye el archivo necesario a la hora de compilar

Org

Org

Org

Org

;------------------- NEW CODE ----------------------

Org
loc_15d8c660:
LDR R0, [R4]
MOV R1, 2
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R4]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R4]
LDR R3, off_15D8C6D0
BX R3

LDR R1, dword_15D8C6E0
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R4]
MOV R1, 0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R4]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R4]
LDR R3, off_15D8C6D4
BX R3

LDR R1, dword_15D8C6E0
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R5]
MOV R1, 0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R5]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R5]
ADD R1, R7, 0
LDR R3, off_15D8C6D8
BX R3

LDR R1, dword_15D8C6E4
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R4]
MOV R1, 0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R4]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R4]
MOV R1, 2
LDR R3, off_15D8C6DC
BX R3

align 4
off_15D8C6D0 dw loc_14CD169C+1
off_15D8C6D4 dw loc_153BA124+1
off_15D8C6D8 dw loc_153BA2A0+1
off_15D8C6DC dw loc_153BA15C+1
dword_15D8C6E0 dw 0x13EF

dword_15D8C6E4 dw 0x13DD
off_15D8C6E8 dw loc_140BADCC+1

off_15D8C6EC dw loc_1412AE88+1

off_15D8C6F0 dw loc_14446B28+1 7.- Armamos los hooks. Nos ubicamos en el primer hook, en este caso es 14cd1692, vamos al Ida, presionamos "G" nuevamente y colocamos el full offset, ahora analizamos ese codigo con la tecla "C":

79058

Copiamos las instrucciones para que nos quede asi:


Org 0x14CD1692 ; <--- Offset en Hexa, es decir con el 0x por delante
LDR R3, off_14CD1698
BX R3
DCB 0xFF
DCB 0xFF
off_14CD1698 DCD loc_15D8C660+1 ;<---- Enlace con el Codigo nuevo
Haremos lo mismo con los demas hooks hasta que nos quede asi el *.asm:


include "x.inc" ;<---------- Incluye el archivo necesario a la hora de compilar

Org 0x14CD1692
LDR R3, off_14CD1698
BX R3
DCB 0xFF
DCB 0xFF
off_14CD1698 DCD loc_15D8C660+1 ;<---- Enlace al inicio del codigo nuevo


Org 0x153BA11C
LDR R3, off_153BA120
BX R3
off_153BA120 DCD loc_15D8C676+1 ;<---- Enlace al codigo nuevo


Org 0x153BA298
LDR R3, off_153BA29C
BX R3
off_153BA29C DCD loc_15D8C692+1 ;<---- Enlace al codigo nuevo


Org 0x153BA152
LDR R3, off_153BA158
BX R3
DCB 0xFF
DCB 0xFF
off_153BA158 DCD loc_15D8C6B0+1 ;Enlace al codigo nuevo


;------------------- NEW CODE ----------------------

Org 0x15d8c660 ;<--- Aqui deberan poner en donde se iniciara el codigo nuevo
loc_15d8c660:
LDR R0, [R4]
MOV R1, 2
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R4]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R4]
LDR R3, off_15D8C6D0
BX R3
loc_15D8C676: ; Enlace del 2º Hook
LDR R1, dword_15D8C6E0
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R4]
MOV R1, 0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R4]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R4]
LDR R3, off_15D8C6D4
BX R3
loc_15D8C692: ; Enlace del 3º Hook
LDR R1, dword_15D8C6E0
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R5]
MOV R1, 0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R5]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R5]
ADD R1, R7, 0
LDR R3, off_15D8C6D8
BX R3
loc_15D8C6B0: ; Enlace del 4º Hook
LDR R1, dword_15D8C6E4
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R4]
MOV R1, 0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R4]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R4]
MOV R1, 2
LDR R3, off_15D8C6DC
BX R3

align 4
off_15D8C6D0 dw loc_14CD169C+1
off_15D8C6D4 dw loc_153BA124+1
off_15D8C6D8 dw loc_153BA2A0+1
off_15D8C6DC dw loc_153BA15C+1
dword_15D8C6E0 dw 0x13EF

dword_15D8C6E4 dw 0x13DD
off_15D8C6E8 dw loc_140BADCC+1

off_15D8C6EC dw loc_1412AE88+1

off_15D8C6F0 dw loc_14446B28+1 8.- Ahora solo cambiamos los loc_ o sub_ o unk_ por "0x" para compilar y que son los full offsets a portar, asi:


include "x.inc" ;<---------- Incluye el archivo necesario a la hora de compilar

Org 0x14CD1692 ; <--- Para portar
LDR R3, off_14CD1698
BX R3
DCB 0xFF
DCB 0xFF
off_14CD1698 DCD loc_15D8C660+1 ;<---- Enlace al inicio del codigo nuevo


Org 0x153BA11C ; <--- Para portar
LDR R3, off_153BA120
BX R3
off_153BA120 DCD loc_15D8C676+1 ;<---- Enlace al codigo nuevo


Org 0x153BA298 ; <--- Para portar
LDR R3, off_153BA29C
BX R3
off_153BA29C DCD loc_15D8C692+1 ;<---- Enlace al codigo nuevo


Org 0x153BA152 ; <--- Para portar
LDR R3, off_153BA158
BX R3
DCB 0xFF
DCB 0xFF
off_153BA158 DCD loc_15D8C6B0+1 ;Enlace al codigo nuevo


;------------------- NEW CODE ----------------------

Org 0x15d8c660 ;<--- Aqui deberan poner en donde se iniciara el codigo nuevo
loc_15d8c660:
LDR R0, [R4]
MOV R1, 2
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R4]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R4]
LDR R3, off_15D8C6D0
BX R3
loc_15D8C676: ; Enlace del 2º Hook
LDR R1, dword_15D8C6E0
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R4]
MOV R1, 0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R4]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R4]
LDR R3, off_15D8C6D4
BX R3
loc_15D8C692: ; Enlace del 3º Hook
LDR R1, dword_15D8C6E0
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R5]
MOV R1, 0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R5]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R5]
ADD R1, R7, 0
LDR R3, off_15D8C6D8
BX R3
loc_15D8C6B0: ; Enlace del 4º Hook
LDR R1, dword_15D8C6E4
LDR R3, off_15D8C6F0
BLX R3
LDR R0, [R4]
MOV R1, 0
LDR R3, off_15D8C6E8
BLX R3
LDR R0, [R4]
MOV R1, 9
LDR R3, off_15D8C6EC
BLX R3
LDR R0, [R4]
MOV R1, 2
LDR R3, off_15D8C6DC
BX R3

align 4
off_15D8C6D0 dw 0x14CD169C+1 ; <--- Para portar
off_15D8C6D4 dw 0x153BA124+1 ; <--- Para portar
off_15D8C6D8 dw 0x153BA2A0+1 ; <--- Para portar
off_15D8C6DC dw 0x153BA15C+1 ; <--- Para portar
dword_15D8C6E0 dw 0x13EF

dword_15D8C6E4 dw 0x13DD
off_15D8C6E8 dw 0x140BADCC+1 ; <--- Para portar

off_15D8C6EC dw 0x1412AE88+1 ; <--- Para portar

off_15D8C6F0 dw 0x14446B28+1 ; <--- Para portarCosas a cambiar antes de la compilacion:

- Remover los # cuando aparezcan
- ADDS por ADD
- MOVS por MOV
- MOVLS por MOVL
- ADR por adr
- LSRS por LSR
- LSLS por LSL
- 0xFF(x2) por Align 4, Ejemplo:

En el primer hook:


Org 0x14CD1692 ; <--- Para portar
LDR R3, off_14CD1698
BX R3
DCB 0xFF
DCB 0xFF
off_14CD1698 DCD loc_15D8C660+1 ;<---- Enlace al inicio del codigo nuevoDebe quedar asi:


Org 0x14CD1692 ; <--- Para portar
LDR R3, off_14CD1698
BX R3
align 4
off_14CD1698 DCD loc_15D8C660+1 ;<---- Enlace al inicio del codigo nuevoListo!!, ya tenemos el primero paso para comenzar a portar parches.

- Recuerden que trate de hacerlo lo mas sencillo posible, asi que se aceptan criticas o mejores metodos de otros portadores que tenemos en el foro.

Dudas en este tema:

[Discusión] Archivos Assembling (ASM) (http://www.topsony.com/forum_es/discusiones-f207/discusion-archivos-assembling-asm-t125241.html)

Saludos!

albertnet3
26/10/2010, 15:45:39
Y esto seria:
Como poner Nuevo código a un Parche y Como se redirecciona un Parche:

también ahí dos formas de poner el nuevo código a un parche vkp:
1- La mas fácil diría yo fijarse en algún patch addres( ósea donde se ponen que espacio fueron usados para no repetir el mismo espacio usado por otro parche para no generar miss match) y al ultimo espacio usado sumarle en hex. +10.
Ejemplo:
si el ultimo Offset usado en un parche es este:
15d8c660 le sumamos +10 y ya tenemos nuestro espacio sin usar para usarlo en nuestro parche ya sea Port o creado por nosotros mismos y daría como resultado este Offset teniendo en cuenta que ya le sumamos +10 en hex. 15d8c670
2- la otra manera es redireccionando a que me refiero con redireccionar pues es simple se usa como base el Offset del nuevo código y se ase una simple cuenta para obtener nuestro Offset libre para usar en nuestro parche ejemplo:
si el parche del w610-R1CA001 orange
uso como nuevo código este Offset 44298380 y lo queremos redireccionar a nuestro nuevo código ya que ese Offset que se uso en w610 ya esta usado en nuestro w580 R8BE001 y en nuestro teléfono el disponible es este Offset 45C5C700
tenemos que hacer esto si nuestro nuevo código es mayor al nuevo código usado en el parche original (original me refiero al vkp del cual armaron el ASM) se hace la siguiente cuenta con la calculadora de Windows en hex. 45C5C700 -44298380 =19C4380 y a es a este resultado lo pasamos a decimal
HEX=19C4380
DEC=27018112
y se lo sumamos al Offset original del parche quedando así de esta forma:
org 0x44298380+27018112
y al compilar el vkp ya portado saldrá ya redireccionado y saldrá con el nuevo código nuestro

45C5C700: 000000000 topsonytopsony

y si el parche del w610-R1CA001 orange
uso como nuevo código este Offset 45C5C700 y lo queremos redireccionar a nuestro nuevo código ya que ese Offset que se uso en w610 ya esta usado en nuestro w580 R8BE001 y en nuestro teléfono el disponible es este Offset 44298380
tenemos que hacer esto si nuestro nuevo código es mayor al nuevo código usado en el parche original (original me refiero al vkp del cual armaron el ASM) se hace la siguiente cuenta con la calculadora de Windows en hex. 45C5C700 -44298380 =19C4380 y a es a este resultado lo pasamos a decimal
HEX=19C4380
DEC=27018112
y se lo sumamos al Offset original del parche quedando así de esta forma:
org 0x45C5C700 -27018112
y al compilar el vkp ya portado saldrá ya redireccionado y saldrá con el nuevo código nuestro
44298380: 000000000 topsonytopsony

albertnet3
23/11/2010, 18:10:12
como analizar textos en IDA Codificación ASCII y Unicode

Bueno les voy a explicar como analizar los textos en el IDA mayor mente los parches que contienen textos se les dicen strings y pues se analizan donde comienza el texto no se analiza con la tecla "c" ni "D" sino con la tecla "A":
ejemplo así esta en el IDA:



ROM:45CFCF04 4D DCB 0x4D ; M
ROM:45CFCF05 79 DCB 0x79 ; y
ROM:45CFCF06 20 DCB 0x20
ROM:45CFCF07 53 DCB 0x53 ; S
ROM:45CFCF08 68 DCB 0x68 ; h
ROM:45CFCF09 6F DCB 0x6F ; o
ROM:45CFCF0A 72 DCB 0x72 ; r
ROM:45CFCF0B 74 DCB 0x74 ; t
ROM:45CFCF0C 63 DCB 0x63 ; c
ROM:45CFCF0D 75 DCB 0x75 ; u
ROM:45CFCF0E 74 DCB 0x74 ; t
ROM:45CFCF0F 73 DCB 0x73 ; s
ROM:45CFCF10 20 DCB 0x20
ROM:45CFCF11 76 DCB 0x76 ; v
ROM:45CFCF12 31 DCB 0x31 ; 1
ROM:45CFCF13 2E DCB 0x2E ; .
ROM:45CFCF14 31 DCB 0x31 ; 1
ROM:45CFCF15 0A DCB 0xA
ROM:45CFCF16 A9 DCB 0xA9 ; ®
ROM:45CFCF17 20 DCB 0x20
ROM:45CFCF18 61 DCB 0x61 ; a
ROM:45CFCF19 6C DCB 0x6C ; l
ROM:45CFCF1A 62 DCB 0x62 ; b
ROM:45CFCF1B 65 DCB 0x65 ; e
ROM:45CFCF1C 72 DCB 0x72 ; r
ROM:45CFCF1D 74 DCB 0x74 ; t
ROM:45CFCF1E 6E DCB 0x6E ; n
ROM:45CFCF1F 65 DCB 0x65 ; e
ROM:45CFCF20 74 DCB 0x74 ; t
ROM:45CFCF21 33 DCB 0x33 ; 3
ROM:45CFCF22 0A DCB 0xA
ROM:45CFCF23 77 DCB 0x77 ; w
ROM:45CFCF24 77 DCB 0x77 ; w
ROM:45CFCF25 77 DCB 0x77 ; w
ROM:45CFCF26 2E DCB 0x2E ; .
ROM:45CFCF27 74 DCB 0x74 ; t
ROM:45CFCF28 6F DCB 0x6F ; o
ROM:45CFCF29 70 DCB 0x70 ; p
ROM:45CFCF2A 73 DCB 0x73 ; s
ROM:45CFCF2B 6F DCB 0x6F ; o
ROM:45CFCF2C 6E DCB 0x6E ; n
ROM:45CFCF2D 79 DCB 0x79 ; y
ROM:45CFCF2E 2E DCB 0x2E ; .
ROM:45CFCF2F 63 DCB 0x63 ; c
ROM:45CFCF30 6F DCB 0x6F ; o
ROM:45CFCF31 6D DCB 0x6D ; m
Y analizado con la tecla "A" quedaría así:


ROM:45CFCF04 4D 79 20 53+aMyShortcutsV1_ DCB "My Shortcuts v1.1",0xA
ROM:45CFCF04 68 6F 72 74+ DCB "® albertnet3",0xA
ROM:45CFCF04 63 75 74 73+ DCB "www.topsony.com",0
ROM:45CFCF33 FF DCB 0xFF

Esta codificación se llama ASCII
y también puede reemplazar el DCB por db quedando así:


aMyShortcutsV1_ db "My Shortcuts v1.1",0xA
db "® albertnet3",0xA
db "www.topsony.com",0
db 0xFF
Después también puede estar así el texto en codificación unicode:


ROM:45CFCEA8 4D unk_45CFCEA8 DCB 0x4D ; M
ROM:45CFCEA9 00 DCB 0
ROM:45CFCEAA 79 DCB 0x79 ; y
ROM:45CFCEAB 00 DCB 0
ROM:45CFCEAC 20 DCB 0x20
ROM:45CFCEAD 00 DCB 0
ROM:45CFCEAE 45 DCB 0x45 ; E
ROM:45CFCEAF 00 DCB 0
ROM:45CFCEB0 6C DCB 0x6C ; l
ROM:45CFCEB1 00 DCB 0
ROM:45CFCEB2 66 DCB 0x66 ; f
ROM:45CFCEB3 00 DCB 0
ROM:45CFCEB4 73 DCB 0x73 ; s También se puede analizar con la tecla "A" y les quedaría así:


ROM:45CFCEA8 4D 00 aM_0 DCB "M",0
ROM:45CFCEAA 79 00 aY DCB "y",0
ROM:45CFCEAC 20 00 DCB " ",0
ROM:45CFCEAE 45 00 aE DCB "E",0
ROM:45CFCEB0 6C 00 aL DCB "l",0
ROM:45CFCEB2 66 00 aF_0 DCB "f",0
ROM:45CFCEB4 73 00 aS_0 DCB "s",0 Y también pueden reemplazar el DCB por db quedando así:



aM_0 db "M",0
aY db "y",0
db " ",0
aE db "E",0
aL db "l",0
aF_0 db "f",0
aS_0 db "s",0 pero para este tipo de codificación es mejor analizarlo como el tipo de code que es y no con la tecla "A" ya que "A" es para la codificación ASCII y en este caso el tipo de string es unicode entonces deben de analizarlo como unicode parra ello tienen que ir a la opción que esta en su IDA arriba a su izquierda que es una opción de una S entre comillas así "S" dan clic ahí y les dará las opciones que trae el ida para las codificaciones de las strings entonces una ves que están en donde empieza la string en este caso comienza en la M se van a esa opción que les nombre de la "S" y tildan la opción unicode y les analizara el texto de la siguiente forma:

http://img641.imageshack.us/img641/3738/stringm.png



ROM:45CFCEA8 4D 00 79 00+aMyElfs unicode 0, <My Elfs>,0 Una ves que les quedo así deben de limpiarlo para que luego el compilador lo reconozco como texto y les compile reemplazando el unicode por du y reemplazando el 0, < por un " y el > por un " quedándoles así:


aMyElfs du "My Elfs",0