欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

XP记事本,状态栏无法选中的修改

XP记事本,状态栏无法选中的修改

发现XP的自动换行功能和状态栏功能就像鱼和熊掌一样不可兼得,于是用初学的知识试着改了一下,改了两晚上,也未成功。今天刚看了EnableMenuItem的结构定义。于是试着改了一下,居然成功了。嘿嘿。
    关于XP记事本,状态栏的无法选中 的修改,论坛好像没有,论坛只有Win7的记事本。希望不算重复。
可以在EnableMenuItem下断修改。
EnableMenuItem函数的结构如下: 
BOOL EnableMenuItem ( 
        HMENU hMenu            // handle to menu resource 
        UINT uIDEnableItem      // menu item to enable, disable or gray 
        UINT uEnable            // menu item flags 
        ); 
在ASM中调用的格式是: 
PUSH    uEnable 
PUSH    uIDEnableItem 
PUSH    hMenu 
CALL    [KERNEL32!EnableMenuItem] 
对于我们来说,重要的是找到那个激活菜单项的标志 

用ResHacker得知状态栏的ID为0x1b
去掉无关的EnableMenuItem调用后。只剩下两个EnableMenuItem
然后,运行全速OD。然后,就要确定是哪个EnableMenuItem了。当我们选中“自动换行”功能后,OD会停在
01002F1E  |> /50            push    eax                              ; |hMenu
01002F1F  |. |FF15 5C120001 call    dword ptr [<&USER32.EnableMenuIt>; \EnableMenuItem
01002F25  |. |E9 3D040000   jmp     notepadx.01003367
跳转来自 010031DA

来到
010031CC  |.  FF15 48120001 call    dword ptr [<&USER32.CheckMenuIte>; \CheckMenuItem
010031D2  |.  6A 01         push    1
010031D4  |.  90            push ebx
010031D5  |.  6A 03         push    3                                ; /Pos = 3
010031D7  |.  57            push    edi                              ; |hMenu
010031D8  |.  FFD6          call    esi                              ; \GetSubMenu
010031DA  |.^ E9 3FFDFFFF   jmp     notepadx.01002F1E
根据enablemenuitem的结构可知。只要Nop掉push ebx即可以让EnableMenuItem 失效。
即010031d4 改为nop 再另存修改。
试验即成功。

小心打击我。我很脆弱。

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功