突破软件的菜单限制
软件的菜单限制,已经是现在普遍的现象。给人的可望而不可及的感觉,促使人进行付费注册,然后达到开发者的目的。
事实上,我们这里突破菜单限制的软件指试用版和正式版为同一个软件,只是注册后开放了原先禁止的功能。而那种试用版和正式版为两个完全不同的版本,那么大家就没有在一个频道上了。
我们看一下示例程序:
使用OD打开之:
查看解析出来的代码,因为这款软件mene被禁止,我也尤其关注这个字段,于是发现了:
经过调研,原来,要将软件菜单和窗口变为不可用状态,需要使用EnableMenuItem()函数和EnableMenuItem()函数
此例使用EnableMenuItem()函数,我们关注一下这个函数原型:
BOOL EnableMenuItem(
HMENU hMenu, // handle to menu菜单句柄
UINT uIDEnableItem, // menu item to enable, disable, or gray欲允许或禁止的一个菜单的标识符
UINT wEnable // menu item flags控制标志,包括允许0h,灰化1h、禁止2h等等
);
我们可以看到,在004011E3处,控制标志被设置为1h,我们将其设置为0
保存后,重新运行软件: