爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 11530|回复: 21
收起左侧

让我们猜猜补丁里写些什么

[复制链接]
发表于 2005-12-12 17:56:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
这是一段小补丁:
35EA74: EA0058ED FABFA0B3
1FB3A0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 46FC21003D04DAD692ECFAD532EEFAD5;DAD692EC是SIM卡入口,可替换。
1FB3B0: FFFF 58ED
里面写些什么?

机器码让人看着确实头大,但机器码是人规定的,还是有规律可寻的。补丁就是机器码的表示,每两个字符表示机器里一个字节的内容,VKP格式的补丁一般是这样:
地址:原代码 新代码

让我们把上面补丁一点点分解开来,按16进制来说明:
35EA74: EA0058ED FABFA0B3

35EA74: 这是地址,表示在FLASH文件中从这个地址开始。
EA0058ED 这是旧数据
FABFA0B3 这是新数据,它是什么意思?

FA 4 JMPS seg, caddr,语句占四个字节,是段间跳的意思,接下来的应取出 4 - 1= 3 个字节来作为这句的操作数,应为段和段偏移。
BF A0 B3 三个字节表示跳到BF段,由于高字节在后,所以段偏移为B0A3。
因此:
35EA74: EA0058ED FABFA0B3表示跳到BFB3A0地址。也就是下面的 1FB3A0:因为加载后是加上基址A00000的,1FB3A0 + A00000 = BFB3A0。


下面继续猜,先不管旧数据:
1FB3A0: 46FC21003D04DAD692ECFAD532EEFAD5;DAD692EC是SIM卡入口,可替换。
1FB3B0: 58ED

46 4 CMP reg, #data16 四字节,比较寄存器和立即数
FC 两个字符表示寄存器时,后一个是寄存器名,C表示R12
2100 立即数21
所以:
46 FC 21 00 :         R12和21比大小

3D 2 JMPR cc_NE, rel or cc_NZ, rel,2字节,如果不等则页内跳,距离是下句开始的双字数。
04 比下句多 4 * 2 字节,也就是 1FB3A6 + 8 = 1FB3AE,这是不等时要跳到的地方。

3D 04       :         不等则跳到1FB3AE

DA 4 CALLS seg, caddr  四字节,段间调用,下面取出三字节是操作数
D6 92 EC  表示地址D6EC92,上面有说明,这个地址是SIM卡入口。
因此:
DA D6 92 EC :         如果相等则显示SIM里的内容。
接下来一句:
FA D5 32 EE :         完成后跳到D5EE32地址继续执行。

最后一句,这是比较结果不等时的处理。
FA D5 58 ED :         比较结果不等时,跳到D5ED58执行。

这个例子摘自 ---待机时短按上导航键功能修改(新版)---绿茶

上面说的还不容易明白,其实我们只要多了解一些手机的处理过程就容易理解了,我补充说明一下:
其实从一开始35EA74这个地址是机器检测按键的地方,按键的结果存在R12里,比较R12和21的意思就是看看是不是按了向上键(21h),整个补丁的意思就是如果是按了向上键就查看SIM卡的内容,否则回去处理其它按键。

下面是我整理的常见的操作代码,操作数表示:R--寄存器, N--立即数

代码 命令 占用字节           说明

08 : ADD      2  R    N                < 16
00 : ADD      2  R    R
06 : ADD      4  R    N
01 : ADDB     2  R    R
CA : CALLA    4
AB : CALLI    2
BB : CALLR    2
DA : CALLS    4
48 : CMP      2  R    N                < 16
40 : CMP      2  R    R
46 : CMP      4  R    N
DC : EXTP/S/R 2  N    R
D7 : EXTP/S/R 4         N    N                第二位是操作数=(N mod &hF) - 3
EA : JMPA     4                jmpa        cc_UC
0D : JMPR     2                jmpr        cc_UC
1D : JMPR     2                jmpr        cc_NET
2D : JMPR     2                jmpr        cc_Z        cc_EQ
3D : JMPR     2                jmpr        cc_NZ        cc_NE
4D : JMPR     2                jmpr        cc_V       
5D : JMPR     2                jmpr        cc_NV
6D : JMPR     2                jmpr        cc_N
7D : JMPR     2                jmpr        cc_NN
8D : JMPR     2                jmpr        cc_C        cc_ULT
9D : JMPR     2                jmpr        cc_NC        cc_UGE
AD : JMPR     2                jmpr        cc_SGT
BD : JMPR     2                jmpr        cc_SLE
CD : JMPR     2                jmpr        cc_SLT
DD : JMPR     2                jmpr        cc_SGE
ED : JMPR     2                jmpr        cc_UGT
FD : JMPR     2                jmpr        cc_ULE
FA : JMPS     4
E0 : MOV      2  R    N                < 16
F0 : MOV      2  R    R
98 : MOV      2  R   [R0+]
A8 : MOV      2  R   [R]
88 : MOV      2 [R0]  R
E6 : MOV      4  R    N
F2 : MOV      4  R   [N]
D4 : MOV      4  R   [R+N]
F6 : MOV      4 [N]   R
99 : MOVB     2  R   [R+]
CB : RET      2                        第二位为零
DB : RETS     2                        第二位为零
5C : SHL      2  R    N                寄存器在后
4C : SHL      2  R    R
28 : SUB      2  R    N                < 16
20 : SUB      2  R    R
26 : SUB      4  R    N

这篇文章参考M166ISM.PDF写成,有兴趣的朋友可以看一看,不过是英文,不容易啊,呵呵。

[ 本帖最后由 wwssff 于 2005-12-12 21:19 编辑 ]

评分

参与人数 1实力分 +2 金钱数 +1 收起 理由
comerose + 2 + 1 技术文章

查看全部评分

发表于 2005-12-12 17:59:00 | 显示全部楼层
顶一个先~~~~~前一段学习反汇编,看得很晕T_T
回复 支持 反对

使用道具 举报

发表于 2005-12-12 18:01:24 | 显示全部楼层
转了一圈回来,发现还有板凳

                               
登录/注册后可看大图
坐之~~~
回复 支持 反对

使用道具 举报

发表于 2005-12-12 18:29:22 | 显示全部楼层
430。。把我的板凳也坐了???
回复 支持 反对

使用道具 举报

发表于 2005-12-12 19:25:52 | 显示全部楼层
还好没错过小马扎。。。
回复 支持 反对

使用道具 举报

发表于 2005-12-12 19:26:59 | 显示全部楼层
地板也要坐坐呀
回复 支持 反对

使用道具 举报

发表于 2005-12-12 21:36:53 | 显示全部楼层
顶。。。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2005-12-12 21:38:34 | 显示全部楼层
斑竹捏??????????
回复 支持 反对

使用道具 举报

发表于 2005-12-12 21:57:32 | 显示全部楼层
我也躺躺
回复 支持 反对

使用道具 举报

发表于 2005-12-12 22:16:22 | 显示全部楼层
每次都是高手占前排呀
回复 支持 反对

使用道具 举报

发表于 2005-12-12 23:26:59 | 显示全部楼层
呵呵,签名,,,
回复 支持 反对

使用道具 举报

发表于 2005-12-13 03:30:35 | 显示全部楼层
技术贴要顶啊,要知道,这些都兄弟们的心血啊。
回复 支持 反对

使用道具 举报

发表于 2005-12-13 08:26:47 | 显示全部楼层
好好学习..........

有 个问题请教:
因此:
DA D6 92 EC :         如果相等则显示SIM里的内容。
接下来一句:
FA D5 32 EE :         完成后跳到D5EE32地址继续执行。<---- 为何要这样跳?或者说,为何要跳到那里去,而不是直接加DB00?

[ 本帖最后由 Xinshou 于 2005-12-13 09:44 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2005-12-13 09:34:10 | 显示全部楼层
能在第一排找个座已经很开心了,
收藏之。。。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-13 10:05:54 | 显示全部楼层
原帖由 Xinshou 于 2005-12-13 08:26 发表
好好学习..........

有 个问题请教:
因此:
DA D6 92 EC :         如果相等则显示SIM里的内容。
接下来一句:
FA D5 32 EE :         完成后跳到D5EE32地址继续执行。<---- 为何要这样跳?或者说,为 ...

我猜测是到待机处理吧, 直接RETS会按寄存器的值作功能调用, 会出现不可预测的后果.
回复 支持 反对

使用道具 举报

发表于 2005-12-13 10:12:18 | 显示全部楼层
顶,收藏再说
回复 支持 反对

使用道具 举报

发表于 2005-12-13 11:30:07 | 显示全部楼层
湘西斜是精彩
回复 支持 反对

使用道具 举报

发表于 2005-12-13 15:20:12 | 显示全部楼层
好教程。。谢谢!!
回复 支持 反对

使用道具 举报

teylb 该用户已被删除
发表于 2006-6-15 22:49:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

teylb 该用户已被删除
发表于 2006-6-15 23:22:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2025-7-28 15:50

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表