huajia 发表于 2005-8-11 00:00:00

[原创]如何查找左右软键的字串及按键地址


根据我的研究,发现了左右软键字串及按键地址的一些规律,现将研究结果(以X618为例)公布如下:
一、先在语言文件中查找到左右软键显示的字串的编号(String No.),比如:查看短信时右软键的选项字串为7202及左软键的回复字串为5800。
二、
1、用Siemens Flash Edit软键按下列形式查找:C:\SFE F 3618FULLFLASH.BIN ,00,,00,72,02,,00,,00,58,00
2、得到的结果如下:1. 0x03BE06 (020E:3E06): 2F 00 2F 00 72 02 79 00 79 00 58 00
3、IDA文件的内容如下:
0x083:BE06 2F          unk_83BE06: db2Fh ; 选项的按键代码
0x083:BE07 00                      db    0 ;
0x083:BE08 2F                      db2Fh ; /
0x083:BE09 00                      db    0 ;
0x083:BE0A 72                      db72h ; 选项的字串
0x083:BE0B 02                      db    2 ;
0x083:BE0C 79                      db79h ; 回复的按键代码
0x083:BE0D 00                      db    0 ;
0x083:BE0E 79                      db79h ;
0x083:BE0F 00                      db    0 ;
0x083:BE10 58                      db58h ; 回复的字串
0x083:BE11 00                      db    0 ;
0x083:BE12 78                      db78h ; 发送的按键代码
0x083:BE13 00                      db    0 ;
0x083:BE14 78                      db78h ;
0x083:BE15 00                      db    0 ;
0x083:BE16 BD                      db 0BDh ; 发送的字串
0x083:BE17 01                      db    1 ;
0x083:BE18 35                      db35h ; 移动至档案的按键代码
0x083:BE19 00                      db    0 ;
0x083:BE1A 35                      db35h ;
0x083:BE1B 00                      db    0 ;
0x083:BE1C 4D                      db4Dh ; 移动至档案的图片(具体的编号未知)
0x083:BE1D 4E                      db4Eh ;
0x083:BE1E 2A                      db2Ah ; 删除的按键代码
0x083:BE1F 00                      db    0 ;
0x083:BE20 2A                      db2Ah ;
0x083:BE21 00                      db    0 ;
0x083:BE22 46                      db46h ; 删除的字串
0x083:BE23 01                      db    1 ;
0x083:BE24 35                      db35h ; 保存的按键代码
0x083:BE25 00                      db    0 ;
0x083:BE26 35                      db35h ;
0x083:BE27 00                      db    0 ;
0x083:BE28 D2                      db 0D2h ; 保存的字串
0x083:BE29 01                      db    1 ;
0x083:BE2A 00                      db    0 ;无内容按键代码
0x083:BE2B 00                      db    0 ;
0x083:BE2C 00                      db    0 ;
0x083:BE2D 00                      db    0 ;
0x083:BE2E FE                      db 0FEh ; 无内容字串
0x083:BE2F FF                      db 0FFh ;
0x083:BE30 73                      db73h ; 返回的按键代码
0x083:BE31 00                      db    0 ;
0x083:BE32 73                      db73h ;
0x083:BE33 00                      db    0 ;
0x083:BE34 72                      db72h ; 返回的字串
0x083:BE35 03                      db    3 ;
0x083:BE36 06                      db    6 ; 指向0x033E06
0x083:BE37 3E                      db3Eh ;
0x083:BE38 0E                      db0Eh ;
0x083:BE39 02                      db    2 ;
0x083:BE3A 01                      db    1 ;
0x083:BE3B 00                      db    0 ;
0x083:BE3C 01                      db    1 ; 左软键回复
0x083:BE3D 00                      db    0 ;
0x083:BE3E 00                      db    0 ; 右软键选项
0x083:BE3F 00                      db    0 ;
0x083:BE40 02                      db    2 ; 左软键发送
0x083:BE41 00                      db    0 ;
0x083:BE42 00                      db    0 ; 右软键选项
0x083:BE43 00                      db    0 ;
0x083:BE44 03                      db    3 ; 左软键移动至档案
0x083:BE45 00                      db    0 ;
0x083:BE46 00                      db    0 ; 右软键选项
0x083:BE47 00                      db    0 ;
0x083:BE48 04                      db    4 ; 左软键删除
0x083:BE49 00                      db    0 ;
0x083:BE4A 00                      db    0 ; 右软键选项
0x083:BE4B 00                      db    0 ;
0x083:BE4C 05                      db    5 ; 左软键保存
0x083:BE4D 00                      db    0 ;
0x083:BE4E 02                      db    2 ; 右软键发送
0x083:BE4F 00                      db    0 ;
0x083:BE50 07                      db    7 ; 左软键返回
0x083:BE51 00                      db    0 ;
0x083:BE52 02                      db    2 ; 右软键发送
0x083:BE53 00                      db    0 ;
0x083:BE54 05                      db    5 ; 左软键保存
0x083:BE55 00                      db    0 ;
0x083:BE56 07                      db    7 ; 右软键返回
0x083:BE57 00                      db    0 ;
0x083:BE58 06                      db    6 ; 左软键无功能
0x083:BE59 00                      db    0 ;
0x083:BE5A 07                      db    7 ; 右软键返回

4、再向下可以看到如下内容:
0x083:BE60 54                      db54h ; 这里指向的地址是0xE24A54
0x083:BE61 4A                      db4Ah ;
0x083:BE62 E2                      db 0E2h ;
0x083:BE63 00                      db    0 ;

5 、我们再进入0xE24A54这个地址看看,就发现如下内容:
0x0E2:4A9C             loc_E24A9C:                           ; CODE XREF: 0x0E2:4A8Ej
0x0E2:4A9C DC 49                   extp r9, #1
0x0E2:4A9E D4 C8 02 00             mov r12,
0x0E2:4AA2 48 C1                   cmp r12, #1        ;挂机键
0x0E2:4AA4 EA 20 7A 4B             jmpa cc_Z, loc_E24B7A
0x0E2:4AA8 46 FC 23 00             cmp r12, #23h ; '#'     ;左导航键
0x0E2:4AAC EA 20 7A 4B             jmpa cc_Z, loc_E24B7A
0x0E2:4AB0 46 FC 78 00             cmp r12, #78h ; 'x'         ;发送
0x0E2:4AB4 2D 11                   jmpr cc_Z, loc_E24AD8
0x0E2:4AB6 46 FC 2F 00             cmp r12, #2Fh ; '/'     ;选项
0x0E2:4ABA 2D 19                   jmpr cc_Z, loc_E24AEE
0x0E2:4ABC 46 FC 22 00             cmp r12, #22h ; '"'     ;右导航键
0x0E2:4AC0 2D 16                   jmpr cc_Z, loc_E24AEE
0x0E2:4AC2 46 FC 35 00             cmp r12, #35h ; '5'         ;移动至档案
0x0E2:4AC6 2D 28                   jmpr cc_Z, loc_E24B18
0x0E2:4AC8 46 FC 79 00             cmp r12, #79h ; 'y'         ;回复
0x0E2:4ACC 2D 30                   jmpr cc_Z, loc_E24B2E
0x0E2:4ACE 46 FC 2A 00             cmp r12, #2Ah ; '*'         ;删除
0x0E2:4AD2 2D 38                   jmpr cc_Z, loc_E24B44
0x0E2:4AD4 EA 00 76 4B             jmpa cc_UC, loc_E24B76

6、根据这些地址就可改变左右软键等的功能了及发现很多有用的函数了。
比如:
【Flash修改】修改查看短信时左软键移动至档案的功能

*** 修改查看短信时左软键移动至档案的功能 ***
;适用版本:X618V24
;作者:huajia
;版本:V3
;日期:2004-03-02


;功能:在查看收发件箱短信的状态下,修改了原先左软键的移动至档案为所需的功能。

0x03BE44: 03 0? ;可按下面的代码自行替换

01-回复
02-发送
03-移动至档案
04-删除
05-保存

************************************************************
V2:

0x03BE18: 35 2A
0x03BE1A: 35 2A
0x03BE1C: 4D4E 4601
*******************************************************

V1:
;左软键的图片为705号,请自行用cool_image等软件修改。

0x624B24: E6FF2600 E04FCC00

;下面为左软键图片(显示为删除):

;Changed image ID: 705,Size:84, Format:47x14, ImageInfo:
2B724F:FFFFFFFFFFFFFFFFFFFC01FFFFFFFFFBF9FFFFFF7FF411FFFFFF3FEFE1FFFF801FC005FFFF800FDFC9FFFF801FD6D1FFFFFF3FD0C3FFFFFF7FDFC7FFFFFFFFDFCFFFFFFFFFC01FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF11A1DFFFFFFF55ADAFFFFFFF55AB77FFFFFF55AAFBFFFFFF55AB07FFFFFE00ADDFFFFFFF55AC03FFFFFF55A1DFFFFFFF55AF57FFFFFF55AEDBFFFFFE892D9BFFFFFFFFFFFFFFFFFFFFFFFFFFF

【Flash修改】看短信时右软键功能修改

*** 看短信时右软键功能修改 ***
;适用版本:X618V24
;作者:huajia
;版本:V1
;日期:2004-05-28

;功能:在进入收发件箱查看短信时,右软键会随着光标移动到底部和非底部时变为所需的功能。


;非底部界面:

0x3BE3E: 00 0? ;可按下面的代码自行替换(收件箱)
0x3BE42: 00 0? ;可按下面的代码自行替换(发件箱)

;底部界面:

0x03BE46: 00 0? ;可按下面的代码自行替换

00-选项
01-回复
02-发送
03-移动至档案
04-删除
05-保存

7. 如果找不到调用这些字串和按键值的地址,也可以用下列方式查找:

C:\SFE F E6,F?,AA,BB,E6,F?,CC,DD

C:\SFE F AA,BB,D7,40,CC,DD

;AA,BB为偏移量,CC,DD为页地址

最后,我提供的例子是比较典型的,可能还有一些变化,这需要一定的时间及经验积累。












[此贴子已经被作者于2004-5-28 15:45:58编辑过]

486255xu 发表于 2005-8-11 00:01:00

学习!已收至硬盘!再次感谢!

RainMoon 发表于 2005-8-11 00:02:00

签到,多谢huajia !


在保存号码到SIM电话簿的那一段,你有没有测试其他键值是什么?
另外我发现已拨电话部分虽然可以修改,但却不能保存到SIM,这有点遗憾!

如果以后发现了另一个需要的东西那么也许可以办到。

MrJewes 发表于 2005-8-11 00:03:00

多谢huajia 先生

huajia 发表于 2005-8-11 00:04:00

已更新!

Pinky 发表于 2005-8-11 00:05:00

收到~thanx
下去研究一下的说~

iamhcy 发表于 2005-8-11 00:06:00

唉,你们这些高手,我只有服了你,我按照你的方法,试了一下写新的短消息(左软是T9 Info,右软是Option),怎么就查不出来你说的内容呢?你们这些高手能找出当前输入法的函数或地址吗?
有没有办法使每次进入新短消息时,自动启用中文,而在通讯录中时,自动变成英文?

JunFeng 发表于 2005-8-11 00:07:00

绝对好文,这些地方我正不懂,好好学学的说。回复的人居然就这几个!唉

sOLO 发表于 2005-8-11 00:08:00

我迟到了~~报道~

Ls_king 发表于 2005-8-11 00:09:00

用Siemens Flash Edit软键按下列形式查找:C:\SFE F 3618FULLFLASH.BIN ,00,,00,72,02,,00,,00,58,00
这个软件在那里下载阿

xhjjxm 发表于 2005-8-11 00:10:00

8错.
页: [1]
查看完整版本: [原创]如何查找左右软键的字串及按键地址