显IP的<a target=_blank target="_blank" href="http://zhidao.baidu.com/question/70508935.html#" class="app-keyword" style="color: rgb(45, 100, 179); text-decoration: none;">QQ</a>显示好友所在位置的工作原理是:把各IP地址对应的地理位置数据都存在本地硬盘上,显示的时候先取得对方IP,然后查询本地文件里的对应数据,然后显示。 QQ得到IP地址后,对比上传用户的数据,发现其IP属于哪一个地区。如果用户上传的数据不够,IP地址难以分辨归属地。 尝试更换其他QQ显示IP的插件。 请参考如下的QQ显示IP原理分析: QQ2008版本显IP显隐身制作原理介绍(原创)
2008年03月02日 01:38:47 作者: 小辉
到QQ2008为至,可爱的珊瑚版本显IP显隐身的QQ已经不能用了,前几天下载了比特版本,传美版本,极速版本用了一下,感觉没有珊瑚虫的版本好用,总之用习惯了一种版本,不乐意改变太多.于是抱着这种心态,我于前天下午认真研究了QQ显IP显隐身的原理,自己成功编译出了一款比较满意的显IP显隐身的QQ2008贺岁版本,以满足自己工作和学习的需要.下面我来谈一下显IP显隐身的基本原理. 最初我认为当前的一些显IP的工具,包括大名鼎鼎的FINEPLUS这类软件是在QQ工作时可以拦截了底层的Socket通讯,后来发现,没那么复杂,但我认为如果做成这样子,肯定是一种最有效的办法. 大家的思路是这样子的,由于如果你现在需要和一个QQ好友传输文件或者进行语音聊天或者发送了图片或自定义表情。那么QQ必须知道对方的IP地址和端口信息,这样才能把数据传给对方。所以,QQ内部已经实现了获取IP地址和其他信息的相关函数了。的确如此。而我们只要想办法调用QQ内部的函数。 经过反编译QQ组件之一的CQQApplication.dll中的汇编代码: 027832C7 8B45 F0 mov eax,dword ptr ss:[ebp-10]
027832CA 53 push ebx
027832CB 68 38558302 push CQQAppli.02835538 ; ASCII dwIP
027832D0 50 push eax
027832D1 8B08 mov ecx,dword ptr ds:[eax]
027832D3 FF51 18 call dword ptr ds:[ecx+18]
027832D6 8B45 F0 mov eax,dword ptr ss:[ebp-10]
027832D9 53 push ebx
027832DA 68 40558302 push CQQAppli.02835540 ; ASCII wPort
027832DF 50 push eax
027832E0 8B08 mov ecx,dword ptr ds:[eax]
027832E2 FF51 14 call dword ptr ds:[ecx+14] 从上面的汇编来看,显然是调用了2个thiscall规范的函数,也就是我们所说的C++类成员函数。2个成员函数的大致形式是this->Func(void *ptr1,char *cmd,DWORD *ptr2);其中cmd就是上面dwIP、wPort这些字符串,而ptr2也很容易知道是函数返回值得存储指针。现在关键是要获取this指针,也就是ecx寄存器的数据和ptr1这个神秘指针的数据。 所以问题在这里就变得比较简单了,我们只要想办法获得这个数据,就可以成功实现显IP的功能,这里一般可以有以下三种方案可供选择: 直接修改QQ本身的程序文件->不具备版本无关性,容易引发法律纠纷
使用外部exe进程->必须采用调试进程的办法,效率低且浪费系统资源
编写dll文件让QQ加载->效率高,稳定 所以我们都选择了第三种编写DLL注入的方法,一般目前显IP的版本下面都有两个这样的文件,FINEPLUS.exe和fineplus.dll,我们一般通过fineplus.exe来启动QQ,从而实现显IP的目的,大家可能以为主要的功能部分一定在fineplus.exe这个文件中,其实是不对的,fineplus.exe这个文件就做了一件事,就是在启动QQ的过程中把fineplus.dll注入到QQ中去. 将dll文件注入到程序的方法有2种: 1.首先通过CreateProcess创建进程,然后模拟windows加载一个dll的全过程,在加载程序主体 2.采用远程线程植入技术,即使用CreateRemoteThread
我也只是参考了明日帝国的教程,大家可以去看看,最后列出获取IP的源程序(不涉及加载,拦截,替换的过程) char *szwProcotol = wProcotol;
char *szRecentip=dwRecentIP;
char *szwRecentPort=wRecentPort;
char *szdwC2CIP=dwC2CIP;
char *szwC2CPort=wC2CPort;
char *szdwIP=dwIP;
char *szwPort=wPort; bool GetDestIPInfo(DWORD ptrClassHandle,DWORD *ptrDestIp,DWORD *ptrDestPort)
{ if (ptrClassHandle==NULL || ptrDestIp==NULL || ptrDestPort==NULL) return false;
//Using Std Info Buffer
_asm
{
pushad
pushf
mov eax,ptrClassHandle
mov ecx,[eax]
mov edx,ptrDestIp
push edx
push szRecentip
push eax
mov eax,[ecx+34h]
call eax mov eax,ptrClassHandle
mov ecx,[eax]
mov edx,ptrDestPort
push edx
push szwRecentPort
push eax
mov eax,[ecx+30h]
call eax
popf
popad
}
(*ptrDestPort) &= 0xFFFF;
if ((*ptrDestIp) != NULL && (*ptrDestPort) != NULL) return true; _asm
{
pushad
pushf
mov eax,ptrClassHandle
mov ecx,[eax]
mov edx,ptrDestIp
push edx
push szdwC2CIP
push eax
mov eax,[ecx+34h]
call eax
mov eax,ptrClassHandle
mov ecx,[eax]
mov edx,ptrDestPort
push edx
push szwC2CPort
push eax
mov eax,[ecx+30h]
call eax
popf
popad
}
(*ptrDestPort) &= 0xFFFF;
if ((*ptrDestIp) != NULL && (*ptrDestPort) != NULL) return true; _asm
{
pushad
pushf
mov eax,ptrClassHandle
mov ecx,[eax]
mov edx,ptrDestIp
push edx
push szdwIP
push eax
mov eax,[ecx+34h]
call eax
mov eax,ptrClassHandle
mov ecx,[eax]
mov edx,ptrDestPort
push edx
push szwPort
push eax
mov eax,[ecx+30h]
call eax
popf
popad
}
(*ptrDestPort) &= 0xFFFF;
return ((*ptrDestIp) != NULL && (*ptrDestPort) != NULL); } 这样一个通过注入DLL方式的显IP插件就可以实现了,目前我觉得fineplus就做得很好.最后再谈一下显隐身的基本原理.以fineplus为例. 我们在反编译的过程中,注意到了这样一个函数,IQQDATA,从他的的参数来看,IQQData *,很有可能就是存放着一个用户相关信息的结构,所以开启QQ的显隐身功能原理在于QQ本身的这个部分,只要我们拦截到IQQDATA中关于本身状态的数据就可以了.QQ外挂程序Fineplus能够将该结果利用通过外挂的显隐身逻辑运算式就能将暗藏的显隐身功能开启,其实这个很简单,学过C语言选择语句的同学应该都可以写得出来.
能打开FinePlus程序内隐藏的显隐身逻辑运算格式,不过只对QQ开启后比你后隐身登录的人有效:
"('{状态}'/10-1#'[在线]':(('{IP}'==0)#'':(('{版本}'==0)#'[隐身]':'[离线]')):'[离开]':'[隐身]':'[忙碌]':'[Q我]':'[静音]':'[其他]')" "('{状态}'/10-1#'[在线]':'[离线]':'[离开]':'[隐身]':'[忙碌]':'[Q我]':'[静音]':'[其他]')"
下面有三种能开启FinePlus隐藏的显隐身功能逻辑运算格式,请替换上面{状态}中[离线]的地方为以下逻辑运算格式即可:
(('{IP}'&&'{版本}')?'':('{版本}'?'[隐身]':'[离线]')) ('{IP}'?'':('{版本}'?'[隐身]':'[离线]')) (('{IP}'==0)#'':(('{版本}'==0)#'[隐身]':'[离线]')) 以上逻辑运算式已经经小辉测试过是正确的。其功能就是为了判断在离线状态下,是否隐身或者离线. 到这里为止,一个可以显示IP地址和隐身与否的QQ版本就制作成功了,我再把IP数据包更新到了3月1日,再花了点时间做个安装包,手动DIY soft QQ2008贺岁版本显IP显隐身完整版本就这样做出来了.考虑版权问题,暂不提供下载.

彩虹QQ查看对方ip原理相关推荐

  1. Linux qq查看对方ip,怎么知道对方是否隐身(基于Linux QQ)

    与其说是原创,不如说是在无意中发现这个方法.我想,大家也很想知道我是怎样知道别人在隐身吧?在大家不断的询问之下,我忍不住了,现在就把那个怎样在电脑上查看隐身的QQ好友的方法告诉大家,解决大家关于怎么知 ...

  2. 通过QQ查看对方地址

    不知道大家现在还有没有用能显示对方IP的QQ版本,现在貌似很少人使用这类版本的QQ了.此功能前几年十分流行,很受欢迎,每次上QQ,就能立即看到对方在什么地方.我一直想找一个能显示对方IP的QQ版本,官 ...

  3. 局域网通过IP查看对方计算机名,通过计算机名查看对方IP以及查看在线所有电脑IP

    知道对方ip查看对方的计算机名 方法:开始->运行->cmd->net view 对方ip 或者 开始->运行->cmd->nbtstat -a 对方ip 知道对方 ...

  4. 查找网络计算机名,Windows下局域网通过IP查看对方计算机名,通过计算机名查看对方IP...

    1. 知道对方ip查看对方的计算机名 方法:开始->运行->cmd->net view 对方ip 或者 开始->运行->cmd->nbtstat -a 对方ip 2 ...

  5. 侦查系列之微信用链接查看对方IP(包括机型、系统版本等信息)

    工具网址:https://grabify.icu/cn.php MaiTube可以快速的将某个链接进行套装重定向.比如用 A链接指向B链接,而B链接是目标链接.当A链接打开的时候,迅速的进行打开行为的 ...

  6. 让你彩虹QQ显示你的IP一天72变

    让你彩虹QQ显示你的IP一天72变 自从珊瑚虫QQ倒下后,现在很多人已经开始使用了彩虹QQ来显IP,重新将腾讯说的,显IP是侵犯了用户的私聊这个说明又推到了尖风浪口.又没有办法让别人看到你的IP不是真 ...

  7. 查询在线计算机名称和ip,局域网知道对方ip查看对方的计算机名和知道对方计算机名查看IP...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1. 知道对方ip查看对方的计算机名 方法:开始->运行->cmd->net view 对方ip 或者 开始->运行->cm ...

  8. 局域网用计算机名可以找到计算机,局域网通过IP查看对方计算机名

    开始使用 net view 对方ip 提示: 发生系统错误 53. 找不到网络路径. 之后使用nbtstat -a 对方ip 节点 IP 址址: [168.111.111.111] 范围 ID: [] ...

  9. 怎样查看qq好友的ip

    很久很久以前,有一个名叫"珊瑚虫"的QQ版本,话说可以显示对方网友的IP地址,但是由于某些原因消失了.接着又来一个"彩虹"外挂,同样可以显示好友IP地址,但是又 ...

  10. 如何查看对方发邮件的ip地址

    首先打开收件箱页面,找到发送过来的邮件,并用鼠标右键单击之,从弹出的右键菜单中,执行"属性"命令;   在其后打开的属性设置窗口中,单击"详细资料"标签,并在打 ...

最新文章

  1. 中文版开源!这或许是最经典的Python编程教材
  2. linux_磁盘配额
  3. jQuery中HTML的操作
  4. 【数据展示】matplotlib子图设置子标题(subtitle for subplot)
  5. 首届.NET Core开源峰会
  6. echars显示折点数据_数据可视化的基础语法
  7. django - settings.py
  8. PHP文件系统-文件路径操作和权限
  9. 如何写好一份软件开发设计文档
  10. 广州IT销售菜鸟总结精华
  11. 现实的复杂性与系统的复杂性
  12. Spring Cloud负载均衡,报错:No instances available for localhost
  13. 向日葵 远程开机 linux,教你使用向日葵开机棒轻松实现远程开机
  14. [KALI系列第四章]进行ARP断网攻击,包含安装方法
  15. 海思Hi3518E MPP学习_02视频输入(VI模块)
  16. 人活着到底为了什么?
  17. 欢迎大家访问我的网站
  18. EMAC和GMAC区别
  19. 【附源码】计算机毕业设计java英语四六级在线学习系统设计与实现
  20. 听力学习——伊甸园美剧字幕组长论如何练听力

热门文章

  1. 基于51单片机及ADC0808的数字电压表数码管汇编语言proteus仿真程序设计
  2. 2018华为网络技术大赛复赛
  3. 计算机无法安装dx11,dx11组件是什么?提示缺少dx11组件的具体安装步骤
  4. Android Studio中竟然还能加入一个程序员鼓励师
  5. OverflowError: int too large to convert to float
  6. 直方图规定化(匹配)
  7. 递归实现斐波那契数列(Java)
  8. Arcgis重采样或者裁剪的问题
  9. 电气工程类中文核心期刊
  10. 计算机应用基础知识竞赛题,计算机基础知识题库