I can not post in the Firmware Tutorials & Guides and I do not know if the Newbie Forum would be the most appropriate.
As porting functions of the library.
What you need:
IDA
http://www.4shared.com/file/49755092/9ddf5...PRO_52.html?s=1
Patsearch (Recommended) or Smelter
http://www.4shared.com/file/60279013/9567d...rified=d179bc52
BytesReverser (Optional)
http://forums.se-nse.net/index.php?showtop...st&p=368414
Babeldr
http://www.4shared.com/file/60278632/6c679...rified=d179bc52
GExtract or Main2raw
http://forums.se-nse.net/index.php?showtopic=6421&hl=
Two mains in the same platform. db2020/db2020 or db2010/db2010
The first of which you have the function and
the second for which you will port the function.
Base address:
CODE
+44140000 - DB2020, W810, W300, W200, Z550 and Z530
+44020000 - W800, K750, W700
+440A0000 - W550 and W600
+44020000 - W800, K750, W700
+440A0000 - W550 and W600
In this example, let's port from the W850 to K800
First place the file babeldr.ldw in the folder IDA/loaders
And convert the second main (K800) to RAW, using GExtract or main2raw.
There is no need to convert the main of W850 to RAW.
Now double click on the first main (w850) and select "Open with ..." and
Select IDA in the list
Make sure that the option "SonyEricsson firmware [babeldr.ldw]" is selected.
In "Processor type" Select "ARM prossessor ARM710a"
Press "SET" and "OK"

Go to Options -> General and set 'Number of opcode bytes' field to 4
Go to Options -> general -> analysis -> processor specific analysis options ->
disable pointer referencing and check this option. Press OK Then click on: -> reanalyze program.
The next step: Options -> Setup data types… and uncheck 1 byte and 2 word then OK.
Press "alt+G" and in "Value" put 1 and OK
Open K800.mbn in IDA, and do the same actions mentioned above...
That is our function:
QUOTE
w850
0C48: 00000000 E9D14045 ; 312: void StringInput_DispObject_SetText(DISP_OBJ *,int StrID);
0C48: 00000000 E9D14045 ; 312: void StringInput_DispObject_SetText(DISP_OBJ *,int StrID);
We need to reverse the order of bytes, so copy the function E9D14045 and paste in BytesReverser (To use the "auto jump" first select the IDA which have the main of W850 opened, then go to BytesReverser and press "Reverse them!")
Or go to the IDA, press "G" and enter the address reverse
Note that our function starts at byte B5.
QUOTE
ROM:4540D1E9 B5 DCB 0xB5 ; Á

Move 1 byte up and press "C" (ROM:4540D1E8 E2) in this case
Select the area and copy "ctrl + C"

Open "Patsearch" and go to "Load ff" and select K800.RAW, not .MBN
And enter the base address 0x44140000 (You can check the base address for your phone on the first lines of IDA or in the table at the beginning of the topic)
Paste the code that you copied in IDA on the patsearch and press "Convert"

Now on all lines where there are 4 bytes, switch the last byte to "??" and press "Search"
You can use the function replacer, of the bytereveser for it

Result
453EC3D8

Now go to the IDA which contains the main of K800
Press "G" and paste the address 453EC3D8
Note that you are already 1 byte above the beginning of the function, so you do not have to move, just press "C".

Now compare both firmwares
W850

k800

Now take the address of the K800 and add +1
453EC3D8+1 = 453EC3D9 and reverse the bytes with bytes reverser
QUOTE
W850
0C48: 00000000 E9D14045 ; 312: void StringInput_DispObject_SetText(DISP_OBJ *,int StrID);
0C48: 00000000 E9D14045 ; 312: void StringInput_DispObject_SetText(DISP_OBJ *,int StrID);
QUOTE
k800
0C48: 00000000 D9C33E45 ; 312: void StringInput_DispObject_SetText(DISP_OBJ *,int StrID);
0C48: 00000000 D9C33E45 ; 312: void StringInput_DispObject_SetText(DISP_OBJ *,int StrID);
PART 2
To port the functions 8xxx, which ends in xxxxxx20 to db2020 and xxxxxx4C to db2010
we have to find some party of the main that uses this address
QUOTE
W850
0AEC: 00000000 50F21620 ;82BB: FONT_DESC *GetFontDesc(void);
0AEC: 00000000 50F21620 ;82BB: FONT_DESC *GetFontDesc(void);
First make the same steps for setting the IDA
In w850 main press "alt+B" and in "string" enter the address separated by spaces between the bytes 50 F2 16 20 and check "Find all occurrences" box.
2 results, We will use the first. Double click on it.

Again press "alt + B", in "string" put "B5", check "Search UP" and uncheck "Find all occurrences" box

Move 1 byte up and press "C"
At the end of the image we can see the address, that we find looking for 50 F2 16 20.
QUOTE
ROM:4547EEC4 50 F2 16 20
And at the end of the line we can see a reference to that address, when we leave the mouse pointer over it
QUOTE
; DATA XREF: ROM:4547EE5C
(yellow box)And starting this address that we will make the selection to the search

Double click in
QUOTE
; DATA XREF: ROM:4547EE5C
, start the selection and copy and paste in Patsearch.
In patsearch press convert and change the last byte of the lines with 4 bytes and press search

Go to the K800 main and press "G" and paste the address 4545DA90.
When you're at 4545DA90, press C
and double click in
QUOTE
dword_4545DAF8

Our address to K800
QUOTE
AC FB 16 20

CODE
W850
0AEC: 00000000 50F21620;82BB: FONT_DESC *GetFontDesc(void);
0AEC: 00000000 50F21620;82BB: FONT_DESC *GetFontDesc(void);
CODE
k800
0AEC: 00000000 ACFB1620;82BB: FONT_DESC *GetFontDesc(void);
0AEC: 00000000 ACFB1620;82BB: FONT_DESC *GetFontDesc(void);
Tips
If you jump into an address and see a graph of the functions, press space to switch to the normal mode

If you reverse the firmware, appear strange codes like this, that means that the party is not in thumb mode.
Press "U" and clivk in "Yes".

This part will be back to normal

Now press "alt+G" and in Value put "1" and press "C"

