- 积分
- 211
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
$Segmented
$Mod167
;MenuFunction
CreateMenu EQU 0xe23416
SetMenu EQU 0xe6777a
GetSelectMenu EQU 0xe678de
UpdateMenu EQU 0xe65e7e
;Address for Patch Data
DLGSTRUCT_Address EQU 0x780760
MAIN_Address EQU 0x7807a0
MENUITEM_Address EQU 0x780820
ONSELECT_Address EQU 0x7808a0
DlgStruct Section Data Byte At DLGSTRUCT_Address
dw 0
dw 0
dw 65h ; 菜单大小,指的是小矩形框
dw 0ah
dw 13f4h ; 图标地址Offset---------------------------------这里我找不到准确地址
dw 0311h ; Page
dw 9c7h ; 菜单文字ID
dw 7FFFh
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 3d2eh ; ---------------------------------这里我找不到准确地址
dw 0387h ; 一些软键及其他的结构,不是很懂!
dw 3d24h ; ---------------------------------这里我找不到准确地址
dw 0387h ; 类似
dw 81h ; 类型设置?
dw 0
dw sof(ItemHandle) ; 菜单项处理
dw seg(ItemHandle+0x800000)
dw pof(MENUITEM_Address); 菜单结构列表
dw pag(MENUITEM_Address+0x800000)
dw pof(ONSELECT_Address); 菜单相应函数列表
dw pag(ONSELECT_Address+0x800000)
dw 7h ; 菜单个数
DlgStruct EndS
Patch Section Code Word At MAIN_Address ; Start Patch at Patch_Address
main proc far ; start main of patch
mov r12, #0
mov r13, #8
loc_B2:
mov [-r0], r12
sub r13, #1
jmpr cc_NZ, loc_B2
mov r13, #pof(DLGSTRUCT_Address)
mov r14, #pag(DLGSTRUCT_Address+0x800000)
mov [-r0], r14
mov [-r0], r13
mov r13, #pof(DLGSTRUCT_Address+0x10)
mov [-r0], r14
mov [-r0], r13
mov r13, #0
mov r14, #0
calls seg(CreateMenu),sof(CreateMenu)
add r0, #18h
rets
main endp
ItemHandle proc far ; start main of patch
mov r2, #0 ; 菜单项处理函数
cmp r14, #0
jmpr cc_Z, loc_EE
mov r2, r14
callr loc_F8
and r2, r1
jmpr cc_Z, loc_EC
mov r2, #1
jmpr cc_UC, loc_EE
loc_EC:
mov r2, #2
loc_EE:
mov [-r0], r2
calls seg(SetMenu),sof(SetMenu)
add r0, #2
rets
ItemHandle endp
loc_F8 proc near
mov r1, #1
sub r2, #1
shl r1, r2
extp #0Ah, #1
mov r2, 3b66h
ret
loc_F8 endp
NewOnSelect proc far ; start main of patch
mov [-r0], r12 ; 菜单相应函数
mov [-r0], r13
calls seg(GetSelectMenu),sof(GetSelectMenu)
mov r2, r4
callr loc_F8
xor r2, r1
extp #0Ah, #1
mov 3b66h, r2
mov r13, [r0+]
mov r12, [r0+]
jmps seg(UpdateMenu),sof(UpdateMenu)
NewOnSelect endp
Patch EndS
;Example for some Table change:
MenuItemTable Section Data Byte At MENUITEM_Address
dw 3d56h,0387h,09c7h,0454h,00,00,00,6h,56eh
dw 3d56h,0387h,0d35h,0d35h,00,00,00,6h,56eh
dw 3d56h,0387h,0d36h,0d36h,00,00,00,6h,56eh
dw 3d56h,0387h,0d37h,0d37h,00,00,00,6h,56eh
dw 3d56h,0387h,0d38h,0d38h,00,00,00,6h,56eh
dw 3d56h,0387h,0d39h,0d39h,00,00,00,6h,56eh
dw 3d56h,0387h,0d40h,0d40h,00,00,00,6h,56eh
MenuItemTable EndS
OnSelect Section Data Byte At ONSELECT_Address
dw 0E70Ch,0CAh
dw sof(NewOnSelect),seg(NewOnSelect+0x800000)
dw sof(NewOnSelect),seg(NewOnSelect+0x800000)
dw sof(NewOnSelect),seg(NewOnSelect+0x800000)
dw sof(NewOnSelect),seg(NewOnSelect+0x800000)
dw sof(NewOnSelect),seg(NewOnSelect+0x800000)
dw sof(NewOnSelect),seg(NewOnSelect+0x800000)
OnSelect EndS
END
这个东东做了 很久也没有太大的进展。我决定放弃了-----
以上是我找到6688手机,应用程序菜单补丁的程序代码,并做相应修改。
我把它贴到这里,有兴趣做补丁的朋友拿去用吧!! |
|