【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编辑过]
上次贴的内容也放在这里,这是最初创意:
为了给本修改(新短信连续提醒)在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编辑过]
下一个Patch用跳转表! 好主义!规范Patch开发! 支持好友!!!!!!!!!!!!!!
一切正规化!!!!!!!!!!!!!!! 弓虽!! 看不懂也顶!
以下是引用黄豆在2004-2-22 18:29:30的发言:
看不懂也顶!
有理! 好就一个字的说~~ 失败中的失败!
我准备将“倒计时”做到跳转表中,结果“数字时钟”比我的跳转表靠后,结果只好又重用以前的了。
早些有跳转表就好了!(这里调顺序才真正简单!)
还有好些不足,大家提提!
似乎没有必要,有充分的空间可以设置断点。 好,还不会用。 哈哈
虽然自己看不明白
但是还是支持一下! 确实看不懂。
页:
[1]