成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

FreePlus的取QQ的IP地址代碼(C語言)

2010-08-28 10:52:28來源:西部e網作者:

這是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;
}

關鍵詞:QQ
主站蜘蛛池模板: 金门县| 广汉市| 张家界市| 亳州市| 莱阳市| 延寿县| 永昌县| 南充市| 郎溪县| 饶阳县| 乾安县| 陵水| 玉门市| 贺州市| 灌南县| 庆云县| 宿迁市| 奈曼旗| 奉化市| 开封县| 平原县| 徐闻县| 尼玛县| 岐山县| 芒康县| 天柱县| 兴义市| 顺昌县| 永顺县| 高碑店市| 长顺县| 阜城县| 天门市| 贺兰县| 南华县| 兴海县| 浦江县| 亚东县| 蓬安县| 徐闻县| 泸西县|