爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 686|回复: 16
收起左侧

[求助] 键盘灯控制补丁移植CX75的21版问题!!

[复制链接]
发表于 2006-6-27 18:50:47 | 显示全部楼层 |阅读模式

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

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

x
我在论坛上看见有23版键盘灯控制补丁!通过情景模式控制键盘灯!可节约电能!!想自己动手移植,发现以下问题!!
;CX7AV23-S-2005.08.16-Lisugar-KLT-[F:9A5BF0-0x9A5C2B)
;*** 键盘灯控制 v1.0***
;(C) AsteriX
;(R) Lisugar
;(P) StarFriend
;2006-1-23
; For CX7A V23
;
;原理通过不同的情景模式(Profile)改变键盘灯,使用的时候将对应的位置设置成对应的数字就可以,需要机器自动复位有效。
;00 - 正常模式
;01 - 键盘灯一直亮
;02 - 键盘灯一直灭
;
;

0x819B6A: 78F11EE8 8CF145F8
#pragma enable old_equal_ff
0x9A5BF0: 00 ;for Profile 1
0x9A5BF1: 00 ;for Profile 2
0x9A5BF2: 00 ;for Profile 3
0x9A5BF3: 00 ;for Profile 4
0x9A5BF4: 00 ;for Profile 5
0x9A5BF5: 02 ;for Profile 6 第一个自定义模式
0x9A5BF6: 00 ;for Profile 7
0x9A5BF8: 00B5FCB40A4880470006000E09494318
0x9A5C08: 1978FCBC022903D0012902D12D2200E0
0x9A5C18: 00220120012110B4034CA04710BC00BD
0x9A5C28: 79BF79A0F05B9AA0A81B99A0
#pragma disable old_equal_ff


;C6CV53-S-2005.08.29-Lisugar-KLT-[F:800D00-0x800DA0)
;键盘灯控制 v1.0
;原理:通过不同的情景模式(Profile)控制键盘灯,使用的时候将对应的位置设置成对应的数字就可以
;00 - 正常模式
;01 - 键盘灯一直亮
;02 - 键盘灯一直灭
;C)AsteriX R)Lisugar
;C6C V53
0xB2765E: 5BF1BEEE D9F453FB
#pragma enable old_equal_ff
0x800D00: 02 ;for Profile 1
0x800D01: 00 ;for Profile 2
0x800D02: 00 ;for Profile 3
0x800D03: 00 ;for Profile 4
0x800D04: 00 ;for Profile 5
0x800D05: 00 ;for Profile 6 第一个自定义模式
0x800D06: 02 ;for Profile 7
0x800D08: 00B5FCB40A4880470006000E09494318
0x800D18: 1978FCBC022903D0012902D12D2200E0
0x800D28: 00220120012110B4034CA04710BC00BD
0x800D38: 791A8DA0000D80A0DC33C8A0
#pragma disable old_equal_ff

从这两个补丁可以看出来!!补丁的第二部分写入的数据是一样,而且有连续性。应该是调用的程序!第一部分应该是程序的入口!!可以估计只要找到21版FLASH的相应空地址和程序入口即可移植。看了自己的FLASH发现相应的地址竟然给来电黑名单占用了。卸掉!猜想23版的应该是如下!
0x819dce: 78F11EE8 XXXXXXXX
#pragma enable old_equal_ff
0x9A5e54: 00 ;for Profile 1
0x9A5e55: 00 ;for Profile 2
0x9A5e56: 00 ;for Profile 3
0x9A5e57: 00 ;for Profile 4
0x9A5e58: 00 ;for Profile 5
0x9A5e59: 02 ;for Profile 6 第一个自定义模式
0x9A5e5a: 00 ;for Profile 7
0x9A5e5c: 00B5FCB40A4880470006000E09494318
0x9A5e6c: 1978FCBC022903D0012902D12D2200E0
0x9A5e7c: 00220120012110B4034CA04710BC00BD
0x9A5e8c: 79BF79A0F05B9AA0A81B99A0
#pragma disable old_equal_ff

出现一个问题!XXXXXXX写8CF145F8开机死机。估计是调用写入程序地址偏移量不同!!不知道如何计算,不想小8那样DA什么就可以!!
我见识能力有限,如果说错请见谅!!期待高手出招解决,谢谢!如果知道如何计算,我应该可以移植到25版。太好了!!

[ 本帖最后由 coco7689 于 2006-6-27 18:53 编辑 ]
发表于 2006-6-27 19:38:54 | 显示全部楼层
#pragma enable old_equal_ff
.......................................;这个部分占用了空白,也就是原来的FF修改,反汇编出来就能知道到底执行了什么
#pragma disable old_equal_ff

0x819dce: 78F11EE8 XXXXXXXX

XX部分的确定,得反汇编出来看,跳转,让他跳转到相同指令的相应地址即可
得反汇编出来

[ 本帖最后由 watercool 于 2006-6-27 20:13 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2006-6-27 19:55:57 | 显示全部楼层
剩最后一句,没弄完,别刷,谁有23的反汇编出来文件,帮忙搞定



;*** 键盘灯控制 v1.0***
;(C) AsteriX
;(R) Lisugar
;(P) Watercool
;2006-06-27
; For CX7A V21
;
;原理通过不同的情景模式(Profile)改变键盘灯,使用的时候将对应的位置设置成对应的数字就可以,需要机器自动复位有效。
;00 - 正常模式
;01 - 键盘灯一直亮
;02 - 键盘灯一直灭
;
;
0x819DCE: 78F11EE8 8CF145F8
#pragma enable old_equal_ff
0x9A5E54: 00 ;for Profile 1
0x9A5E55: 00 ;for Profile 2
0x9A5E56: 00 ;for Profile 3
0x9A5E57: 00 ;for Profile 4
0x9A5E58: 00 ;for Profile 5
0x9A5E59: 02 ;for Profile 6 第一个自定义模式
0x9A5E5A: 00 ;for Profile 7
0x9A5E5C: 00B5FCB40A4880470006000E09494318
0x9A5E6C: 1978FCBC022903D0012902D12D2200E0
0x9A5E7C: 00220120012110B4034CA04710BC00BD
0x9A5E8C: 79BF79A0F05B9AA0A81B99A0;这句还没弄好,别刷
#pragma disable old_equal_ff

[ 本帖最后由 watercool 于 2006-6-27 20:43 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2006-6-27 20:05:58 | 显示全部楼层
呵呵
xxxxxxxx 肯定是跳转
回复 支持 反对

使用道具 举报

发表于 2006-6-27 20:15:14 | 显示全部楼层
#3 楼我弄了一下,0x9A5E8C: 79BF79A0F05B9AA0A81B99A0;这句还没弄好,别刷

[ 本帖最后由 watercool 于 2006-6-27 20:41 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-27 20:53:31 | 显示全部楼层
太高兴了!!!谢谢版主出手!怀着无比兴奋的心情等待!!!
回复 支持 反对

使用道具 举报

发表于 2006-6-27 21:10:56 | 显示全部楼层
手里没23的反汇编文件,等等哦,不好 意思

我的水平也很初级的

[ 本帖最后由 watercool 于 2006-6-27 21:53 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2006-6-27 21:28:24 | 显示全部楼层
下面是这个补丁的源码:


$arm9e

        GetProfile                        EQU                0xA08D1D0C+1 ;得到当前情景的函数
        CtrKeyLight                        EQU                0xA0C118A0 ;键盘灯控制函数       

AREA   STARTUPCODE, CODE
        CODE16
main:
                                 PUSH    {LR}
                                 PUSH    {R2-R7}
                         LDR     R0, =GetProfile
                         BLX     R0
                         LSL     R0, R0, #24
                         LSR     R0, R0, #24
                         LDR     R1, =0xA08015C0  ;此处为自定义设置的基址,通过对R1寄存器的偏移即可得到不同情景下的设置
                         ADD     R3, R0, R1
                         LDRB    R1, [R3]
                         POP     {R2-R7}
                         CMP     R1, #2
                 BEQ     AlwaysOff
                 CMP     R1, #1
                                 BNE         Normal
AlwaysOn:                              
                 MOV     R2, #0x2D
                                 B       Normal
AlwaysOff:                              
                 MOV     R2, #0
Normal:                              
                 MOV     R0, #1
                 MOV     R1, #1
                                 PUSH        {R4}
                                 LDR         R4, = CtrKeyLight         ;void CtrKeyLight(int a,int b, int flag, unsigned int length)
                 BLX         R4
                                 POP        {R4}

                 POP     {PC}

AREA SETPROFILEHook, CODE, AT 0xA0AE349A ;此处为hook
        CODE16
                 BL      main
END
回复 支持 反对

使用道具 举报

发表于 2006-6-27 21:33:34 | 显示全部楼层
移植这个补丁需要做的工作:
1.对hook进行处理;
2.找到补丁需要的两个函数;
3.找到一段连续空间来放这个补丁.

目前常用的系统补丁,我们以前在移植的时候都给出了反汇编后的源代码,所以此类补丁最好用keil编译,如果不用keil,就要看看所有四字节对其的,以A1或A0开头逆序的数据是否需要处理,这些地址在keil汇编后一般放到补丁的最后
回复 支持 反对

使用道具 举报

发表于 2006-6-27 21:52:27 | 显示全部楼层
多谢 starfriend  的指点,明白 明白,希望新PATCHER 尽快成长,一起努力吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-28 22:59:11 | 显示全部楼层
版主!请问有进展吗?
回复 支持 反对

使用道具 举报

发表于 2006-6-29 10:41:04 | 显示全部楼层
这个补丁是有问题
显示强刷
而且刷进去好象没作用
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-29 18:10:14 | 显示全部楼层
是有作用的!改变情景模式后必须等机自动复位后才有反映!!强刷是和黑名单的地址有重复!
回复 支持 反对

使用道具 举报

发表于 2006-6-29 18:18:57 | 显示全部楼层
我刷过
后来撤消了
回复 支持 反对

使用道具 举报

发表于 2006-8-29 16:21:00 | 显示全部楼层
没有作用!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2006-8-29 18:51:54 | 显示全部楼层
原帖由 starfriend 于 2006-6-27 21:33 发表
移植这个补丁需要做的工作:
1.对hook进行处理;
2.找到补丁需要的两个函数;
3.找到一段连续空间来放这个补丁.

目前常用的系统补丁,我们以前在移植的时候都给出了反汇编后的源代码,所以此类补丁最好用keil编译 ...


敬仰一下!
回复 支持 反对

使用道具 举报

发表于 2006-8-30 09:38:33 | 显示全部楼层
晕了,支持一下~~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 21:44

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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