wking's blog

  • IT技术
  • 系统封装
  • 大航海时代
  • 日常随笔
  • 关于博客
GOD'S IN HIS HEAVEN, ALL'S RIGHT WITH THE WORLD.
  1. 首页
  2. IT技术
  3. 大航海时代online
  4. 正文

大航海时代online 开启标题栏关闭按钮

2021-08-02 1166点热度 0人点赞 2条评论

大航海时代online这个游戏禁用了标题栏的关闭按钮,只能从游戏里的菜单按钮关闭游戏,也不能直接ALT+F4。关游戏挺不方便的。所以简单修改一下,让游戏窗口启用关闭按钮。

大航海程序是VC++写的,简单搜一下就可以知道

//关闭按钮有效
::EnableMenuItem(::GetSystemMenu(m_hWnd,false),SC_CLOSE,MF_BYCOMMAND | MF_GRAYED);

//关闭按钮无效
::EnableMenuItem(::GetSystemMenu(m_hWnd,false),SC_CLOSE,MF_BYCOMMAND | MF_ENABLED);
————————————————
版权声明:本文为CSDN博主「jiangqin115」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jiangqin115/article/details/76850778

是 EnableMenuItem 函数控制的。再去微软官方文档 https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-enablemenuitem 看看EnableMenuItem函数的原型。函数有三个参数,第一个是菜单句柄不用管;第二个是要改变的菜单项,关闭按钮是SC_CLOSE,但SC_CLOSE在汇编里对应什么值还不知道,稍后再说;第三个是要设置的状态,灰色不可点击就是MF_GRAYED 0x00000001L,要改成MF_ENABLED 0x00000000L。

再看看SC_CLOSE是怎么解释的。WM_SYSCOMMAND 消息 https://docs.microsoft.com/en-us/windows/win32/menurc/wm-syscommand 里面有

SC_CLOSE
0xF060
Closes the window.

好。下面打开x64dbg,载入航海程序,下断点bp EnableMenuItem,F9运行,程序直接断在了这里

bp EnableMenuItem

堆栈里的函数参数2 0019FE0C,正好是F060,对应SC_CLOSE,参数3 0019FE10是1,对应MF_GRAYED。再按一下F9,程序跑起来了,说明程序只调用了这一次EnableMenuItem函数,我们也只需要改一次就行了。如果调用多次,可以用条件断点,用中断表达式 [arg.get(1)]==0000F060。这样只会断下参数2是0000F060的情况。

返回到gvo.005292AB,把push 0x1改成push 0x0就可以了。

0052929B | 6A 01 | push 0x1 | 改0x0
0052929D | 68 60F00000 | push 0xF060 |
005292A2 | FF70 04 | push dword ptr ds:[eax+0x4] |
005292A5 | FF15 6429ED00 | call dword ptr ds:[<&EnableMenuItem>] |

改好保存,打开改好的程序,可以看到生效

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: 大航海时代
最后更新:2021-08-23

wking

不管博客型博主

点赞
< 上一篇
下一篇 >

文章评论

  • lanzou呢

    改好保存,打开改好的程序,可以看到生效

    2021-08-13
    回复
    • wking

      @lanzou呢 OKOK

      2021-08-13
      回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    标签聚合
    一支红杏 大航海时代 wordpress win10 内存 R6300V2 OneNote

    COPYRIGHT © 2023 wkings.blog. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang