发新话题
打印

IP显示的关键代码

IP显示的关键代码

这是LiteIM/FreePlus的取IP代码,感兴趣的朋友看看吧.

runjin的是汇编版本,这是c版本,希望有更多的人能读懂.后来者,愿它对你有益.闪了.
复制内容到剪贴板
代码:
static const DWORD UnknownSig=0x1E3A86BA;
static const LPSTR  szQQUSER_DYNAMIC_DATA="QQUSER_DYNAMIC_DATA";
typedef void( *pPrepareDynData)(LPVOID IQQData,LPSTR szCmd,const DWORD* szSig,LPVOID* pDynamicData);
VOID PrepareData(LPVOID IQQData,LPVOID* pDynamicData)
{
    pPrepareDynData PrepareDynData=(pPrepareDynData)*(LONG *)(*(LONG *)IQQData+0x54);
    PrepareDynData(IQQData,szQQUSER_DYNAMIC_DATA,&UnknownSig,pDynamicData);
}

DWORD GetDyncDWORD(LPVOID DynamicData, int iOffset,LPCSTR szCmd)
{
    DWORD dwRet=0;
    __asm
    {
        lea eax,dwRet
        push eax
        push szCmd
        mov eax, DynamicData
        push eax
        mov ecx,[eax]
        mov eax,ecx
        add eax,iOffset
        call [eax]
    }
    return dwRet;
}

static const LPSTR  szdwRecentIP="dwRecentIP";
static const LPSTR  szdwIP="dwIP";
static const LPSTR  szdwC2CIP="dwC2CIP";
DWORD GetIP(DWORD Uin)
{
    DWORD dwRet=0;
    LPVOID IQQData=NULL;
    if (!GetFriendQQData(g_IQQCore,Uin,&IQQData)) return dwRet;
    LPVOID DynamicData=NULL;
    PrepareData(IQQData,&DynamicData);
    if (NULL==DynamicData) return dwRet;
    dwRet=GetDyncDWORD(DynamicData,0x34,szdwC2CIP);//ecx+18
    if (dwRet) return dwRet;
    dwRet=GetDyncDWORD(DynamicData,0x34,szdwIP);
    if (dwRet) return dwRet;
    dwRet=GetDyncDWORD(DynamicData,0x34,szdwRecentIP);
    return dwRet;
}

static const LPSTR  szwRecentPort="wRecentPort";
static const LPSTR  szwPort= "wPort";
static const LPSTR  szwC2CPort= "wC2CPort";
DWORD GetPort(DWORD Uin)
{
    DWORD dwRet=0;
    LPVOID IQQData=NULL;
    if (!GetFriendQQData(g_IQQCore,Uin,&IQQData)) return dwRet;
    LPVOID DynamicData=NULL;
    PrepareData(IQQData,&DynamicData);
    if (NULL==DynamicData) return dwRet;
    dwRet=GetDyncDWORD(DynamicData,0x30,szwC2CPort);//ecx+14
    if (dwRet) return dwRet;
    dwRet=GetDyncDWORD(DynamicData,0x30,szwPort);
    if (dwRet) return dwRet;
    dwRet=GetDyncDWORD(DynamicData,0x30,szwRecentPort);
    return dwRet;
}

static const LPSTR  szwProcotol = "wProcotol";
DWORD GetVer(DWORD Uin)
{
    DWORD dwRet=0;
    LPVOID IQQData=NULL;
    if (!GetFriendQQData(g_IQQCore,Uin,&IQQData)) return dwRet;
    LPVOID DynamicData=NULL;
    PrepareData(IQQData,&DynamicData);
    if (NULL==DynamicData) return dwRet;
    dwRet=GetDyncDWORD(DynamicData,0x30,szwProcotol);
    return dwRet;
}

TOP

这个就是QQ 获取IP 的代码么?

TOP

怎么用撒???

TOP

为环保事业多做贡献

上海物资回收有限公司为了环保事业,公司承包各企事业单位,如厂矿企业、机关、学校、医院、宾馆、写字楼、酒店、商务楼、学校小区废旧物资,我们将有专人负责为您打扫、看管、货运一切废旧物资,根据需要可签各种合同,现金交易,并提供拥金。面向对象:物资回收、上海物资回收、废品回收、上海废品回收、机器回收、塑料回收^_^大型企业,社会部门等.上门提货,现金交易,绝不拖债,效率至上.更多参阅:http://www.huishoufeipin.cn/

  • 金属回收 == >电脑、电脑配件、显示器、打印机、传真机、复印
  • 废品回收 == >建筑废料、拆迁废料、水暖器材、门窗等^_^
  • 物资回收 == >废旧冷库设备、电缆电瓶、机床及各类闲置积压生产资源^_^
  • 废金属回收 == >废旧钢、铁、铜、铝、不锈钢及有色、稀有金属原材料等^_^
  • 上海废品回收 == >废电线电缆、磷铜、红铜、紫铜、青铜、黄铜、漆包线铜、铜屑、铝合金、不锈钢铅等。^_^
  • TOP

    发新话题