51819 2007-10-1 07:08 PM
QQ去广告+显示IP外挂 编写方法
主要技术原理:
做IPQQ,那么这几个必备工具是不可缺的:OllyDbg,PEExplorer,DASM32,MFCSpy2
QQ是基于接口调用架构的,这为窥探其内部提供了方便之门
0) 经过分析,获知QQ获取IP信息是通过接口调用实现的,其步骤为
IQQCore->IQQData->IQQUserDynData->dwIP方法
1) 获得IQQCore.要获得此全局描述接口的方法有很多,最好的就是通过QQHelperDll.dll的 ?IsLogin@@YAHPAUIQQCore@@@Z方法获得,函数表达为int __cdecl IsLogin (struct IQQCore **).因为这个IsLogIn方法被QQ频繁调用,于是Hook这个函数,便能轻易获得IQQCore了
function IsLogin(pQQCore: Pointer): Integer; cdecl;
begin
Result := Call original Func; 调用原函数
pIQQCore := pQQCore; 获得IQQCore
end;
2) 从IQQCore获得IQQData.这个事情好办,QQ的BasicCtrlDll.dll的?GetFriendQQData@@YAHPAUIQQCore@@KPAPAUIQQData@@@Z方法,就是从IQQCore和UIN获得IQQData,函数表达为int __cdecl GetFriendQQData(struct IQQCore *,unsigned long,struct IQQData * *)
asm
// int __cdecl GetFriendQQData(struct IQQCore *,unsigned long,struct IQQData * *)
mov eax, pIQQCore
mov edx, UIN // QQ Uin (QQ number)
lea ecx, Result // return = pIQQData
push ecx
push edx
push eax
call GetFriendQQData
add esp, $C // fix call stack
end;
3) 从IQQData获得IQQUserDynData.很不幸,QQ没有直接提供该方法,只好DASM QQ的内部,来模拟此过程的调用.
const
szQQUSER_DYNAMIC_DATA : PChar = 'QQUSER_DYNAMIC_DATA';
clsid_IQQData : TGUID = '{BA863A1E-C979-498A-975C-C501C4F310A3}';
asm
// pIQQData = Pointer(IQQData);
mov ecx, pIQQData
mov ecx, [ecx] // ecx = IQQData.vtbl
mov eax, pIQQData // this pIQQData
lea edx, Result // return = pIQQUDD
push edx
lea edx, clsid_IQQData // clsid_IQQData
push edx
push szQQUSER_DYNAMIC_DATA
push eax
call [ecx + $54] // IQQData.vf_54h QQUSER_DYNAMIC_DATA proc entry
end;
4) 从IQQUserDynData获得IP信息.
const
szdwIP : PChar = 'dwIP';
szwPort : PChar = 'wPort';
asm
// get Uin info
mov eax, pIQQUDD
mov ecx, [eax]
lea edx, dwIP
push edx
push szdwIP
push eax
call [ecx + $34] // IQQUDD.vf_34h
mov eax, pIQQUDD
mov ecx, [eax]
lea edx, wPort
push edx
push szwPort
push eax
call [ecx + $30] // IQQUDD.vf_30h
end;
上面的代码,懂ASM的人很容易就能理解的,其实这些代码也是来自QQ的DASM工程.
注意一下接口调用和Cdecl就行了,因为用Delphi写的,所以不好直接支持C++的thiscall,故采用BASM方式来调用~至此一切OK,花了俺2天功夫,大功告成!!
[[i] 本帖最后由 51819 于 2007-10-1 07:46 PM 编辑 [/i]]
hnist 2007-10-12 09:08 PM
好懂!自己试试看啊yct16
wangchong 2008-2-24 01:49 PM
就是我不会看
vcd365 2008-8-18 10:25 PM
偶不懂也偶只能用别人做好的东西
hziming 2008-9-3 02:20 PM
研究研究。嘻,楼主太有才了yct09
ee13521 2008-9-4 04:04 PM
你的这个是什么语言?
卩s丶孩孓灬 2008-9-29 03:14 AM
我还真需要这样的东西~