PDA

Ver la versión completa : DYN_CONST, Como portar constantes



myrzeug
14/07/2008, 17:44:34
Haré una pequeña explicación del minituto publicado por el gran den_po, sobre como portar constantes, y lo que no se explica

Herramientas:
IDA 5.x
sub/page finder (Plugin para IDA), adjunto
saveevents.elf, adjunto dentro del comprimido

1. Ejecutar saveevents.elf en el telefono y recuperar el archivo Events.txt que se genera
Dicho elf se ejecuta crea una base de ciertas contantes presentes en el dyn_cont, que sirven como guía para el resto..., luego se cierra solo

2. Abrir el firmware en IDA al cual se desea portar las constantes (evidente, como cuando habren para portar parches...)
Luego correr el getevents.idc (Edit->IDC File...), con el Event.txt

3. Correr el plugin y esperar a que termine el proceso
Primero deben pegar el plugin pagesub.plw en C:\...\IDA\Plguins y luego en el IDA ir a Edit->Plugins->sub/page finder

4. Abrir paralelamente en el IDA el firmware del cual se conoce las constantes, correr el plugin y esperar
He aquí la importancia de tener un dyn_const completo y bien portado: El del w850 gracias a IronMaster

5. Ahora deben ir a las direcciones para cada constante en ambos firmwares (lista abajo), comparar la estructura, encontrar las semejanzas y diferencias, y concluir los valores de las constantes

Aqui si nada esta escrito, solo la práctica les permitira acertar con los valores correctos

Aclaración: El plugin, busca estructuras de eventos en todo el firmware, etiquetandolas por evtlst_XXXXX
Al aplicar el archivo Events.txt con el *.idc y corren el plugin, lo que hace es "reconocer algunas de estas constantes (los valores que veran en color verde en el IDA), permitiendo "guiarse" para encontrar el resto de constantes

Lista de direcciones para las constantes:
CALLMANAGER_CALL_END_SET_CALLTIME_EVENT
evtlst_StandbyBook_Base

CALLMANAGER_KILL_CALLBOOK_EVENT
evtlst_DataBrowser_Base
evtlst_MSG_UI_Default

CAMERA_APPLICATION_START_EVENT
RESPONSE_CAMERA_APPLICATION_START

MEDIAPLAYER_APPLICATION_START_EVENT
RESPONSE_MEDIAPLAYER_APPLICATION_START

MISSED_CALL_EVENT
pg_InformBusy::PAGE_ENTER_EVENT
evtlst_MMTApplicationBook_Base

ONGOINGCALL_CALL_CONNECTED_EVENT
evtlst_SetupCall

ONGOINGCALL_CALL_START_EVENT
evtlst_SetupCall
evtlst_Manager_Base
evtlst_UICLH_OGCallBook_Base
evtlst_UICLH_OGCallBook_RetrieveHeld
evtlst_Diverting
evtlst_MTCall_Base
evtlst_InformCallWaiting
evtlst_InformVideoCallWaiting
evtlst_InformMissedCalls

ONGOINGCALL_SET_CALLCOST_EVENT
evtlst_UICLH_OGCallBook_Base

ONGOINGCALL_SET_CALLTIME_EVENT
evtlst_UICLH_OGCallBook_Base

ONGOINGCALL_SPEAKER_ONOFF_EVENT
evtlst_UICLH_OGCallBook_Base

ON_CALLMANAGER_EVENT
evtlst_VC_AnswerRecognition

SOUNDHANDLER_APPLICATION_START_EVENT
RESPONSE_SOUNDHANDLER_APPLICATION_START

UI_CONNECTIONMANAGER_SESSION_ESTABLISHED_EVENT
evtlst_UIConMgr_Default

UI_CONNECTIONMANAGER_SESSION_TERMINATE_EVENT
evtlst_UIConMgr_Default

UI_MEDIAPLAYER_NEXT_TRACK_EVENT
evtlst_MediaPlayer_Audio_Bk_Base
evtlst_MediaPlayer_Video_Base

UI_MEDIAPLAYER_PREV_TRACK_EVENT
evtlst_MediaPlayer_Audio_Bk_Base
evtlst_MediaPlayer_Video_Base

UI_SLEEPMODE_ACTIVATED_EVENT
evtlst_StandbyBook_Base
pg_Screensaver_Sleep::PAGE_ENTER_EVENT


EJEMPLO:
Ilustraré como portar la constante UI_CONNECTIONMANAGER_SESSION_ESTABLISHED_EVENT
del w850 al w810
Bueno, segun la lista debemos ir a evtlst_UIConMgr_Default, esta se encuentra en 45C58F60 (w850) y 445405C0 (W810):
tenemos:
W810
http://img232.imageshack.us/img232/5923/02gb6.png

W850

http://img501.imageshack.us/img501/7791/03ke5.png
El valor de la constante en el W850 es 10D4, en este caso afortunadamente es la primera del bloque, y facilmente concluimos que la que el valor para el w810 es CB9

Discuciones de este tema en [DISCUSION] DYN_CONST, como portar constantes - Top Sony (http://www.topsony.com/forum_es/showthread.php?p=439516#post439516)