如何去除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
- 标 题:除editplus 2.10a的NAG(供初学者参考) (2千字)
- 作 者:mjing
- 时 间:2001-2-16 14:05:54
- 链 接:http://bbs.pediy.com