首页
论坛
课程
招聘
[讨论]QQ导出好友列表的实现
2013-1-3 20:19 7966

[讨论]QQ导出好友列表的实现

2013-1-3 20:19
7966
用了qqext,发现有个导出所有好友+群列表的功能,QQ自身是没有这个功能的,琢磨下这玩意怎么实现的。

OD+IDA了一下,找到了这个函数:qqext.dll!61E1DF5A,可能不同版本的插件有所不同

不过接下来的一堆this+offset call后迷失了。。。逆向的功力不够,猜测插件自己实现了class调用QQ自身函数。。猜测而已。。。

返回来琢磨这个功能的实现,
1.类似QQEXT的方式,调用相关函数获取,迷失中
2.获取服务器的key,解密本地info.db中好友信息,正在逆向。。。
3.其他。。。求建议

各位元芳怎么看?!

【看雪培训】《Adroid高级研修班》2022年夏季班招生中!

收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 142
活跃值: 活跃值 (30)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
山村野人 活跃值 1 2013-1-3 20:55
2
0
几个月前逆过,写得很乱,很多地方我自己都不明白为什么这样,用处不大吧,复制粘贴给lz。

call qqext.61E1DF5A

好友:
调用GetPlatformCore取得ITXCore
获取ITXCore->Member(0x20)的函数地址
call这个函数,3个参数,this,guid,ref,使用GUID为:0x27F36E1E,0x4A158321,0x58D06B91,0xB257F1CA,ref返回一个指向IM.dll的class指针,我们下面称为IM_this
对ITXCore->Release进行call,并带着IM_this返回
获取IM_this->Member(0x14)的函数地址
call这个函数,3个参数,this,index,ref,index为好友类型,1是好友,2是陌生人,3是黑名单,ref返回一个指向Common的class的指针,下面我们成为CMM_this
对IM_this->Release进行call,并带着CMM_this返回
获取CMM_this->Member(0x60)的函数地址
call这个函数,2个参数,this,ref,ref返回一个DWORD值,值为好友总数

再次重复GetPlatformCore获取ITXCore,并且获取ITXCore->Member(0x20)的函数地址
call这个函数,3个参数,this,guid,ref,使用GUID变为:0x4A2E4F63,0x46EDA211,0xFFDD9F83,0xE8270D76,ref再次返回一个指向IM.dll的class指针,下面称IM_this
对ITXCore->Release进行call,并带着IM_this返回
获取IM_this->Member(0x30)的函数地址
call这个函数,3个参数,this,1,ref,ref返回一个指向Common的class的指针,下面我们成为CMM_this
对IM_this->Release进行call,并带着CMM_this返回
获取CMM_this->Member(0x60)的函数地址
call这个函数,2个参数,this,ref,ref返回一个DWORD值,值为好友分组总数
获取CMM_this->Member(0x20)的函数地址
call这个函数,3个参数,this,index,ref,index为好友分组索引,ref递增1,意义不明

再次重复GetPlatformCore获取ITXCore,并且获取ITXCore->Member(0x20)的函数地址
call这个函数,3个参数,this,guid,ref,使用GUID还是为:0x4A2E4F63,0x46EDA211,0xFFDD9F83,0xE8270D76,ref再次返回一个指向IM.dll的class指针,下面称IM_this2
对ITXCore->Release进行call,并带着IM_this2返回
获取IM_this2->Member(0x1C)的函数地址
call这个函数,3个参数,this,index,ref,index为好友分组索引,ref返回一个指向Common的class的指针,下面我们成为CMM_this2
获取CMM_this2->Member(0x40)的函数地址
call这个函数,3个参数,this,"strFolderName",ref,ref返回好友分组名称
对CMM_this2->Release进行call
对IM_this2->Release进行call

再次重复GetPlatformCore获取ITXCore,并且获取ITXCore->Member(0x20)的函数地址
call这个函数,3个参数,this,guid,ref,使用GUID变为:0xCEE82B03,0x4CD434B7,0x743B95BE,0xF1F1493A,ref再次返回一个指向IM.dll的class指针,下面称IM_this3
对ITXCore->Release进行call,并带着IM_this3返回
获取IM_this3->Member(0x20)的函数地址
call这个函数,3个参数,this,index,ref,index为好友分组索引,ref返回一个指向Common的class的指针,下面我们成为CMM_this3
对IM_this3->Release进行call,并带着CMM_this3返回
获取CMM_this3->Member(0x60)的函数地址
call这个函数,2个参数,this,ref,ref返回一个DWORD值,值为此分组好友总数
获取CMM_this3->Member(0x30)的函数地址
call这个函数,3个参数,this,index,ref,ref返回好友QQ号
一直call到index=好友总数为止
对CMM_this3->Release进行call
结束对好友列表的获取

群:
调用GetPlatformCore取得ITXCore
获取ITXCore->Member(0x20)的函数地址
call这个函数,3个参数,this,guid,ref,使用GUID为:0x76063A86,0x44A6D553,0x44A6D553,0xA71A2187,ref返回一个指向IM.dll的class指针,我们下面称为IM_this
对ITXCore->Release进行call,并带着IM_this返回
获取IM_this->Member(0x28)的函数地址(代码内是CALL DWOR PTR[ECX+28])
call这个函数,2个参数,this,ref,ref返回一个Common的class指针,,下面我们成为CMM_this
对IM_this->Release进行call,并带着CMM_this返回
获取CMM_this->Member(0x60)的函数地址
call这个函数,2个参数,this,ref,ref返回一个DWORD值,值为群总数
获取CMM_this->Member(0x30)的函数地址
call这个函数,3个参数,this,index,ref,index为群索引,ref返回群号(不是显示的)

CMM_this*大概都是ITXData
游客
登录 | 注册 方可回帖
返回