如何去除EditPlus 2.10a的NAG
本文僅供初學者參考,因為本人也是初學者。
用ExeScope可以發現,NAG不是以視窗資源的形式存在的,因此用DASM反彙編查詢視窗ID來找出產生NAG的地方的方法是無用的,以前2.00版倒是可以的,只是先去殼,好像是petite加的殼吧。
既然DASM派不上用場,那隻好用除錯工具硬追,關鍵是找到開窗的API函式,
可以注意到editplus的NAG是一個非模式視窗(非模式視窗這個概念大家應該明白吧,有些windows下程式設計能力的人都應該知道,它是相對於模式視窗而言的,不必關閉此視窗就可以做繼續動用程式的其它功能,如文字編輯器中的“查詢字元對話方塊”等等),經過幾次試探,找到一個可用的斷點,
bpx createdialogindirectparama
所需工具,trw200或soft-ice,一個十六進位制編輯器(我用的是Ultra Edit 8.0)
1、用trw2000載入editplus.exe,下斷點,bpx createdialogindirectparama,
2、將被攔下四次,第四次攔下時,下命令,pmodule返回,看到如下程式碼
015F:004A9653 MOV EAX,[EAX+1C]
015F:004A9656 PUSH EBX
015F:004A9657 PUSH DWORD 004A9224
015F:004A965C PUSH EAX
015F:004A965D PUSH DWORD [EBP+08]
015F:004A9660 PUSH DWORD [EBP+10]
015F:004A9663 CALL `USER32!CreateDialogIndirectParamA`
;跳出NAG
015F:004A9669 LEA ECX,[EBP-1C] ;我們停在這裡
015F:004A966C MOV [EBP-18],EAX
015F:004A966F MOV [EBP-04],BL
015F:004A9672 CALL 004AA836
015F:004A9677 JMP SHORT 004A9696
015F:004A9679 MOV ECX,[EBP-2C]
015F:004A967C CALL 004AC642
015F:004A9681 MOV EAX,[EBP-24]
015F:004A9684 OR DWORD [EAX+2C],BYTE -01
3、返回到呼叫此NAG的地方,返回好幾個ret,還要被它嚇住哦!
來到這兒
015F:0042D7ED CALL 0042F570
015F:0042D7F2 JMP 0042D9DD
015F:0042D7F7 CMP EAX,BYTE +6B
015F:0042D7FA JNZ 0042D813 ;此處一定要跳,改成JMP就可以了
015F:0042D7FC PUSH EAX
015F:0042D7FD MOV EAX,[ESI+1C]
015F:0042D800 PUSH EAX
015F:0042D801 CALL `USER32!KillTimer`
015F:0042D807 MOV ECX,ESI
015F:0042D809 CALL 0042D210 ;這個CALL彈出NAG
015F:0042D80E JMP 0042D9DD
015F:0042D813 CMP EAX,BYTE +6D
015F:0042D816 JNZ 0042D88F
015F:0042D818 MOV ECX,[ESI+1C]
015F:0042D81B PUSH EAX
015F:0042D81C PUSH ECX
4、總結:在editplus.exe中,用十六進位制編輯器進行修改
Find:83 F8 6B 75 17 50 8B 46 1C
^^
EB
是不是很容易:)
by mjing,2000/2/16,
E-mail:mjing@wx88.net