当前位置: 代码网 > 服务器>网络安全>企业安全 > “QQ反骚扰”开发手记

“QQ反骚扰”开发手记

2009年05月24日 企业安全 我要评论
“QQ反骚扰”开发手记呆在家中上网聊天实在不是一件惬意的事:每一天打开QQ,迎接我的都是一串一串的广告……国庆黄金周,连广告也不放过!:( 无奈,打开Visual C++,开始了我的“反... 09-05-24


就这样,这个广告也被我征服了。其实最困扰我的是第三种广告——qq号为10000的广告。我之所以把它称为“qq号为10000的广告”,就是因为我的“过滤器”就是“10000”。这种广告和“用户????????将你列入好友名单”的系统信息是一样的,所以一不小心就会将重要的信息过滤掉。于是我选中了“10000”作为我的过滤器。

起先我从对话框的外观上判断,写有用户qq号的控件是一个只读(es_readonly)的编辑框(edit),后来我如法炮制代码并编译运行,发现无效!于是“qq反骚扰”的版本号定为1.svof.02,共能消除两种的qq广告。于是我似乎消沉了。不过偶然的一天,在我使用exescope研究另一个软件的时候,我才突然想出了用exescope这位专家来研究一下qq的主程序的办法,然而能否成功,我心里没底。

我打开qq的主程序,找到那个对话框,发现有很多的static(静态文本,delphi及c++ builder中的label)!我的天,我怎么没有想到那是改变了风格的static呢?于是乎三下五除二,我的最后一段代码也问世了:

hwnd hwndyw, hbtnclose3, hedit;
hwndyw = findwindow( null,"系统消息" );
if ( hwndyw != null )
{
hbtnclose3 = findwindowex( hwndyw, null, "button", "返回" );
hedit = findwindowex( hwndyw, null, "static", "10000" );
if ( hedit != null && hbtnclose3 != null )
sendmessage( hbtnclose3, bm_click, 0, 0 );
}


你可以看到,在我的代码中,标识那个static的句柄依然叫hedit,那是因为我先前的判断失误。

“qq反骚扰”v1.svof.12的核心代码就讲到这里了,不过还有一点,就是我的“qq反骚扰”中存在着一个不大不小的bug。大家注意到了吗?第三段代码中,如果碰到标题是10000的静态文本,就向“返回”按钮发送单击消息。这也就意味着如果一个昵称是10000的网友加你为好友,那么他的这条系统信息同样有可能被过滤掉。解决的办法是判断“加为好友”按钮的风格是否为可见(ws_visible),若为不可见,则可以向“返回”按钮发送单击消息了。但是由于我个人时间的问题,这段代码还没有来得及实现,就交给大家了,呵呵。 


后记:和“反骚扰”说再见

“qq反骚扰”是我的vc sdk处女作,我从去年10月份开始写这个软件,之后又经历了很多次升级,到这个“最终版本”——v1.37为止,我终于决定停手了。

原因很简单,qq的版本不断升级,广告的花样也越来越多,这就决定了我不得不一次次地升级这个软件。而现在网上关于“反骚扰”的技巧又有很多,所以我觉得我这么做就有点多此一举了。既然我的目的——学习——达到了,那么再“升级”下去也就失去意义了。

我仍然感谢很多网友,感谢他们对我的信任和对我的关心。我无以回报,决定将这个处女作的源代码倾囊相授,而不再是“核心代码演示版”。是前我的代码是用c++写成的,主要包括了我封装的checkbox类,现在看来那个类十分丑陋,唯恐给诸位带来误导的副作用,于是我花了一些时间,将它用纯c重写了一遍,希望能够满足和我一样的初学者的需要。顺便说一句,这个v1.37几乎对qq2003无能为力。还有,visual studio中自带的工具spy++比我的“对话框查看器”功能要强得多。

ok,那么再见了,我的“qq反骚扰”。





(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com