当前位置: 首页 > news >正文

浅谈显 ipqq 发展历程 【附显 ipqq原理】

               

声明,本文章未经过疯狂绅士与runjin的同意不得转载。


浅谈IPQQ软件的技术发展轨迹

疯狂绅士、RunJin

摘要:本文先给出了IPQQ的界定,并介绍了不同历史时期具有里程碑意义的IPQQ。根据几个具有里程碑意义的IPQQ,作者简要的分析了其技术特点,并以此阐述IPQQ软件的发展轨迹。

关键字:   IPQQ、破解、木子QQ、外挂、珊瑚虫外挂

一、IPQQ历史回顾
QQ作为国内用户量最大的IM,专门针对其发布一些附加功能是一个古老的话题。在QQ的弹出窗口上显示发消息用户IP的变种QQ成为大家最常用的工具,这种工具我们称为IPQQ。
1999年,IPQQ的始祖出现了,是在QQ的前身OICQ时候出现的。邹丹制作的破解版,可以说形式上开创了一个时代。尽管时间过去了好几年,邹丹创立的模式几乎成为了一种标准——密界的标准,以后所有QQ显IP的方式都是继承邹丹显示IP的方式。
邹丹的这一举动,在当时引起了一大片争议声。邹丹也收到了腾讯的律师函,邹丹考虑再三后,退出了为制作IPQQ的行列。 
接下来又有好多个勇士站了出来,其中最有名的是木子。木子的软件非常流行,与邹丹的软件相比,它的框架更好,更稳定,同时支持不同版本的QQ。木子的这个框架影响了大量的刚出道的Cracker,包括本文的作者之一 ——RunJin,其发布的飘云版QQ在一段时期里面被人骂成了剽窃。期间有很多显IP的QQ,说白了都是参考木子的,其中绝大部分根本就是木子的版本,不过是改了几个字或很取巧的换上自己的标签而已。
珊瑚虫前身的出现又是一个里程碑,这东西由Cygwin捣腾出来的。先揭一下Cygwin的老底,此人与疯狂绅士同是水木清华黑客版版主。
珊瑚虫QQ外挂的原型是Cygwin大概用了两天写出来的。这东西的出现让腾讯大为挠头,因为这个软件本身并没有修改QQ的任何程序。它是一个单存的外挂形式,因此避免了相关的法律问题。要说明的是珊瑚虫的历史比木子更早。可以说,珊瑚虫就是紧接着邹丹的版本出现的。这个时期的珊瑚虫完全由soff制作,不过这个时候的珊瑚虫不是外挂形式,同时质量非常高,与一年后出现的木子版相比也毫不逊色。这也是后来Quaful和cygwin找到soff合作的原因。这个时期的珊瑚虫版本因为收到了腾讯的律师信而被迫中止,所以给了后来木子兴起的机会。
由于珊瑚虫外挂不涉及到版权问题,并且其性能优越,导致了珊瑚虫外挂的下载量急剧的增大,从一些网站的分析来看,它甚至超过了QQ本身的下载量。珊瑚虫的成功在于它不断的推出新版本,作者大致统计了一下,从珊瑚虫0.1版到现在的4.0beta版,珊瑚虫一共推出了61个版本(不包括4.0以下的测试版)。正是由于珊瑚虫不懈的努力,使得珊瑚虫外挂声名远扬。
也许是精力的问题,当珊瑚虫的第二任作者soff觉得天天追赶着QQ的新版本而被迫推出一个个新版本觉得实在是很无趣的时候,内心深处对珊瑚虫来一个大变化已经变得很迫切。在外挂思维以及GAIM与Luma QQ等思想的指引下,Soff考虑一种新的方式,这个方式的执行者是Qulful,Qulful卖命的写出了珊瑚虫QQ4.0。
珊瑚虫QQ4.0又是一个里程碑,简单的说,以前的版本只要耐心去检查QQ的内存,总能找到IP地址的入口。因此可以说在珊瑚虫4.0之前的显IP的版本大都是一个简单的Cracker过程,只要能看懂段刚(看雪)《加密与解密》一书,折腾出某个IPQQ不是一见很难的事情。就是做一个外挂形式的IPQQ也并非难事。而珊瑚虫4.0可以说从根本上解决这个问题,它直接截获的是QQ的网络包,从网络包中获取其IP地址的。
从上面的简单的回顾,我们可以看出IPQQ的几个里程碑。
1、邹丹,IPQQ的开山鼻祖,IPQQ形式的确立。
2、木子,IPQQ的中兴,确立其成为修改QQ函数的地址方式的IPQQ的霸主地位。
3、Cygwin,IPQQ的转折,以外挂的形式击败了修改函数地址方式,成为了近两年来事实上IPQQ的霸主。
4、Quaful,思路的拓展,IPQQ也许只是珊瑚虫外挂的一个简单运用而已。

上述四个里程碑中,由于邹丹的版本太久远,这里不作讨论,本文仅就后3个里程碑简单的来分析一下其技术思路,尤其是后两种。

二、木子显IPQQ版本原理简介
与所有的破解软件一样,都有一个原则——点穴。木子与其它所有的IPQQ一样,都是很偷懒的,都是试图只通过修改几个字节,就达到想要的效果。
对于IPQQ来说,能利用QQ原来的功能就利用原来的功能。这似乎是一条铁律。
木子IPQQ,在网上已经可以下载到它的代码。这里只讲解木子IPQQ的部分代码。
SetIP proc
          pushad
          ;=================取得IP地址==================;
          mov   eax,dword ptr [ebp-10h]
          push   offset dwIp
          push   offset szRecentip
          push   eax
          mov   ecx, [eax]
          call   dword ptr [ecx+34h]
          ;=================取得端口号==================;
……
          ;=================取得版本号==================;
……
not2003:           
下面我们再看飘云的IPQQ的代码。
pushad
          ; =================取得IP地址==================;
          mov   eax,dword ptr [ebp-14h]
          push   offset dwIp
          push   offset szRecentip
          push   eax
          mov   ecx,[eax]
          call   dword ptr [ecx+34h]
          cmp   dwIp,0 ;是否已经取得IP
          ……
上面给出了两个不同IPQQ的如何获得IP地址部分的,这两段代码是针对不同版本的QQ。黑体字表示上述的不同地方。
由此我们可以看到,要制作IPQQ核心是找到显示IP的那个函数的入口。这个函数的查找是个关键。而木子的出现其意义在于他给出了一个框架。因此很多后续的IPQQ就更偷懒,他们只是参考木子的版本,在取IP的原理上只要改动一点就可以了。
木子制作的IPQQ可以说是能利用QQ的功能就尽量利用QQ的功能。而很多后来者制作的IPQQ其原则是,能利用木子就尽量利用木子。上述给出的飘云的IPQQ代码就是一个例子。

三、珊瑚虫4.0以下版本原理。
“珊瑚虫最初版很简单的,也参考了之前别人修改的方法,比如版本库就是直接盗用木子的,不过这个版本库盗用不是技术盗用,不被人介意的。”这段话是珊瑚虫的作者Cygwin所说的。
珊瑚虫外挂版本与木子版本比起来最大的不同在于——其利用了钩子的技术,不知道其是否用到了win2k的SDK包,否则这段代码都可以直接参考。是在QQ运行的时候获得了其IP地址的。而不是象木子一样直接给出一个显IP的破解版本。然而,在取得IP的原理上,珊瑚虫和木子是基本相同和飘云的更是非常相象。
下面是珊瑚虫3.16的取IP部分反汇编代码:
mov eax,dword ptr ss:[esp+10]
lea ecx,dword ptr ss:[esp+1C]
push ecx
push DUMPED.01B8D9EC     ; ASCII对应的字符为"dwRecentIP"
mov edx,dword ptr ds:[eax]
push eax
call dword ptr ds:[edx+34]
………………………………………..
mov eax,dword ptr ss:[esp+10]
lea ecx,dword ptr ss:[esp+1C]
push ecx
push DUMPED.01B8D9D8     ; ASCII对应的字符为"dwC2CIP"
mov edx,dword ptr ds:[eax]
push eax
call dword ptr ds:[edx+34]
…………………………………..
mov eax,dword ptr ss:[esp+10]
lea ecx,dword ptr ss:[esp+1C]
push ecx
push DUMPED.01B8D9C8       ; ASCII对应的字符为 "dwIP"
mov edx,dword ptr ds:[eax]
push eax
call dword ptr ds:[edx+34]

虽然寄存器的具体使用不同,但动态调试的时候就会发现,其调用的函数和飘云的是一样的。
珊瑚虫的原理可以用下面的话简要来表达。
1、     绕开原来的流程
2、     获取IP
3、     把自己的窗体挂上QQ的窗体
4、     把获取的IP显示在自己的窗体上
RunJin用softice 、OllyDbg在: win 2000 sp4 , win 98操作系统对 QQ2005贺岁版珊瑚虫外挂进行了分析。
由于win nt 平台和win9x 的差异,珊瑚虫外挂因系统的不同而分开两种工作原理。珊瑚外挂是给QQ的主程序QQ.exe外挂了一个Coralqq.dll,而完成这个工作的就是coralqq.exe .要加载一个dll文件必须是qq.exe。
在win2000/xp下coralqq.exe先创建QQ的进程,同时也就创建了QQ的暂停的主线程,接着往QQ进程的内存写入代码,修改Ntdll.NtTestAlert的代码让程序跳到附加代码处执行,在执行的过程中恢复Ntdll.NtTestAlert处被改了的代码,同时加载Coralqq.dll。
在win9x下,coralqq.exe先创建QQ的进程,同时也就创建了QQ的暂停的主线程,接着在QQ.exe的内存写数据,改写QQ.exe的oep从而达到改变程序流程的目的,让其先执行附加代码,加载Coralqq.dll,加载完后再跳到原来的QQ.exe的oep的下一条指令继续执行。详见RunJin的<<珊瑚虫外挂原理分析>>一文。
从RunJin的分析可以看出,珊瑚虫外挂想得很周到的,它绕开原来QQ的流程也是非常巧妙。当然如何高效的利用钩子大家可以去看相关的文章,这里不再详述。
可以这么说,珊瑚虫最大的特色是,用C++代替原来木子的部分代码。而这段代码的前面部分又是那么的巧妙的绕开了原来QQ的流程。
正如木子版本一样,越来越多的人利用上了一个原则——能用珊瑚虫的功能就尽量利用珊瑚虫的功能。
QQ狂人DIY版是把珊瑚虫外挂注入到QQ.exe里面,以实现直接点QQ.exe就可以直接

http://www.xdnf.cn/news/803413.html

相关文章:

  • HTC Desire|G7 怎么在HBOOT下面卡刷官方ROM
  • 股票交易系统实践指南
  • おとまりせっくす中文在线
  • python之路_day6
  • [原创] 我在全球最大的同性社交平台那点事
  • 双色球概率分析
  • WWDC 2013大会内容
  • 防火墙是什么?防火墙的五个主要功能
  • 年薪过百万?网络信息安全工程师,到底是做什么的?
  • Ps:描边平滑与平滑选项
  • 香港本地电视台简介
  • 浙大博士送外卖事件,180度大反转
  • log4j2 xsd_Log4j 2.x XSD的描述不完整
  • 展现量、点击量、点击率;访客数、访问次数、浏览量的区别与作用
  • EasyX图形库实现贪吃蛇游戏
  • 旅游网络推广的方法有什么?如何在网络营销策略?
  • 软件测试之性能测试概述
  • 二开七色中文视频 图片 小说网站源码模板 苹果cms V10
  • MAPGIS快捷键大全
  • DevEco Studio开发工具下载、安装(HarmonyOS开发)_For Mac
  • らぶデス3 海茶女友3 剧情汉化补丁
  • [转贴] 网络硬盘“G宝盘”使用体验
  • AV终结者病毒全面解读及完整解决方案
  • CMStudio中出现‘$错误‘ is not a vaild integer value如何解决
  • SSM龙腾集团员工信息管理系统39r5l 多样化统计图
  • ceph学习之路----rbd块不能挂载
  • ASP.NET Core基础知识(十一)【Host之Web 主机】
  • 五笔字根口诀
  • 上期技术CTPAPI封装COM组件ctp开放平台openctp环境7_24小时x64组件python_delphi调用演示程序
  • 【转】photoshop CS2安装激活破解教程