对《QQ列表精灵》源代码分析和仿制

该软件是本人在2002年根据“腾讯QQ”的“oicq2000.cfg”文件的漏洞,制作的可以更改,编辑,删除登陆列表的程序,并且可以里面的信息得到自动登陆的密码。

发现漏洞:

我们在一台电脑登陆过QQ之后,下次启动QQ的时候就会看到在号码列表的下拉菜单中会出现这个号码,这些号码实际上是保存在QQ安装目录的“dat\oicq2000.cfg”文件里,用记事本打开就可以看到登陆过的号码了。

分析漏洞:

样本:

下面来研究“oicq2000.cfg”这个文件,用任何一个16进制的编辑器打开文件就会看到所有登陆过的号码,它的格式是这个样子的。

例如:00 00 00 00 00 00 00 00 05 00 00 00 06 00 00 00 31 32 33 34 35 36 06 00 00 00 32 32 32 32 32 32

第1位 表示是否有密码,如果你在登陆QQ的时候选择了“记住密码”的话,这个位就是01,否则是00

第2位—>第8位 无内容 00 00 00 00 00 00 00

第9位 表示这个列表文件共有几个号码,之后用三个“00”进行分隔,之后的“05”表示第一个QQ号码的位数,之后在用三个“00”进行分隔,接下来的“31 32 33 34 35 36”表示的是16进制的123456。紧接其后的是下一个号码的位数,如此循环,最后几位就是列表中最后一个QQ号码了。

例如:(这个是带自动记录密码的列表文件的格式)

01 00 00 00 02 00 00 00 92 86 00 00 00 05 00 00 00 06 00 00 00 31 32 33 34 35 36

假设我们的号码123456的密码是my,则它记录的格式如上。

第1位 表示这个列表中含有密码,然后是分隔符号,接下来的“02”表示保存的密码的位数为2位,然后是分隔符,接着的“92 86”就是密码了,我们的密码为“my”,对应的16进制为“6D 79”,对比如下:

92 86

6D 79

原来每一位与下面对应的相加都是“FF”,如 92+6D=FF,86+79=FF,这样我们就可以轻易的将密码破解了。

Delphi实现代码:

下面给出的是不含密码的数据读取过程

procedure getQQList();
 var
  k,i,j:integer;
  cfg:File;
  Number,Weishu,Hao:Byte;//Number
 begin
  assignFile(cfg,'x:\xx\oicq2000.cfg');
  try
   reset(cfg,1);
   k:=8;
   seek(cfg,8);
   Blockread(cfg,Number,1,ret);//读取号码的个数
   inc(k,4);
   for i:=1 to Number do //循环读取各个号码
    begin
     x:='';
     seek(cfg,k);
     Blockread(cfg,Weishu,1,ret);//读取号码的位数
     inc(k,4);
     for j:=1 to Weishu do //循环读取号码
     begin
      seek(cfg,k);
      Blockread(cfg,hao ,1,ret);
      inc(k);
      x:=x+char($+hao);//x中保存就是号码
     end;
     listbox1.items.add(x);
    end;
  end;

关于带密码的列表文件的读取和该过程类似,只是在第一位的时候进行判断就可以了。

到此为止,你就可以自己根据这个原理制作各种各样的列表软件了,比如添加,删除,更改,改变顺序等功能都可以自己设计了,并且还可以自己更改密码,设置自己的登陆密码。好省下的就看你了。

时间: 2024-08-31 23:55:16

对《QQ列表精灵》源代码分析和仿制的相关文章

Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析_Android

     在上一篇文章中,我们分析了Android系统进程间通信机制Binder中的Server在启动过程使用Service Manager的addService接口把自己添加到Service Manager守护过程中接受管理.在这一篇文章中,我们将深入到Binder驱动程序源代码去分析Client是如何通过Service Manager的getService接口中来获得Server远程接口的.Client只有获得了Server的远程接口之后,才能进一步调用Server提供的服务.       

《Android深度探索(卷2):系统应用源代码分析与ROM定制》——第6章,第6.4节分析第一个Android系统应用:计算器

6.4 分析第一个Android系统应用:计算器 Android深度探索(卷2):系统应用源代码分析与ROM定制 本节会分析一个比较简单的Android系统应用:计算器.这个系统应用几乎被包含在所有的ROM中,也是最常用的Android系统应用之一.计算器尽管从功能上看并不复杂,但实际的实现代码还是比较多的,不过大多数代码都用于控制各种效果.布局.历史处理等.这些部分的实现与普通的Android应用没什么不同,所以本节会直接深入计算器的核心:计算表达式.因为不管计算器的外观多绚丽,最终的目的都是

TCPMP源代码分析

TCPMP源代码分析      播放器主要由核心框架模块(common工程)和解码器.分离器插件组成.TCPMP的插件非常多,其中主要的插件有:interface插件实现了TCPMP的界面,ffmpeg是系统主要的音视频解码模块,splitter是媒体文件分离器.      由于ffmpeg的解码效率不高,系统仅使用了ffmpeg的部分功能.并且未使用其中的libavformat模块,而使用splitter模块进行.其他插件暂时没有研究.本周主要分析的是common工程.       commo

016_《Delphi源代码分析》

<Delphi源代码分析> Delphi 教程 系列书籍 (016) <Delphi源代码分析> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Part1 Part2     作者: 周爱民 [作译者介绍] 出版社:电子工业出版社 ISBN:7121003031 上架时间:2004-10-13 出版日期:2004 年9月 开本:16开 页码:350 版次:1-1 内容简介 本书通过对Delphi内核(RTL)源代码进行分析,深入阐述了Delphi内核(R

Android系统默认Home应用程序(Launcher)的启动过程源代码分析

转自 :http://blog.csdn.net/luoshengyang/article/details/6767736    在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还需要有一个Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应用程序就是Launcher了,本文将详细分析Launcher应用程序的启动过程.         Android系统的Home应用程序Launcher是由Activity

QQ验证码识别源代码(C#/NET1.1)

验证码|源代码 QQ验证码识别源代码(C#/NET1.1) using System; namespace QQ{/// <summary>/// yzm 的摘要说明./// </summary>public class yzm{public yzm(public System.Drawing.Bitmap pic){this.bp = pic;}/// <summary>/// 将一个int值存入到4个字节的字节数组(从高地址开始转换,最高地址的值以无符号整型参与&q

FreeBSD 5.0中强制访问控制机制的使用与源代码分析(2)

本文主要讲述FreeBSD 5.0操作系统中新增的重要安全机制,即强制访问控制机制(MAC)的使用与源代码分析,主要包括强制访问控制框架及多级安全(MLS)策略两部分内容.这一部分较系统地对MAC框架及MLS策略的源代码进行分析. 2 MAC框架与MLS策略源代码分析 与本文相关的源代码文件主要有两个,即 /usr/src/sys/kern/kern_mac.c 和 /usr/src/sys/security/mac_mls/mac_mls.c .另外还有一些头文件如mac.h.mac_poli

FreeBSD 5.0中强制访问控制机制的使用与源代码分析(1)

本文主要讲述FreeBSD 5.0操作系统中新增的重要安全机制,即强制访问控制机制(MAC)的使用与源代码分析,主要包括强制访问控制框架及多级安全(MLS)策略两部分内容.这一部分讲述要将MAC框架与MLS策略用起来,应该做的一些工作,以及如何有效使用它们的问题. 强制访问控制(英文缩写MAC)是实现操作系统安全的一个重要的方法,现在几乎所有的安全操作系统都采用强制访问控制作为其核心安全机制之一.强制访问控制是对操作系统的各种客体(如文件.socket.系统FIFO.SCD.IPC等)进行细粒度

slab内存管理源代码分析

学习计算机原理,最好是实践或看高手写的源代码,在一定程度上就不再会感到原理的抽象.关于slab一些原理资料,可以在这里下载或到网站有更多的信息和资料.Slab内存管理机制已被广泛使用,要找到使用slab管理内存的开源代码也不难,如一些OS内核中的内存管理.既然要分析理解slab,最好还是选择复杂度和代码量都不要太大的,在这里我选取了glib-2.12.9的gslice.c实现的slab机制相关代码作为分析对象.注意Glib库是针对用户级的而非OS内核级别的. gslice.c中实现了三种内存分配