郁金香外挂技术-郁金香灬老师

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

飞郁网络培训郁金香终身VIP管理员QQ150330575淘宝担保交易QQ交流群(外挂,驱动)
查看: 350|回复: 0

键盘勾子 注入 DLL端

[复制链接]
发表于 2018-5-11 21:56:11 | 显示全部楼层 |阅读模式
// HookInject.cpp : 定义 DLL 的初始化例程。
//

#include "stdafx.h"
#include "HookInject.h"
#include "Memory.h"
#include "DialogTest.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// 唯一的一个 CHookInjectApp 对象

CHookInjectApp theApp;
//
//TODO:  如果此 DLL 相对于 MFC DLL 是动态链接的,
//                则从此 DLL 导出的任何调入
//                MFC 的函数必须将 AFX_MANAGE_STATE 宏添加到
//                该函数的最前面。
//
//                例如:
//
//                extern "C" BOOL PASCAL EXPORT ExportedFunction()
//                {
//                        AFX_MANAGE_STATE(AfxGetStaticModuleState());
//                        // 此处为普通函数体
//                }
//
//                此宏先于任何 MFC 调用
//                出现在每个函数中十分重要。  这意味着
//                它必须作为函数中的第一个语句
//                出现,甚至先于所有对象变量声明,
//                这是因为它们的构造函数可能生成 MFC
//                DLL 调用。
//
//                有关其他详细信息,
//                请参阅 MFC 技术说明 33 和 58。
//

// CHookInjectApp

BEGIN_MESSAGE_MAP(CHookInjectApp, CWinApp)
END_MESSAGE_MAP()


HHOOK g_hHook = NULL;                //hook指针
CDialogTest g_dlgTest;

//显示窗口
void ShowDialog(BOOL bIsEnable)
{
        g_dlgTest.ShowWindow(bIsEnable);
}



//回调函数
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
        if (nCode >= 0 && wParam == VK_HOME)
        {
                CString strProcessName = GetCommandLine();
                if (strProcessName.Find(_T("ELEMENTCLIENT.EXE")) != -1)
                {
                        ShowDialog(g_dlgTest.IsWindowEnabled());
                }
                PrintDebug(_T("HJS: %s\n"), strProcessName);
        }
        return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}




//设置Hook的函数
extern "C" void SetHook(BOOL bIsEnable)
{
        AFX_MANAGE_STATE(AfxGetStaticModuleState());
        if (bIsEnable)
        {
                if (!g_hHook)
                {
                        g_hHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, theApp.m_hInstance, NULL);
                        PrintDebug(_T("HJS: 安装了钩子\n"));
                }
        }
        else
        {
                if (g_hHook)
                {
                        UnhookWindowsHookEx(g_hHook);
                        g_hHook = NULL;
                        PrintDebug(_T("HJS: 释放了钩子\n"));
                }
        }
}
// CHookInjectApp 构造



CHookInjectApp::CHookInjectApp()
{
        // TODO:  在此处添加构造代码,
        // 将所有重要的初始化放置在 InitInstance 中
}



// CHookInjectApp 初始化

BOOL CHookInjectApp::InitInstance()
{
        CWinApp::InitInstance();

        g_dlgTest.Create(IDD_DIALOG1);

        return TRUE;
}


郁金香外挂教程,学习中...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|郁金香外挂技术-郁金香灬老师 ( 苏ICP备10059359号 )

GMT+8, 2018-11-17 12:12 , Processed in 0.042880 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表