这是LiteIM/FreePlus的取IP代码,感兴趣的朋友看看吧.
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;
}