爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 3959|回复: 4
收起左侧

[研究]应用程序菜单

[复制链接]
发表于 2005-8-7 00:00:00 | 显示全部楼层 |阅读模式

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

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

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手机,应用程序菜单补丁的程序代码,并做相应修改。
我把它贴到这里,有兴趣做补丁的朋友拿去用吧!!
 楼主| 发表于 2005-8-17 00:00:00 | 显示全部楼层
怎么没有看看吧!真是当垃圾了
发表于 2005-8-17 00:01:00 | 显示全部楼层
先不说!!顶上去先
发表于 2005-8-17 00:02:00 | 显示全部楼层
高手快来显身手啊!
发表于 2005-8-17 00:03:00 | 显示全部楼层
如果可以改成漂亮的菜单也不错哦。
您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

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

GMT+8, 2025-6-9 09:45

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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