去除警告窗口常用的三种方法是:修改程序的资源、静态分析,动态分析。
去除警告窗口用资源修改工具是个不错的方法,可以将可执行文件中的警告窗口的属性改成透明、不可见,这样就变相去除了警告窗口。
如果是动态跟踪调试,只需找到创建此窗口的代码,跳过即可。常用的显示窗口的函数有MessageBoxA、MessageBoxExA、MessageBeep 、 DialogBoxParamA 、ShowWindow、CreateWindowExA等。然而某些警告窗口用这些断点不管用,就可试试利用消息设断点,一般都应能拦截下来。
例:利用消息断点拦截警告窗口:
切换到SOFTICE下命令: HWND
应看到如下的类似信息:
| Window-Handle | hQueue | SZ | QOwner | Class-Name | Window-Procedure |
| 0080 (0) | 2057 | 32 | MSGSVR32 | #32711 (switch_win) | 17EF:00004B6E |
| 0084 (1) | 2057 | 32 | EXPLORER | shell_trayWnd | 1487:0000016C |
| ... | ... | ... | ... | ... | ... |
在这些列表中查找相关应用程序的窗口句柄。如果NAG窗口上有OK按钮,在class name查找“button”。如果NAG窗口上什么都没有,那可试验找出正确的句柄。句柄列表可能非常长,但通常NAG窗口的句柄一般在列表的前面。
注:在这里推荐用SMU Winspector工具协助破解NAG.它能显示你所需要的信息:Window-Handle, Window-Class Name, Window-Text, Parent Window-Handle, Parent-Window Class Name, Parent Window-Text, Module ...
一但找到NAG窗口的句柄,应用BMSG命令在Windows的消息上下断点。现在假设NAG窗口有OK按钮,你己找到正确的句柄(handle),这时下命令:
BMSG 0084 WM_DESTROY
0084是NAG窗口的句柄(handle)。这条命令是NAG窗口从屏幕上消失时,SoftICE将中断。此时将深入到一些不认识的API函数,可按F12返回程序。需要指出,跟踪的目的是发现NAG窗口在何处初始化(在返回的CALL用设断)。NAG窗口大多用Created/Destroyed类似的CALL,因此如发现这些,就可按需要跟踪下去。
查看关于 加密 解密 的全部文档
| ·VC入门专区 | ·VC高级技术专区 | ||
| ·VC网络通讯编程 | ·VC图像编程 | ||
| ·轻松玩转MFC文档视图架构编程 | |||
| ·深入浅出Win32多线程程序设计 | |||
| ·深入浅出Visual C++动态链接库编程 | |||