浅谈QQ显ip功能原理
我的图书馆
浅谈QQ显ip功能原理
QQ 显示 IP 已经是一个很老的话题了。这个功能我曾经在珊瑚 QQ 上面见过,后来有一款民间编的QQ插件也提供了,但是那个插件好像在2009 年左右的时候就特别不靠谱了,经常显示对方 IP 是什么美国、马来西亚之类的。由于时间长了,都习惯并且不再用了,也以不再去追究这个问题了。不过直到看到真实有效的QQ显示IP插件再次出现之后,我又对这个东西产生了浓厚的兴趣。&&先说说查到聊天对象 IP 的意义吧。其实和人聊天过程中,如果能知道对方相对准确的IP,比如地域等等,也是能够减少自己受骗的可能。比如,一个人和你聊天的时候,你明明看到他的 IP 在北京,他确偏偏给你说自己在上海,就有必要多思量一下对方的诚信度了。当然也可能是代理作祟,但是我们暂时就不考虑这么复杂了。&&首先我看到能够显示 IP 的两款软件是赛博 QQ 和木头 QQ,不过这两个软件其实都是对QQ 原始文件经过了一次重新打包,并且自制了一些DLL 放到包里面,每次运行它们的QQ的时候就会自动加载这些 DLL,从而让你所看到的五花八门的“扩展”功能,显示 IP 就是其中之一。然而,其实有时候我仅仅就是想要个显示 IP 的功能,但是却只能强迫我用他们的改装版 QQ 是一个郁闷的事情。而且,比较不靠谱的是,在后来分析中我发现:这些改装版的 QQ 对于腾讯 QQ 中的安全检查,如TSEH.DAT、TSEngine.DAT等安全检测模块的加载都有干扰。这么做有两个危害:1、可能会导致安全检查失败,导致你下次运行QQ会强迫升级, &&那些功能极有可能失效(不过好像他们干扰这个模块本来目的应该是防止这种现象的,这点我有点诧异,可能腾讯的机制又改了吧);2、毕竟是 QQ 的安全更新和检查,干扰难免有不良嫌疑。既然我就是要显示对方的IP,为什么不考虑单独提取这项功能呢?另外早在我们发现这两款插件以前,我曾经和同学做过一些简单的实验。在实验室有两台实验用的主机A和 B,我用的是A 机并且打开抓包软件 WireShark。QQ带有传输文件的功能,我觉得那个功能应该是测试得到 IP 的最好机会,于是我向 B 机传输文件,并且让对方接受,为了方便各种测试,我故意传输了个大的文件(至少不是瞬间传完的),然后在 cmd中输入“netstat -ano”查看连接,但是并没有我想象中的同学IP说明至少不是TCP直连。不过在 WireShark 中发现大量 UDP 的包,并且有同学的 IP,这就说明我们抓包的过程中应该着重注意UDP的数据包。所以,尽管那两个QQ改版中,对方HOOK了所有的网络传输函数,我们只需要着重看sendto函数。sendto 函数的原型如下所示:&&int sendto (&&SOCKET s,& && && && && && && && &&&const char FAR * buf,& && && && &&&int len,& && && && && && && && & &&int flags,& && && && && && && &&&&&const struct sockaddr FAR * to,&&&&int tolen& && && && && && && && &);&&&&如果说我们要调查建立的连接,主要应该从参数to入手,那里面包含有IP的结构。&&通过反汇编插件DLL的 sendto钩子函数的代码,我发现它将buf 与一个字符串为 0x030x00 0x01 0x00进行了匹配,如果是匹配的话,就会去求to 中的 IP 地址。&&于是乎,我照着这个插件的办法,自己也同样 HOOK 了这个函数,通过测试和插件得到了相同的效果,代码如下:int __stdcall sendto_new (SOCKET s,char&&FAR * buf,int&&len,int&&flags,struct sockaddr FAR * to,int&&tolen){int iRiRet = ((SENDTO)g_Proc_sendto)(s,buf,len,flags,to,tolen);if( *(DWORD*)buf == 0x && iRet != -1&&){& &//初始化获得IP的一些变量&&struct in_addr IPA&&ULONG ulIPAddr = 0;&&char szTestIP[20] = {0};&&//获得IP地址&&ulIPAddr = *(DWORD*)&to-&sa_data[2];&&memcpy(&IPAddr, &ulIPAddr, 4);&&//如果你获得的IP和全局变量存的不一样,说明是新的窗口,新的IP&&if( strcmp(szLastIP,inet_ntoa(IPAddr))!=0 )&&{& &strcpy(szLastIP, inet_ntoa(IPAddr));& & PRINT("IP Address = %s",szLastIP);& &PRINT("\n");&&}}return iR} &&接下来然后就是怎么触发这个代码了,我相信很多人都听说过“发表情探 IP”的说法吧?另一篇《QQ密码保护原理》http://www.jybase.net/qqxiangguan/.html 事实上这个表情不是 QQ 的默认表情(QQ 的默认表情其实是一种相当于转义字符的东西),这个表情必须是图片,因为图片也是以文件的形式发的,也就是说如果你想要探测对方的 IP,无论是“发图片”还是“传文件”都一样。不过还有个问题就是,如何探测出来,你当前交互的对象是谁呢?这个功能我并没有从插件去探寻,感觉有点复杂。于是我仍然用 WH_CBT 钩子来实现效果,主要检测窗口焦点和激活,代码如下所示:LRESULT __stdcall CBTProcess(int nCode, WPARAM wParam, LPARAM lParam){char szClassName[MAX_PATH] = {0};char szCaption[MAX_PATH] = {0};char szString[MAX_PATH] = {0};switch ( nCode ){&&//窗口销毁,可能是最小化&&case HCBT_DESTROYWND: &&CallNextHookEx(g_CBT_hhk, nCode, (WPARAM)wParam, lParam);&&&&//窗口激活&&case HCBT_ACTIVATE:&&//&&初始化MAX_PAYH长度的ClassName&&memset(szClassName, 0, MAX_PATH);&&GetClassName((HWND)wParam, szClassName, MAX_PATH); & &GetWindowTextA((HWND)wParam, szCaption, MAX_PATH)// 枚举,并且找到TX的QQ 主窗口,最后找到得到ID 号 if ( strcmp(szClassName, "TXGuiFoundation") == 0 )&&{& &//上一次全局变量的名称和这一次不一样的话,说明有新的窗口& &if( strcmp(szLastUserName,szCaption)!=0 )& &{& &//初始化全局变量,开始重新激活窗口& & memset(szLastUserName,0,MAX_PATH);& & strcpy(szLastUserName,szString);& & PRINT("窗口激活%s",szCaption);& &}&&}& &return CallNextHookEx(g_CBT_hhk, nCode, (WPARAM)wParam, lParam);&&&&//设置窗口焦点的时候&&case HCBT_SETFOCUS:&&if ( (HWND)wParam != NULL && // 句柄不为空& & IsWindow((HWND)wParam)&&// 窗口有效& & )&&{&&//&&初始化 & & memset(szClassName, 0, MAX_PATH);& &memset(szString, 0, MAX_PATH);&&//&&寻找ClassName& &GetClassName((HWND)wParam, szClassName, MAX_PATH);& &if ( strcmp(szClassName, "TXGuiFoundation") == 0 )& &{& & GetWindowText( (HWND)wParam, szString, MAX_PATH);& & //获得ID号,并且将其显示出来& & if( strcmp(szLastUserName,szString)!=0 )& & {& &&&memset(szLastUserName,0,MAX_PATH);& &&&strcpy(szLastUserName,szString);& &&&PRINT("窗口焦点%s",szString);& & }& &}&&}&&return CallNextHookEx(g_CBT_hhk, nCode, (WPARAM)wParam, lParam);&&}&&return CallNextHookEx(g_CBT_hhk, nCode, (WPARAM)wParam, lParam);} 效果只能说是差强人意,毕竟我主要是为了在DbgView中打出信息,还没有做成型工具 的打算,示例图如图 2所示: &&最后一个就是IP的查询了,这里软件是利用的向发包进行询问,我们只要组成一个形式如下的数据包,然后再收包中处理关键部分就可以了。数据包的形式如下:POST /cgi-bin/searchip HTTP/1.1Accept: Accept: */*Cache-Control: no-cacheConnection: closeContent-Type: application/x-www-form-urlencodedContent-Length:22Host: Pragma: no-cacheReferer: User-Agent: Mozilla/4.0 ( MSIE 6.0; Windows NT 5.1; )searchip1=11.11.111.11&&这里编程时需要注意,最好不要在sendto中实现它,因为过程比较长,会导致值无法及时返回可能会出错。原作者的方法是采用的创建了个新的线程来实现,我就仅仅用Console来实现演示了。关于发包以及网络部分的东西。详细代码见附件,这里不再多说了。效果如图 3所示:&&写到这里,至少还原显示IP的功能就基本上结束了,但是还有几个地方必须得说明一下,或许也是对“显示IP”这个功能的一些强化性的建议和为了大家后续研究和更新的一些总结吧:(1)作者固定QQ的版本号,甚至以干扰安全升级的方式来运作,也是有道理的。前面我提到过,QQ 一旦升级,这些软件的功能就很可能失效了,如果说你不以代码具体实现,单单从数据包的角度去看,规律还是很明显的。当你往某人发图片(自定义表情)的时候,你们之间会产生大量的UDP 的数据包而且形式相仿,开头可能都是0x03 0x00 0x01 0x00,但是这个并非一层不变。我后来更新了一次 QQ2011,果然那个插件失效了,但是我和一个网友聊天的时候,我给他发了图片,仍然具有之前的那种规律,但是不再是0x03 0x00 0x01 0x00。具体图示如图 4下所示: &&所以这个值并非一层不变的,不过只要知道了这个原理,至少我们可以在必要时候进行调整。(2)并不是通过这种方式就一定能获得对方IP。这个具体深究我也大很清楚,不过好像和对方的网络环境有关。但是还有一种情况就是,比如你已经发过一次图片了。这个是我在后来测试中发现的,有些时候你给对方发图片,只有第一次你在数据包中可以获得大量的关于你和他直接的 IP 进行的 UDP 通信,而之后就再也不会出现了(局域网这种情况特别明显,一会再说)。所以,最好的准确探测对方IP 的办法就是在 DLL 已经注入的时候,再通过聊天发送图片,如果说错掉了这个时机,很可能唯一的解决办法就是重新启动 QQ 了。另外需要强调的是,发送图片探寻IP 的办法不能在对方隐身的状态中成功。(3)局域网情况方面的改进。首先我用PT画了一个简单的图进行说明,图示如图 5所示: &&如果说在局域网中,如果说我是 PC0,我向 WB-PC1 发送图片,其实数据会首先过一次路由器(1841),而且这个时候你所抓到的 IP,其实应该是你网络的出口处 IP,而且这个IP应该和你登陆所显示的“你的IP地址”数值一样。换句话说,如果我们获得的 IP 和自己出口是一样的情况的话,就可以基本确定你们是局域网了。另外,在后续的交互中,基本上就是你们两个直连了,不会再经过路由了。甚至 QQ 在局域网中交互传输文件有一个自己构建的原始IP包,协议都是自己定义的。&&局域网也有一个类似广域网上 UDP 交互的特征码,我这个 QQ 版本是 0x03 0x1C,不过我想不同的版本可能也不会一样。但是遗憾的是局域网的情况比较复杂,我之前说的并没有考虑类似于VLAN 之类的,所谓的不经过路由似乎也武断了点,这个还需要去继续专研。希望本文对大家实现QQ显示 IP并且做出更好的扩展功能有所帮助。
发表评论:
TA的最新馆藏软件介绍:雨晨QQ7.7(16109)去广告显IP绿色版
雨晨QQ7.7(16109)去广告显IP绿色版特色:
1、全新打造的聊天体验,会话窗口支持展示缤纷多彩消息气泡;2、新增“我的收藏”,可收藏文字图片等信息且支持多端同步存储与查看;3、新增“云消息”服务,可跨终端与版本同步查看消息记录;4、鼠标悬停托盘区闪烁的好友头像,可便捷预览好友发送的最新消息;5、主菜单全新设计,分类更清晰、使用更方便;6、设置好配置快速显好友IP;7、老板键CTRL+H快速隐QQ藏界面;8、显示各类终端图标;9、部分不能主动探测的发送语音、视频、远程接通即显;10、屏蔽升级和扫描禁止产生垃圾文件。
雨晨QQ去广告绿色版特色:1、苹果托盘图标2、关联任意文件右键登录3、去广告解压绿化即用4、真人消息声音5、无需申请解压绿化即用 关键字:
下载地址:
如果您发现该软件不能下载,为了保证您快速的下载,推荐使用[网际快车]等专业工具下载. 为确保所下软件能正常使用,请使用[WinRAR v3.8]或以上版本解压本站软件.站内软件都是由网上收集,只供网友学习使用,如果所收集的软件侵犯了您的版权,请告知。赛博QQ 完美显IP
>>正文&&&&
赛博QQ 完美显IP
您是否对珊瑚虫QQ的逝去依然怀念,又是否对彩虹QQ的被封杀而隐隐憾叹,人们似乎已经找不到一款能够完美支持QQ最新版的显IP软件了,而今天小编为大家介绍的赛博QQ显IP软件则是继彩虹QQ后国内率先完美支持最新版QQ的显IP软件,能够很好的在最新版QQ2009上准确显IP,是目前不多的能够在QQ2009上使用的显IP工具,因此受到一大批对QQ显IP功能有需求的朋友的喜爱。目前,赛博QQ显IP软件已经更新至2.5版,兼容腾讯QQSP6,并进一步改进显IP性能,优化用户体验,下面小编就带领大家一起试用赛博QQ最新版,感受一下新版带给我们的强大显IP服务。
点击此处下载 赛博QQ显IP软件 资料:
赛博QQ显IP软件 ***: 赛博QQ显IP软件的***过程非常简单,用户根据***向导的提示,一路单击“下一步”按钮即可轻松完成整个***过程,如图所示。
图1 欢迎***界面 赛博QQ显IP软件的***过程中支持用户自由定义软件的***位置以及自由选择创建快捷方式,如图所示。
图2 选择***位置 赛博QQ显IP软件在***过程中有一个“设置赛博码网址导航为首页”的附加选项,如图所示,建议用户保留默认勾选设置主页。
图3 选择附加任务 当然,用户在***过程中可以手动取消该附加选项的默认勾选,但是如果用户在此不选择该选项的话,在初次运行赛博QQ时,程序会在启动QQ前提示用户设置主页,如图所示,可见,这个附加选择是能够正常使用赛博QQ的必要条件,用户只有同意设置主页才能正常运行赛博QQ。
图4 设置主页提示 如果用户同意设置主页的附加选项,并且***了360安全卫士等安全防护工具,那么可能修改主页的行为会被监控到,此时需要用户为监控到的修改行为放行,如图所示。
图5 允许主页修改 赛博QQ显IP软件的***将在桌面上生成下图所示的快捷图标,用户在使用过程中,如果需要启用显IP功能进行QQ聊天,只需双击这个赛博QQ快捷方式即可启动QQ程序,倘若暂时不需要使用聊天显IP服务,则可以直接双击腾讯QQ快捷方式启动QQ程序。
图6 快捷方式 赛博QQ显IP软件 使用: 若用户所用的QQ2009***在软件的默认路径,那么启动赛博QQ显IP软件,程序将自动定位QQ聊天程序并加载显IP服务,而倘若用户***的QQ程序不是***在默认***路径,则需要用户手动在赛博QQ的设置选项中进行手动设置加载路径,如图所示。
图7 选择QQ路径 赛博QQ显IP软件使用独特的主动探测和被动探测相结合的IP探测技术,实时了解您QQ好友的IP信息和详细地理位置,天南海北四方好友的所在地尽在您掌握。下图所示为使用赛博QQ显IP软件登陆QQ后,将鼠标停放在好友列表框的头像上,在弹出的好友资料框中查看到对方的IP信息,如图所示。
图8 赛博QQ显IP 在使用赛博QQ显IP软件的过程中,用户可能会遇到这样的情况,就是,赛博QQ显IP软件自动探测到的对方资料比较粗略,见图8,我们可以看到赛博自动探测到的好友IP地址非常的粗略。这种情况下,我们可以使用赛博QQ显IP软件提供了一个手动探测服务,以便探测到更加详细而准确的好友IP地址信息。
图9 发送表情前的探测信息 对于未自动嗅探到IP地址的QQ好友或者自动探测到的IP地址信息比较粗略的情况,用户可以选择通过主动发送图片的方式来获取该好友的IP地址,方法很简单,用户只需单击聊天对话窗右上角的笑脸模样的***小头像,即可发送表情轻松探测对方IP。
图10 发送表情后的探测信息9 7 3 1 2 3 4 8 :
赛博QQ显IP软件除了主要提供的是显IP服务,还提供有一个百宝箱,内置多种QQ聊天辅助工具,帮助用户得到更多更好的聊天体验。用户可以通过单击打开的QQ对话框界面左下角的“宝”字打开百宝箱。赛博QQ的百宝箱里提供了辅助、设置、统计以及群发四个模块。
图11 四大模块 赛博百宝箱的辅助模块提供有热门表情、实用查询以及万年历三个实用功能模块,下图所示为热门表情模块,可以看到这里展示了“本周推荐表情”,如图所示。
图12 辅助模块之热门表情 由于界面限制,本周推荐表情比较有限,但是用户可以单击界面右下侧的“查看更多”按钮打开赛博QQ的在线QQ表情下载网页,这里提供有更多更好玩的QQ表情,如图所示。
图13 在线QQ表情 赛博百宝箱的实用查询模块提供有丰富实用的信息查询服务,用户可以输入一个QQ号码查询该号码此刻的在线状态,或者进行IP和手机号归属地查询、国内邮政编码和长途***区号查询等,如图所示。
图14 辅助模块之实用查询 赛博百宝箱中还提供了一个万年历,和其它万年历一样,标识了阳历和阴历,还标识了所有的中外节假日,如图所示。
图15 辅助模块之万年历 赛博QQ支持热键操作,用户可以自定义程序热键进行快捷操作,另外,赛博百宝箱中还提供了一个非常实用的虚拟摄像头功能,相信这个功能对于很多没有摄像头的朋友非常有用,开启虚拟摄像头从而让***妹相信你有摄像头,从而达到和***妹视频的目的。或者,你有摄像头,当你的好友发起了视频请求,想拒绝又不好意思,遇到这种尴尬,您只需将自己的摄像头状态设为无,对方就不会唐突的要求您视频啦。
图16 个性设置 我们知道,QQ程序内置很多聊天相关组件,其中很多组件都是我们很少用的或者根本不会用的,***这些组件无疑是占用系统空间,使用赛博QQ先进的2009组件定制功能,帮QQ来个大瘦身,关闭无关组件,如图所示。
图17 功能定制 另外,用户使用赛博QQ后会发现,关闭QQ聊天框时会有多种动画效果,比如百叶窗、旋转缩小、渐隐渐现等,当然,您如果不喜欢这种退出时的动画特效,可以进入程序的选项设置下的扩展功能模块,手动取消动画效果或者只选定采用某种特定动画效果。另外,用户在此可以启用“一键亲情号”功能,如果你每天与某个人聊的最多,却总得反复翻查QQ好友面板寻找这个人,那么用一键亲情号就可以彻底免除这个烦恼!设置快捷键,就算QQ缩在右下角,一键呼出最常聊的他/她来,聊天就是这么畅快!
图18 扩展功能 默认设置下,在赛博QQ聊天界面右上角显示的聊天IP框内将分别显示上次登陆地址和版本号(见图19),以及“发图探IP”按钮,用户可以进入赛博百宝箱的“聊天框IP条”选项进行自由定制(见图20)。
图19 默认聊天IP框显示形式
图20 聊天框IP条定制选项 赛博QQ提供了统计服务,可以帮助用户轻松掌握您的所有好友的最后登陆情况,以及进行好友关系智能分析,帮助您查到哪些好友把您拉黑或删除了,如图所示。
图21 聊天统计 赛博QQ提供了群发功能,可以帮助用户轻松选取若干需要发送同一消息的QQ好友进行一次性的发送信息,如图所示。
图22 群发服务 另外,赛博QQ除了提供了一个百宝箱外,还提供有一个实用的字体切换服务,让您不用再***任何字体输入软件,就可轻松惬意的输出繁体字、火星文等流行字体.传统一下,打打繁体字;非主流一下,玩***星文,如图所示。
总 结: 试用发现,赛博QQ具有强大的显IP功能,能够完美支持最新版QQ2009,除了提供准确的显IP地址服务,赛博QQ还提供了多种聊天辅助功能,比如虚拟摄像头、强制聊天、好友关系分析等,所有的这些都是QQ聊天过程中需求量极大的功能,喜欢的朋友赶快试用一下吧!
点击此处下载
& 下一篇:
关于我们 | 本站动态 | 广告服务| 商业合作 | 联系方式 | 服务声明 |
版权所有 &