吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1274|回复: 3
收起左侧

[求助] 请教下钩子卸载的问题

[复制链接]
h5587686 发表于 2021-5-6 11:14

include"head.h"

HINSTANCE g_hInstance = NULL;
HHOOK g_Khook = NULL;
HWND g_hwnd = NULL;

BOOL DllMain(HINSTANCE hInstace, DWORD reason, LPVOID lp)
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
g_hInstance = hInstace;
break;
default:
break;
}
return TRUE;
}

void ShowMsg(HWND hwnd)
{
g_hwnd =
hwnd;
wchar_t text[100]{ 0 };
wsprintf(text, L"当前实例句柄:%p", g_hInstance);
MessageBoxW(*hwnd, text, 0, 0);
}

LRESULT CALLBACK KeyProc(
In int    nCode,
In WPARAM wParam,
In LPARAM lParam
)
{
if (nCode==HC_ACTION)
{
if ((wParam == 0x5a)&&((lParam&0x80000000)==0))
{
if (UnhookWindowsHookEx(g_Khook))
{
MessageBoxW(g_hwnd, L"钩子解除", 0, 0);
return 1;
}
else
{
//DWORD a = GetLastError();
wchar_t text[100]{ 0 };
wsprintf(text, L"钩子句柄:%p", g_Khook);
MessageBoxW(g_hwnd, text, 0, 0);
wsprintf(text, L"实例句柄:%p", g_hInstance);
MessageBoxW(g_hwnd, text, 0, 0);
wsprintf(text, L"主窗口句柄:%p", g_hwnd);
MessageBoxW(g_hwnd, text, 0, 0);
return 1;
}
}
}
return CallNextHookEx(g_Khook,nCode,wParam,lParam);
}

BOOL Sethook()
{
HINSTANCE hdll = GetModuleHandleW(L"g:\自动扫雷(DLL注入).dll");
g_Khook = SetWindowsHookEx(WH_KEYBOARD, KeyProc, hdll, GetWindowThreadProcessId(g_hwnd, 0));
if (g_Khook == 0)
{
return FALSE;
}
wchar_t text[100]{ 0 };
wsprintf(text, L"钩子句柄是:%p", g_Khook);
MessageBoxW(g_hwnd, text, 0, 0);
return TRUE;
}

BOOL Unhook()
{
if (UnhookWindowsHookEx(g_Khook))
{
return TRUE;
}
return FALSE;
}


这是单纯的DLL文件然后我注入到x86的扫雷中
1.png 2.png 3.png
我想请教下钩子的回调函数在dll是怎么运作的 3个句柄只有1个DLL本身的实例句柄能识别 为什么会这样呢

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| h5587686 发表于 2021-5-6 11:17
是不是和共享节有关联?
苏紫方璇 发表于 2021-5-6 12:25
w92vv 发表于 2021-5-6 17:11
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 02:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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