OICQ登录号码清除器实现原理
OICQ已经成为现在这个网络世界中最为时尚的聊天、即时通讯工具了!对于它,许多程序员都写了些相关小工具,像一些OICQ聊天辅助工具、OICQ密码获取器、聊天记录查看器等等,分别用作于不同的用途。
其时,我也对于QQ这个好东东比较痴迷,但在使用过程始终发现有些情况的出现是我所不愿意看到的。比如说:在网吧上网,疯狂QQ后,你的聊天记录,你的QQ号码全部留在了网吧的机器中。此时,你从网吧离开。又来一位聊QQ者,可能后来的这个人喜欢搞恶作剧,用一些小工具,把你的QQ号码及密码盗取,为已所用。或者看一些你的聊天记录,探清你的隐私,这显然不是你所希望的。可能,此时你会想 ,这没有什么,我只要把QQ号码那个文件夹删除就可以了。是的,这确实是一个好办法,可是这还有一个问题解决不了,就是你的QQ仍会留在QQ登录的对话框中,那么你该怎么办?本文就是介绍如何实现清除登录号码!
我不知道细心的QQ用户注意到没有,在QQ主目录下面有一个DAT文件夹,在此文件夹下有一个名为OICQ2000.cfg文件。该文件就是存有在本台机器上有多少个QQ号码,每个号码的长度值,每一个具体号码!下面详细介绍一下该文件并讲解一下如何用程序实现清除!
以下示例是在作者机器上文件内容:(号码为作者的QQ号文件内容以16进制值表示)
00 00 00 00 00 00 00 01 00 00 00 08 00 00 00 35 33 37 34 38 38 37 36
以上文件内容每两个字位为一个字节
前9个字节是这个机器上共有多少个QQ号,最大值为999999999个(不少吧)接着三个字节为00 00 00 这是分隔符。接着是一个字节数据08,表示当前QQ号码的长度为几位,为08表示为8位,接着又是分隔符,接着用这长度值字节数来存储实际的QQ号码的ASCII码值!如果有多个,就接着在后面存储分隔符(3字节)、QQ号码长度(1字节)、分隔符(3字节)、实际号码,以此类推………….
示例代码如下所示:
struct QQhead
{
unsigned char head[9];//总共有的QQ号码数 9字节
unsigned char spea[3];//分隔符,3字节
}; //oicq2000.cfg文件头结构
QQhead thishead;
//m_filename为要操作的文件名,就是oicq200.cfg,存储的是QQ的完成路径
ofile.Open(m_filename,CFile::modeRead,&fe);//打开oicq2000.cfg文件
ofile.Read (thishead.head,9);// 读出文件头,QQ号码数
long i,sum=0;
int number;
for(i=0;i<8;i++)
{
number=thishead.head[i];
sum=sum+number*10^(7-i);
}//处理QQ号码个数
number=thishead.head[8];
sum=sum+number;
CString str,stritem,leng;
unsigned char len[1];
char stritem1[99];
number=0;
ofile.Read (thishead.spea,3); // 读出分隔符
for(i=0;i<sum;i++)
{
ofile.Read (len,1); //读出该QQ号码长度;
ofile.Read (thishead.spea,3); // 读出分隔符
number=len[0];
ofile.Read (stritem1,number);
stritem1[number]='\0';
CListBox *plist;
plist=(CListBox *)GetDlgItem(IDC_LIST1);
str.Format ("%s",stritem1);
plist->AddString(str); //循环插入列表,并显示出来
}
上面这段代码的是从oicq2000.cfg文件中读取出所有的QQ号码并显示listbox控件中的功能。相信读者已经看明白了!
当然要实现我所做的软件的功能,就是在listbox双击一条QQ号就将其从oicq2000.cfg中去除的功能,读者参考上面的数据结构应该很快就能完成!
知道了以上原理,那我们就可以写出如下代码段来完成从文件中读取和向文件中存入的程序!(示例代码为本人所发布的软件部分代码。QQ登录号码清除器是作者本人写的一个完全共享的QQ小工具,软件下载地址为http://free.tsee.net/acehq/Hidenum.exe。也可以CSDN网站注册软件中找到,链接地址为http://www.csdn.net/cnshare/soft/10/10135.html!软件实现环境为VC++6.0,WINDOWQS 2000 SERVER操作系统,赛扬667,30G硬盘,128M内存