去除VB程序的程序启动时的NAG窗口,基本原理就是寻找到每珍具窗口的启动顺序,再改变窗口的启顺序就可以了。
具体实列如下: 当程序启动时,会出现一个NAG窗口,如下所示: OD载入程序:EP处 VB程序有个特点-入口点处都是一个PUSH指令,然后一个CALL指令,看JMP 后面跟的MSVBVM50,应该是VB5.0编写的。(如果不是这种情况的话,那么该程序可能被加过壳), PUSH将要压入堆栈的是004067D4,现在我们在数据窗口中定位到这个地址。显示如下: 现在就要用至4C了,也就是从当前定位的地址往后偏移4C,数据窗口CRTL+G,输入4067d4+4c = 406820,显示如下: 数据窗口继续跟踪:00406820处的DWORD值,00406868,内容如下: 这里我们可以看到两块类似的数据,每块50(十六进制)个字节的长度,每块数据的第24(十六进制)个字节处都有一个标志(第一个是01,第二个是00)。该标志指定了每块代码(也就是程序启动后要加载的窗体)出现的顺序,先加载00,也就是我们要去的NAG窗口,再加载01,是主窗口。所以这里我们将各两个标志的值颠倒一下,01改00,00改01,二进制修改,保存文件。 运行测试,NAG窗口去除了。 相关测试程序: