PDA

Ver la versión completa : Como portar funciones?



J0rGe
25/07/2008, 18:36:13
hola
es q tengo una duda...es q hay una cosa q no entiendo
cuando quiero descargar algunos elfs..
dicen q se debe portar funciones...
eso como se hace??
entiendo tooodoo lo q se refiere a los elfs..
menos esto...
aqui un ejemplo
sobre el wallpaper changer,en el primer post:
[ELF] WallpaperChanger - Top Sony (http://www.topsony.com/forum_es/showthread.php?p=440555#post440555)
funciones adicionales

;W610 R6BC002:
+45C3FC00
0A8C: 00000000 B1673745; 2A3: DISP_OBJ* GuiSoftKeys_GetDispObj(void);
0A90: 00000000 D99E3445; 2A4: int Theme_SetImage(int type,int,int,u16* path,u16* fname,int);
aclarenme esas dudas..
gracias :)

DarkSerpen
25/07/2008, 18:50:32
Lo que pasa, es que esos codigos los debes añadir a tu bibliotaca actualizada..... ( parche ), Abres tu parche de tu libreria con el block de notas y añades esas lineas en el lugar que van lo vuelves a aplicar, pero antes debes de sacar la libreriar que tenias y listo......

Esto se hace para que el elf funcione bien...

Saludos y Suerte :a01:

EdPaez
25/07/2008, 19:00:32
Las libs son funciones en el main...
lo que hacen es darle un valor a cada uno porque ciertos elf necesitan invocar funciones internas del celular....
Ahora portarlas ? no es muy facil que digamos...
Yo estoy aprendiendo, espero poder aprender y explicar, pero es una cosa de tiempo y paciencia....si aun no hay funciones puesdes esperar o empezar a aprender....
Necesitas el IDA y el smelter y un buen tutor ;) suerte

J0rGe
25/07/2008, 19:08:15
ha...ok
tiene q ver con las librerias...
entonces...lo puedo actualizar con el elfpack_mod
o no??
y si es asi...como lo puedo actualizar desde el telefono esas lineas??

PD:al agregar estas lineas en el parche...tiene q tener un orden en especifico?
o lo puedo poner al final de toda la lista estas lineas?

itay
25/07/2008, 19:17:50
Funcionan igual que lo parches que tienen las FFFFFFFF.
La ubicacion de donde es el "link" esta invertido de a pares de a 2. Si el link en el main fuera 507C6A hay que sumar la base adress (en la mayoria de los cels es: 44140000), que seria 44647C6A pero hay que invertirlo de a pares:
44647C6A <invertido> 6A7C6444

DarkSerpen
25/07/2008, 19:22:30
Te puedes guiar con lo que aparece primero:

0A8C .............
0A90 ..............

Por ejemplo:
Hasta abajo en el parche aparece esto:

;0A7C: xxxxxxxx yyyyyyyy ; 29F: u16 * wstrcpyn(u16 * dest,u16 * source,int maxlen);
;0A80: xxxxxxxx yyyyyyyy ; 2A0: u16 * wstrchr(u16 * source,u16 chr);
;0A84: xxxxxxxx yyyyyyyy ; 2A1: void GUIObject_HideSoftkeys(void *gui);
;0A88: xxxxxxxx yyyyyyyy ; 2A2: void GUIObject_ShowSoftkeys(void *gui);

Como los codigos que encontraste empiezan asi: 0A8C ......, 0A90 .....
Entonces va asi:

;0A7C: xxxxxxxx yyyyyyyy ; 29F: u16 * wstrcpyn(u16 * dest,u16 * source,int maxlen);
;0A80: xxxxxxxx yyyyyyyy ; 2A0: u16 * wstrchr(u16 * source,u16 chr);
;0A84: xxxxxxxx yyyyyyyy ; 2A1: void GUIObject_HideSoftkeys(void *gui);
;0A88: xxxxxxxx yyyyyyyy ; 2A2: void GUIObject_ShowSoftkeys(void *gui);
0A8C: 00000000 B1673745; 2A3: DISP_OBJ* GuiSoftKeys_GetDispObj(void);
0A90: 00000000 D99E3445; 2A4: int Theme_SetImage(int type,int,int,u16* path,u16* fname,int);

Todos vannen un orden especifico..... ejemplo: 2A0, 2A1, 2A2, 2A3 etc...

Saludos y Suerte :a01:

EdPaez
25/07/2008, 23:27:15
No es necesario ponerlas en un roden especifico, estan organizadas para poder buscarlas mas rapido :D


+45C3FC00
0A8C: 00000000 B1673745; 2A3: DISP_OBJ* GuiSoftKeys_GetDispObj(void);
0A90: 00000000 D99E3445; 2A4: int Theme_SetImage(int type,int,int,u16*path,u16* fname,int);


+45C3FC00
0A90: 00000000 D99E3445; 2A4: int Theme_SetImage(int type,int,int,u16*path,u16* fname,int);
0A8C: 00000000 B1673745; 2A3: DISP_OBJ* GuiSoftKeys_GetDispObj(void);

Ambos son lo mismo y producen lo mismo al parchar.....

Si quieres portar un lib, necesitas MAIN de origen (osea el main en el que estan las funciones a portar), main destino (al cuyal queremos pasar las funciones)
1. Debes convertir ambos main en .idb
2. Inverir el offset: B1673745 quedaria 453767B1
3. Vas a ese offset en el main orgina y determinas la funcion
4. Buscas dicha funcion en el MAIn destino
6. Una ves la tengas, inviertes el offset y esa sera tu nueva lib......

Suena facil, NO lo es....

Sutol
26/08/2008, 22:17:40
Hablando de portar funciones por decir tengo estas faltantes...

swi 0x264
swi 0x281

Como la identifico o convierto? para que queden de esta manera:

ej.
0A8C: 00000000 B1673745; 2A3: DISP_OBJ* GuiSoftKeys_GetDispObj(void);

De lo que me dice elfcheck a lo que tengo que agregar a la lib...

Pakoko
26/08/2008, 22:56:23
buscando esa funcion en otra libreria que si lo tenga 264 y 281

preferentemente si tu telefono es db2020 baja la del w850 que es la que mas rapido se actualiza gracias a Iron Master

a otra cosa si tu telefono es db2010 y no tienes una linea preferible busca una lib de un db2010 para portar por que de db2020 a db2010 o viceversa es muy dificil

necesitas tener el Ida (es como una coka en el desierto xD)

Sutol
27/08/2008, 18:27:50
Pero solo la busco asi como 264 o 281?...

No se debe hacer alguna operacion para que me quede de la forma que digo?...

ts005
27/08/2008, 18:55:50
Pero solo la busco asi como 264 o 281?...

No se debe hacer alguna operacion para que me quede de la forma que digo?...

Solo es necesario portarla ya han explicado basicamente el proceso, la identifucacion te la explico con tus funciones y el ejemplo

swi 0x264
swi 0x281



0A8C: 00000000 B1673745; 2A3; DISP_OBJ* GuiSoftKeys_GetDispObj(void);
offset codigo entrypoint swi descripcion de la funcion
antiguo

La descripcion y el offset los obtienes de tu lib (tambien la base de la lib) cuando no esta presente la funcion por lo general solo la comentan anteponiendo ;
ademas de poner valores como xxxxxxxx yyyyyyyy pero si esta la descripcion
Ej.


;0B90: xxxxxxxx yyyyyyyy ; 2E4: FILEITEM *FILEITEM_CreateCopy (FILEITEM *);


Ya que la tengas portada solo es cambiar las xxxxxxxx por 00000000 en caso de DB2020 o FFFFFFFF en caso de DB2010 y las yyyyyyyy por el entrypoint con el clasico byteswamped que ya explico itay.

saludos