nonlyli 发表于 2005-8-10 00:00:00

【Patch开发】待机Pacth跳转表 V1


上次说到做个“跳转表”的事,因IDLE_ICON_PROCESS函数中被改得太乱,且不好找一个位置来做新Patch。得到RainMoon的肯定后,做了第一版,请Patcher们提建议。

源码就直接帖下来好参考:

$Segmented
$Mod167

;nonlyli(果果'er) 2004.2.22 16:40 1.0制作
;功能:从待机时图标处理函数(IDLE_ICON_PROCESS)跳转到跳转表,再由跳转表跳到相应新程序。
;      为制作这类Patch提供更简洁安全的方法,不必再考虑“补代码”等工作。
;  现准备了10个位置。

;1F7E00跳转表起始地址:
;跳到跳转表:             0x363800:E6F9FFFF DABF007E

;1.跳转到新短信连续提示: 0x1F7E00:FFFFFFFF DABF6084
;2.跳转到倒计时待机:   0x1F7E04:FFFF 0D11
;3.8                            0x1F7E08:                       
;4.12                       0x1F7E0C:                               
;5.16                       0x1F7E10:
;6.20                       0x1F7E14:        ;以下按需要自己添加,现用nop填充。
;7.24                       0x1F7E18:
;8.28                       0x1F7E1C:
;9.32                       0x1F7E20:
;10.36                       0x1F7E24:
;补原指令:               0x1F7028:FFFFFFFF:E6F9FFFF
;跳转回Idle_Icon_Proces0x1F702C:FFFF DB00

PatchBegin        EQU        0x1F7E00
;源码:
patch section code word AT PatchBegin
fun1 proc far
    calls        0BFh,08460h        ;1
    jmpr        cc_UC,TableEnd        ;2
    nop                                ;
    nop                                ;3
    nop                                ;
    nop                                ;4
    nop                                ;
    nop                                ;5
    nop                                ;
    nop                                ;6        两条nop为一条calls的位置。
    nop                                ;
    nop                                ;7
    nop                                ;
    nop                                ;8
    nop                                ;
    nop                                ;9
    nop                                ;
    nop                                ;10
    nop                                ;
TableEnd:
    mov      r9,#0FFFFh                ;补原指令(本PATCH未保存寄存器,因调用的程序都应该处理好该寄存器)
    rets                        ;跳回IDLE_ICON_PRCOESS
fun1 endp
patch ends
End


请Patcher们指正!

VKP及源码:
viewfile.asp?ID=9956




[此贴子已经被作者于2004-2-22 17:18:11编辑过]

nonlyli 发表于 2005-8-10 00:01:00

上次贴的内容也放在这里,这是最初创意:

  为了给本修改(新短信连续提醒)在IDLE_ICON(待机时图标处理)函数中找个位置,几乎没找到!而且0.01版居然跟“自动背景光控制”冲突上了,为解决这个冲突浪费了不少时间!这里代码太乱了![ 感叹太多了:) ],

创意:考虑在这里做个“跳转表”,只用一条跳转到“跳转区”,“跳转区”包含所有新程序的跳转指令,这样就不会这么大家乱找“黄金位置”,彻底降低IDLE_ICON区的楼盘价格,让平民也能轻松享受!

图示:

IDLE_ICON_PROCESS
...
->主跳转(所有新程序的必经之路)---+
                    |
                    |
                   跳转表:calls 数字时钟
                      :calls 新短消息连续提示
                      :calls 等等……
                      :补原指令
                      :rets(返回IDLE_ICON_PROCESS)


第一个跳转表Patch:用跳转表的“短消息连续提醒V4”,测试通过。

VKP帖下:

;跳转表v1
;nonlyli(果果'er) 2004.2.22 17:00

;跳到跳转表
0x363800: E6F9FFFF DABF007E

;若刷过"短消息连续提示V2.V4 则刷以下一句.
;0x363800: DABF6084 DABF007E


0x1F7E00: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DABF60840D11CC00CC00CC00CC00CC00
0x1F7E10: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CC00CC00CC00CC00CC00CC00CC00CC00
0x1F7E20: FFFFFFFFFFFFFFFFFFFFFFFFFFFF CC00CC00CC00CC00E6F9FFFFDB00



[此贴子已经被作者于2004-2-22 17:33:42编辑过]

nonlyli 发表于 2005-8-10 00:02:00

下一个Patch用跳转表!

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

好主义!规范Patch开发!

lishenglyx 发表于 2005-8-10 00:04:00

支持好友!!!!!!!!!!!!!!
一切正规化!!!!!!!!!!!!!!!

BBBar巴戈 发表于 2005-8-10 00:05:00

弓虽!!

黄豆 发表于 2005-8-10 00:06:00

看不懂也顶!

王赚 发表于 2005-8-10 00:07:00

以下是引用黄豆在2004-2-22 18:29:30的发言:
看不懂也顶!


有理!

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

好就一个字的说~~

nonlyli 发表于 2005-8-10 00:09:00

失败中的失败!
我准备将“倒计时”做到跳转表中,结果“数字时钟”比我的跳转表靠后,结果只好又重用以前的了。
早些有跳转表就好了!(这里调顺序才真正简单!)

还有好些不足,大家提提!

toodle 发表于 2005-8-10 00:10:00


似乎没有必要,有充分的空间可以设置断点。

mygod999 发表于 2006-2-4 12:34:27

好,还不会用。

鹤城小太子 发表于 2006-2-11 19:14:09

哈哈

虽然自己看不明白

但是还是支持一下!

konyeth 发表于 2006-8-18 11:28:31

确实看不懂。
页: [1]
查看完整版本: 【Patch开发】待机Pacth跳转表 V1