功能限制的程序 【习题】
这种程序一般是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。 |