Nag的本義是煩人的意思。Nag窗口是軟件設計者用來不時提醒用戶購買正式版本的窗口。軟件設計者可能認為當用戶受不了試用版中的這些煩人的窗口時就會考慮購買正式版本。它可能會在程序啟動或退出時彈出來,或者在軟件運行的某個時刻隨機或定時地彈出來,確實比較煩人。 去除警告窗口常用的三種方法是:修改程序的資源、靜態分析,動態分析。
去除警告窗口用資源修改工具是個不錯的方法,可以將可執行文件中的警告窗口的屬性改成透明、不可見,這樣就變相去除了警告窗口。
如果是動態跟蹤調試,只需找到創建此窗口的代碼,跳過即可。常用的顯示窗口的函數有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,因此如發現這些,就可按需要跟蹤下去。
上一篇:軟件保護技術--序列號方式
下一篇軟件保護技術--時間限制
溫馨提示:
凡在本公司進行電路板克隆業務的客戶,必須有合法的PCB設計版權來源聲明,以保護原創PCB設計版權所有者的合法權益;