- 论坛徽章:
- 0
|
来源:T4nk的blog\r\n\r\n随着珊瑚虫被TX镇压后 飘云 虫虫 Freeplus等陆续退出QQ 外挂(辅助工具)的行列 并发出关键代码\r\n随后的QQ显ip去广告等版本都是基于这些出来的 如:功夫QQ2008显ip版 飘云2008贺岁版显ip去广告 腾讯QQ2008 (显IP显隐身) 传美版腾讯QQ彩虹显IP显隐身包括一些qq显ip显隐身最新版本|qq显ip显隐身最新版本|腾讯qq显ip显隐身下载|最新qq显ip显隐身|qq显ip显隐身版下载|qq显ip显隐身超级版 |腾讯qq显ip显隐身版|qq显ip显隐身补丁|qq显ip显隐身版|传美qq显ip显隐身|腾讯qq显ip显隐身 等等\r\nQQ2008贺岁版显IP显隐身|珊瑚虫|传美|飘云|Fineplus|功夫|狂人|下载\r\n\r\n这是LiteIM/FreePlus的取IP代码,感兴趣的朋友看看吧.\r\nrunjin的是汇编版本,这是c版本,希望有更多的人能读懂.后来者,愿它对你有益.闪了.\r\n源码:\r\nstatic const DWORD UnknownSig=0x1E3A86BA;\r\nstatic const LPSTR szQQUSER_DYNAMIC_DATA=\"QQUSER_DYNAMIC_DATA\";\r\ntypedef void( *pPrepareDynData)(LPVOID IQQData,LPSTR szCmd,const DWORD* szSig,LPVOID* pDynamicData);\r\nVOID PrepareData(LPVOID IQQData,LPVOID* pDynamicData)\r\n{\r\npPrepareDynData PrepareDynData=(pPrepareDynData)*(LONG *)(*(LONG *)IQQData+0x54);\r\nPrepareDynData(IQQData,szQQUSER_DYNAMIC_DATA,&UnknownSig,pDynamicData);\r\n}\r\n\r\nDWORD GetDyncDWORD(LPVOID DynamicData, int iOffset,LPCSTR szCmd)\r\n{\r\nDWORD dwRet=0;\r\n__asm\r\n{\r\nlea eax,dwRet\r\npush eax\r\npush szCmd\r\nmov eax, DynamicData\r\npush eax\r\nmov ecx,[eax]\r\nmov eax,ecx\r\nadd eax,iOffset\r\ncall [eax]\r\n}\r\nreturn dwRet;\r\n}\r\n\r\nstatic const LPSTR szdwRecentIP=\"dwRecentIP\";\r\nstatic const LPSTR szdwIP=\"dwIP\";\r\nstatic const LPSTR szdwC2CIP=\"dwC2CIP\";\r\nDWORD GetIP(DWORD Uin)\r\n{\r\nDWORD dwRet=0;\r\nLPVOID IQQData=NULL;\r\nif (!GetFriendQQData(g_IQQCore,Uin,&IQQData)) return dwRet;\r\nLPVOID DynamicData=NULL;\r\nPrepareData(IQQData,&DynamicData);\r\nif (NULL==DynamicData) return dwRet;\r\ndwRet=GetDyncDWORD(DynamicData,0x34,szdwC2CIP);//ecx+18\r\nif (dwRet) return dwRet;\r\ndwRet=GetDyncDWORD(DynamicData,0x34,szdwIP);\r\nif (dwRet) return dwRet;\r\ndwRet=GetDyncDWORD(DynamicData,0x34,szdwRecentIP);\r\nreturn dwRet;\r\n}\r\n\r\nstatic const LPSTR szwRecentPort=\"wRecentPort\";\r\nstatic const LPSTR szwPort= \"wPort\";\r\nstatic const LPSTR szwC2CPort= \"wC2CPort\";\r\nDWORD GetPort(DWORD Uin)\r\n{\r\nDWORD dwRet=0;\r\nLPVOID IQQData=NULL;\r\nif (!GetFriendQQData(g_IQQCore,Uin,&IQQData)) return dwRet;\r\nLPVOID DynamicData=NULL;\r\nPrepareData(IQQData,&DynamicData);\r\nif (NULL==DynamicData) return dwRet;\r\ndwRet=GetDyncDWORD(DynamicData,0x30,szwC2CPort);//ecx+14\r\nif (dwRet) return dwRet;\r\ndwRet=GetDyncDWORD(DynamicData,0x30,szwPort);\r\nif (dwRet) return dwRet;\r\ndwRet=GetDyncDWORD(DynamicData,0x30,szwRecentPort);\r\nreturn dwRet;\r\n}\r\n\r\nstatic const LPSTR szwProcotol = \"wProcotol\";\r\nDWORD GetVer(DWORD Uin)\r\n{\r\nDWORD dwRet=0;\r\nLPVOID IQQData=NULL;\r\nif (!GetFriendQQData(g_IQQCore,Uin,&IQQData)) return dwRet;\r\nLPVOID DynamicData=NULL;\r\nPrepareData(IQQData,&DynamicData);\r\nif (NULL==DynamicData) return dwRet;\r\ndwRet=GetDyncDWORD(DynamicData,0x30,szwProcotol);\r\nreturn dwRet;\r\n} |
|