功能限制的程序  【习题】

  这种程序一般是DEMO版或菜单中部分选项是灰色。有些DEMO版本的部分功能里面根本就没有。而有些程序功能全有,只要注册后就正常了。

  你使用这些DEMO程序部分被禁止的功能时,会跳出提示框,说这是DEMO版等话,它们一般都是调用MessageBox[A]DialogBox[A]等函数。你可在W32DASM反汇编它,一般能找到如下字符串:"Function Not Avaible in Demo" 或 "Command Not Avaible" 或 "Can't save in Shareware/Demo"等,这些CALL会被相应的调用,可作为你破解的一指示器。

  另外,就是菜单中部分选项是灰色的不能用,一般它们是通过如下两种函数实现的:

(1)EnableMenuItem

允许、禁止或变灰指定的菜单条目
BOOL EnableMenuItem(
HMENU hMenu, // 菜单句柄
UINT uIDEnableItem, // 菜单ID,形式为:充许,禁止,或灰
UINT uEnable //菜单项目旗帜
);

Returns
在ASM代码形式如下:
PUSH uEnable    //uEnable=0 则菜单选项允许
PUSH uIDEnableItem
PUSH hWnd
CALL [KERNEL32!EnableMenuItem]

(2)EnableWindow

允许或禁止鼠标和键盘控制指定窗口和条目(禁止时菜单变灰)
BOOL EnableWindow(
HWND hWnd, // 窗口句柄
BOOL bEnable // 允许/禁止输入
);
Returns
如窗口以前被禁止则返回一TRUE,否则返回 FALSE