首页
论坛
专栏
课程

[原创]调用QQ/TIM算法实现获取当前登陆账号和ClientKey

2019-10-14 14:21 3507

[原创]调用QQ/TIM算法实现获取当前登陆账号和ClientKey

2019-10-14 14:21
3507
由于通过网页版实现快捷登陆被TX和谐了,所以,各种群验证以及相继失效!因此,想起来很多年前玩的一种方法,就拿出来分享了!
登陆QQ的网页,除了从网页快捷登陆之外,还可以通过QQ面板,直接登陆!
所以,我们点击QQ面板上的QQ空间标志,等待网页弹出,进入成功

进入之后 是这样的状态  https://user.qzone.qq.com/这里是你的QQ号/infocenter 
我们在地址栏 按下 CTRL+Z 会出现一串很长的网址 
https://ssl.ptlogin2.qq.com/jump?ptlang=2052&clientuin=QQ&clientkey=clientkey&u1=https:%2F%2Fuser.qzone.qq.com%2QQ%2Finfocenter&source=panelstar

clientkey是一段64位的文本字符串,这个肯定是从QQ内存中获取的,因为这里涉及了权限问题,所以,就没有QQ和key放出来。

忘记以前是怎么定位的了,只记得是 KernelUtil.dll 中的  ?GetSignature@Misc@Util@@YA?AVCTXStringW@@PBD@Z   IDA附加 定位到函数
CTXStringW *__cdecl Util::Misc::GetSignature(CTXStringW *a1, int a2)
{
  int v2; // eax
  int v4; // [esp-14h] [ebp-14h]
  int v5; // [esp-10h] [ebp-10h]
  int v6; // [esp-Ch] [ebp-Ch]
  int v7; // [esp-8h] [ebp-8h]
 
  CTXStringW::CTXStringW(a1);
  v5 = 0;
  sub_55404A73(&v5);
  if ( v5 )
  {
    v6 = 0;
    if ( (*(int (__stdcall **)(int, int, int *))(*(_DWORD *)v5 + 60))(v5, a2, &v6) >= 0 )
    {
      v7 = 0;
      sub_5536126A(&v7, v6);
      v2 = Util::Encode::Encode16(&v4, &v7);
      CTXStringW::operator=(a1, v2);
      CTXStringW::~CTXStringW((CTXStringW *)&v4);
      if ( v7 )
        (*(void (__stdcall **)(int))(*(_DWORD *)v7 + 8))(v7);
    }
    sub_5540C87C(&v6);
  }
  sub_5540C87C(&v5);
  return a1;
}
传入2个参数  
参数1 是 缓存区 返回结果指针
参数2 是 传入参数的指针

查看交叉引用 
 
一个一个进去看
CTXStringW *__cdecl Util::Misc::Get32ByteValueAddedSign(CTXStringW *a1)
{
  Util::Misc::GetSignature(a1, (int)"buf32ByteValueAddedSignature");
  return a1;
}

CTXStringW *__cdecl Util::Misc::GetValueSTHttp(CTXStringW *a1)
{
  Util::Misc::GetSignature(a1, (int)"bufSTHttp");
  return a1;
}
发现2个函数 调用方式 一样,不同的是
一个是 buf32ByteValueAddedSignature  一个是 bufSTHttp

这里选择  buf32ByteValueAddedSignature 因为我们获取的是64位的key
.text:55416CFC ; class CTXStringW __cdecl Util::Misc::Get32ByteValueAddedSign(void)
.text:55416CFC                 public ?Get32ByteValueAddedSign@Misc@Util@@YA?AVCTXStringW@@XZ
.text:55416CFC ?Get32ByteValueAddedSign@Misc@Util@@YA?AVCTXStringW@@XZ proc near
.text:55416CFC                                         ; CODE XREF: Util::URL::AdjustUrl(CTXStringW const &,Util::URL::URLMODIFYLEVEL,CTXStringW const &,wchar_t const *)+A8↓p
.text:55416CFC                                         ; Util::URL::GetKeyFmt(CFmtString &)+21↓p ...
.text:55416CFC                 push    ebp
.text:55416CFD                 mov     ebp, esp
.text:55416CFF                 push    offset aBuf32bytevalue ; "buf32ByteValueAddedSignature"
.text:55416D04                 push    dword ptr [ebp+8]
.text:55416D07                 call    ?GetSignature@Misc@Util@@YA?AVCTXStringW@@PBD@Z ; Util::Misc::GetSignature(char const *)
.text:55416D0C                 mov     eax, [ebp+8]
.text:55416D0F                 pop     ecx
.text:55416D10                 pop     ecx
.text:55416D11                 pop     ebp
.text:55416D12                 retn
.text:55416D12 ?Get32ByteValueAddedSign@Misc@Util@@YA?AVCTXStringW@@XZ endp
当前登陆QQ号  是通过 ?GetSelfUin@Contact@Util@@YAKXZ 获取的
int __fastcall Util::Contact::GetSelfUin(int a1)
{
  int result; // eax
  int v2; // esi
  int v3; // [esp-8h] [ebp-8h]
 
  v3 = a1;
  result = dword_554F12AC;
  if ( !dword_554F12AC )
  {
    v3 &= dword_554F12AC;
    sub_55404A73(&v3);
    if ( v3 )
      (*(void (__stdcall **)(int, int *))(*(_DWORD *)v3 + 48))(v3, &dword_554F12AC);
    v2 = dword_554F12AC;
    sub_5540C87C(&v3);
    result = v2;
  }
  return result;
}
.text:55405EA9                 public ?GetSelfUin@Contact@Util@@YAKXZ
.text:55405EA9 ?GetSelfUin@Contact@Util@@YAKXZ proc near
.text:55405EA9                                         ; CODE XREF: .text:5535A2FE↑p
.text:55405EA9                                         ; .text:5535A921↑p ...
.text:55405EA9                 push    ebp
.text:55405EAA                 mov     ebp, esp
.text:55405EAC                 push    ecx
.text:55405EAD                 mov     eax, dword_554F12AC
.text:55405EB2                 test    eax, eax
.text:55405EB4                 jnz     short loc_55405EE7
.text:55405EB6                 and     [ebp-4], eax
.text:55405EB9                 lea     eax, [ebp-4]
.text:55405EBC                 push    eax
.text:55405EBD                 call    sub_55404A73
.text:55405EC2                 mov     eax, [ebp-4]
.text:55405EC5                 pop     ecx
.text:55405EC6                 test    eax, eax
.text:55405EC8                 jz      short loc_55405ED5
.text:55405ECA                 mov     ecx, [eax]
.text:55405ECC                 push    offset dword_554F12AC
.text:55405ED1                 push    eax
.text:55405ED2                 call    dword ptr [ecx+30h]
.text:55405ED5
.text:55405ED5 loc_55405ED5:                           ; CODE XREF: Util::Contact::GetSelfUin(void)+1F↑j
.text:55405ED5                 push    esi
.text:55405ED6                 mov     esi, dword_554F12AC
.text:55405EDC                 lea     ecx, [ebp-4]
.text:55405EDF                 call    sub_5540C87C
.text:55405EE4                 mov     eax, esi
.text:55405EE6                 pop     esi
.text:55405EE7
.text:55405EE7 loc_55405EE7:                           ; CODE XREF: Util::Contact::GetSelfUin(void)+B↑j
.text:55405EE7                 mov     esp, ebp
.text:55405EE9                 pop     ebp
.text:55405EEA                 retn
.text:55405EEA ?GetSelfUin@Contact@Util@@YAKXZ endp
接下来写代码 就可以了 ,这里我采用远程注入的方式 进行 操作,代码是易语言代码,其他的语言 自行修改即可





链接:https://pan.baidu.com/s/19v0Eb0-g2ocpTvzj6Q-s_Q 
提取码:0ia3 





2020安全开发者峰会(2020 SDC)议题征集 中国.北京 7月!

最新回复 (11)
Victorgg 2019-10-14 14:42
2
0
mark 一下
sealmoon 2019-10-14 15:12
3
0
Q共享内存就有 没必要去注入
mydvdf 2019-10-14 15:42
4
0
膜拜一下
joker陈 2019-10-14 19:50
5
0
易语言好牛逼啊,这都能搞
凌哥 2019-10-14 20:52
6
0
大佬 能讲解一下QQ怎么OD附加吗,我Q盾搞不来
gamehack 2019-10-14 23:06
7
0
感谢分享,支持一下,目前用不到,MARK一下!
Editor 2019-10-17 14:41
8
0
mark!
mb_jrbhkper 2019-10-17 19:36
9
0
此楼层已删除
mb_jrbhkper 2019-10-17 19:36
10
0
此楼层已删除
飞龙test 2019-10-18 09:08
11
0
mark
mldonkey 2019-11-6 11:24
12
0
学习一下
游客
登录 | 注册 方可回帖
返回