安装全局消息钩子实现dll窗体程序注入
说明{
通过设置全局消息钩子来实现dll注入,然后窗体有相关消息请求的时候就会自动加载注入dll,
然后在入口处做处理就可以了。注入方式简单很多,比代码注入和lsp等注入都简单,就不解释了。
这个也可以传递不同的劫持类型来进行键盘按键记录等。
}
注意{
1.dll注入期间注入程序不可以退出,否则dll内核句柄有可能被释放。
2.注意32位和64位注入问题
}
DLL调用
/*
HMODULE h = LoadLibrary(L"xx.dll");
_SetHook SetHook = (_SetHook)GetProcAddress(h,"SetHook");
_UnHook UnHook = (_UnHook)GetProcAddress(h,"UnHook");
SetHook();
Sleep(10000);
UnHook();
CloseHandle(h);
*/
//DLL相关代码
#include <windows.h>
#include <tlhelp32.h>
#include <Psapi.h>
#pragma comment(lib,"psapi.lib")
#pragma data_seg("Yrrehs")
HHOOK HT = NULL;
#pragma data_seg()
HINSTANCE DLLhinst = NULL;
LRESULT CALLBACK CProc(int nCode,WPARAM wParam,LPARAM lParam){
return CallNextHookEx(HT,nCode,wParam,lParam);
}
//安装钩子
extern "C" __declspec(dllexport) BOOL SetHook(){
HT = SetWindowsHookEx(WH_CALLWNDPROC,CProc,DLLhinst,0);
if(HT == NULL){
return false;
}
return true;
}
//卸载钩子
extern "C" __declspec(dllexport) BOOL UnHook(){
BOOL HM_BOOL = FALSE;
if(HT != NULL){
HM_BOOL = UnhookWindowsHookEx(HT);
}
return HM_BOOL;
}
//获得进程名
wchar_t* GetProcessName(DWORD processID){
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,processID);
wchar_t *procName = new wchar_t[MAX_PATH];
GetModuleFileNameEx(hProcess,NULL,procName,MAX_PATH);
CloseHandle(hProcess);
return procName;
}
//获得进程名
wchar_t* GetProcessName(wchar_t *FileName){
size_t len = wcslen(FileName);
size_t i = len-1;
for(;i>=0;i--){
if(FileName[i] == L'\\'){
break;
}
}
wchar_t *temp = FileName + i + 1;
return temp;
}
BOOL WINAPI DllMain(HINSTANCE hinstDll,DWORD fdwReason,LPVOID lpvReserved){
DLLhinst = hinstDll;
if(DLL_PROCESS_ATTACH == fdwReason){
wchar_t *procName = GetProcessName(GetCurrentProcessId());
if(_wcsicmp(L"xxx.exe",GetProcessName(procName))==0){
//XXXXXX
}
}
if(DLL_PROCESS_DETACH == fdwReason){
}
return TRUE;
}
安装全局消息钩子实现dll窗体程序注入的更多相关文章
- windows消息钩子
1.消息钩子的概念: Windows应用程序是基于消息驱动的,不论什么线程仅仅要注冊窗体类都会有一个消息队列用于接收用户输入的消息和系统消息.为了拦截消息,Windows提出了钩子的概念.钩子(Hoo ...
- windows消息钩子注册底层机制浅析
标 题: [原创]消息钩子注册浅析 作 者: RootSuLe 时 间: 2011-06-18,23:10:34 链 接: http://bbs.pediy.com/showthread.php?t= ...
- MFC线程钩子和全局钩子[HOOK DLL]
第一部分:API函数简介 1. SetWindowsHookEx函数 函数原型 HHOOK SetWindowsHookEx( int idHook, // hook typ ...
- Dll注入:Windows消息钩子注入
SetWindowsHook() 是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的.当消息到达后,在目标窗口处理函数之 ...
- 安装Wamp时出现无法启动此程序,因为计算机中丢失MSVCR110.dll
一.问题描述 安装Wamp时出现无法启动此程序,因为计算机中丢失MSVCR110.dll 二.解决方法 首先进入 http://www.microsoft.com/zh-CN/download/det ...
- 解决mysql安装报错:无法启动此程序,因为计算机丢失MSVCP120.dll
问题一: 因为装的是新系统,所以遇到mysql启动报错:无法启动此程序,因为计算机丢失MSVCP120.dll 后来参考这篇文章https://blog.csdn.net/huacode/articl ...
- Dll注入技术之消息钩子
转自:黑客反病毒 DLL注入技术之消息钩子注入 消息钩子注入原理是利用Windows 系统中SetWindowsHookEx()这个API,他可以拦截目标进程的消息到指定的DLL中导出的函数,利用这个 ...
- Win64 驱动内核编程-28.枚举消息钩子
枚举消息钩子 简单粘贴点百度的解释,科普下消息钩子: 钩子是WINDOWS中消息处理机制的一个要点,通过安装各种钩子,应用程序能够设置相应的子例程来监视系统里的消息传递以及在这些消息到达目标窗口程序之 ...
- 全局键盘钩子(WH_KEYBOARD)
为了显示效果,在钩子的DLL中我们会获取挂钩函数的窗体句柄,这里的主程序窗体名为"TestMain",通过FindWindow查找. KeyBoardHook.dll代码 libr ...
随机推荐
- 面试被吊打系列 - Redis原理
小张兴冲冲去面试,结果被面试官吊打! 小张: 面试官,你好.我是来参加面试的. 面试官: 你好,小张.我看了你的简历,熟练掌握Redis,那么我就随便问你几个Redis相关的问题吧.首先我的问题是,R ...
- 在 .NET 中使用 Flurl 高效处理Http请求
简介 官方介绍,Flurl是一个现代的,流利的,支持异步的,可测试的,可移植的,URL增强和Http客户端组件. Url构建 现在有一个登录的接口,地址如下: https://www.some-api ...
- 使用css3和javascript开发web拾色器实例
本实例中的web拾色器功能使用css3实现页面效果,即在页面上显示的元素用css3样式来实现的.再使用js生成拾色器颜色数据,并控制各元素的鼠标事件.当事件作为反应时,获取到对应的数据并显示颜色值. ...
- 1.认识numpy的数组
认识ndarray --ndarray:用于存储单一数据类型的多维数组 ndarray基础属性的认识 import numpy as np #将numpy简写为np方便调用 1.通过以下实例来认识ar ...
- 从零学脚手架(七)---webpack-dev-server使用
如果此篇对您有所帮助,在此求一个star.项目地址: OrcasTeam/my-cli webpack-dev-server使用 什么是webpack-dev-server 使用vue-cli .re ...
- International Collegiate Programming Contest 2019 Latin American Regional Contests Problem K
题目链接:https://codeforces.ml/gym/102428/attachments/download/9820/statements-en.pdf 题意:构造一个多项式使得外星人编号的 ...
- 记录Java注解在JavaWeb中的一个应用实例
概述 在学习注解的时候,学了个懵懵懂懂.学了JavaWeb之后,在做Demo项目的过程中,借助注解和反射实现了对页面按钮的权限控制,对于注解才算咂摸出了点味儿来. 需求 以"角色列表&quo ...
- 认清 React 的useState逻辑
useState运行过程解析 function App() { const [n, setN] = useState(0); //使用 myUseState() return ( <div> ...
- 使用C# (.NET Core) 实现观察者模式 (Observer Pattern) 并介绍 delegate 和 event
观察者模式 这里面综合了几本书的资料. 需求 有这么个项目: 需求是这样的: 一个气象站, 有三个传感器(温度, 湿度, 气压), 有一个WeatherData对象, 它能从气象站获得这三个数据. 还 ...
- asp.net core 2.0 web api + Identity Server 4 + angular 5 可运行前后台源码
前台使用angular 5, 后台是asp.net core 2.0 web api + identity server 4. 从头编写asp.net core 2.0 web api 基础框架: 第 ...