- 积分
- 171
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
这是印尼的 RizaPN 大师提供的文章,我只是提供一个中文的对应版本,用到的工具也是他老人家写的
我们做图形菜单时候很需要找到原来菜单对应的函数入口,找函数的方法如下:
首先把你的手机设置成英文的,原因是因为我们只能看得清楚英文的语言资源
然后我以寻找短消息菜单的各个入口为例来讲解
首先看看短消息菜单里面都有什么
New SMS
SMS Signature
Predefined Text
Inbox
Outbox
Voice Message
Cell Broadcast
Message Setup
这些菜单的内容,是通过存储在 flash 里面的菜单数据结构来决定的,每个菜单项的标题都是一个特定的字符串,这个字符串在手机的程序里面是用一个整数的标志符(id)来表示的,而每个菜单项占用的空间是相同的,每个菜单项占用18个字节。如果知道了菜单标题对应的标识符,就可以搜索两条相邻菜单项的标识符来找到菜单结构所在的位置。
俄国人 skylord 作了一个工具,可以从手机的flash 里面取出字符串和其对应标识符的内容,这个工具只能在英文 98 下面用,所以我把弄好了的文件直接传上来,大家就不用再去找ewin98了。
1.lgp::
[upload=rar]viewfile.asp?ID=784[/upload]
这个文件是一个unicode格式的文件,你需要使用支持unicode格式的编辑器来打开它,比如 ultraedit 和 word, 打开以后我们可以看到很多这样的行
LangId 0
String $0, "<91>+List"
String $1, "<95>1 hour"
String $2, "<95>1 day"
String $3, "<95>12 hours"
String $4, "<95>Cancel"
String $5, "<95>Outgoing access"
其中 string $ 后面跟的数字就是这一行里面字符串对应的标识 id
例如 2 对应的是 "1 day" <95> 是格式符可以不用理会
我们在这里面寻找短信菜单中两条相邻菜单项的id, New SMS 和 SMS Signature
结果如下:
有 4 个 id 对应 New SMS , 18e,18f,4f5, 781
有 1 个 id 对应 SMS Signature c43
我们需要在整个 8M flash 寻找对应的菜单项,RizaPN 写了一个工具 fmenu.exe
来简化这个寻找工作
fmenu.exe:
[upload=rar]viewfile.asp?ID=785[/upload]
这是一个命令行的程序,使用方法如下:
fmenu.exe fullflash.bin id1,id2,id3....
第一个参数是你的完整 8M flash备份, 可以用 V_Klay 读出来
后面就是相邻菜单字串 id 的序列了,中间用逗号隔开
因为有多个 id 对应 New SMS 这个字串,
所以我们挨个试验:
fmenu block_00.bin 18e,c43
输出
Found index at address 03AB44
- menu items address : 83AA94
- subroutine address : 83AA74
- number of item : 8 (decimal)
1. 0000 0000 018E 04F5 0000 3794 0283 0003 00D0 => 83AA74: Goto_E0BCDE
2. 0000 0000 0C43 0C43 0000 3794 0283 0003 0559 => 83AA78: Goto_E0BD4A
3. 0000 0000 0236 0235 0000 3794 0283 0003 0559 => 83AA7C: Goto_E0BD52
4. 0000 0000 00B9 04FA 0000 3794 0283 0003 00CB => 83AA80: Goto_E0C0FE
5. 0000 0000 006A 04FB 0000 3794 0283 0003 00CB => 83AA84: Goto_E0C294
6. 0000 0000 01F9 01F8 0000 3794 0283 0003 00E3 => 83AA88: Goto_E0BF54
7. 0000 0000 0098 0097 0000 3794 0283 0003 00E0 => 83AA8C: Goto_E0BF62
8. 0000 0000 04F9 051B 0000 3794 0283 0003 00D9 => 83AA90: Goto_E0C2B8
看来我们运气不错,第一个尝试就找到了,会不会是错误识别呢?
我们来验证一下,注意输出结果的第三列,前两个数就是我们刚才查找的菜单项字串 id
以此类推,后面的应该也是,因此我们在 1.lgp 中寻找第三行的 236 号字串,
String $236, "<95>Predefined text"
就是第三条菜单项的标题,应该说问题不大了,如果你不放心可以继续把后面的都验证一边。
程序输出的最后一列是形如 Goto_XXXXXX 的东西,这个是什么?这个就是我们需要的功能入口地址,赶紧抄下来吧,每一条对应一个菜单项。比如写新短消息的地址就是 E0BCDE 了。
由于西门子手机的 cpu 和 intel pc 的 cpu 一样,都采用 little endian 的字节序,因此在制作 patch 的时候,需要把这个地址两两倒过来输入 patch 里面,例如写新短消息的地址可能需要按照E0DEBC的格式输入。当然,有些图形化的菜单编辑器里面已经做了处理,因此你在编辑这些软件的配置文件增加地址的时候,可以按照原来的格式输入,不用倒过来。
*********************************************************
X618带中文的语言文件(huajia提供)
大家可以使用这个文件,就不再用把手机的语言设为E文了。
以下为X618的语言文件,包括英文、简体中文和语言文件2,方便大家查找字串。
下载:[upload=rar]viewfile.asp?ID=8871[/upload]
字串的使用方法:
String $XYZ--XYZ即为字串的编号,调用是的方法是XYZ -> YZ0X(是零,不是欧)。
比如:String $4, "取消",调用时用0400
String $10, "通讯录",调用时用1000
String $112, "主菜单",调用时用1201
|
|