/**
*Environment : VS2005
*/
DLL:
File name:HookDll.ccp
=============================================
#include <windows.h>
#include "string.h"
#include "stdio.h"
HINSTANCE hInst;
#pragma data_seg("hookdata")
HHOOK oldkeyhook=0;
#pragma data_seg()
#pragma comment(linker,"/SECTION:hookdata,RWS")
#define DllExport extern "C"__declspec(dllexport)
void writeFile1(char *msg);
DllExport LRESULT CALLBACK KeyBoardProc(int nCode,WPARAM wParam, LPARAM lParam );
DllExport void InstallHook(int nCode);
DllExport void EndHook(void);
BOOL WINAPI DllMain(HINSTANCE hInstance,ULONG What,LPVOID NotUsed)
{
switch(What)
{
case DLL_PROCESS_ATTACH:
hInst = hInstance;
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return 1;
}
void InstallHook(int nCode)
{
oldkeyhook = SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyBoardProc,hInst,0);
}
DllExport LRESULT CALLBACK KeyBoardProc(int nCode,WPARAM wParam, LPARAM lParam )
{
/*
WPARAM j;
FILE *fp;
errno_t err;
if(lParam&0x80000000)
{
j = wParam;
err=fopen_s(&fp,"c:\hookkey.txt","a");
fprintf(fp,"%4d",j);
fclose(fp);
}
*/
writeFile1("callback function invoked");
return CallNextHookEx(oldkeyhook,nCode,wParam,lParam);
}
void EndHook(void)
{
UnhookWindowsHookEx(oldkeyhook);
}
void writeFile1(char *msg){
FILE *fp;
fp=fopen("C:/test1.txt","a");
fputs(msg,fp);
fputs("\n",fp);
fclose(fp);
}
=================================================
testing
File name:hookTest.ccp
=================================================
#include "stdio.h"
#include <windows.h>
void main(void)
{
typedef void(*installHook)(int ncode);
typedef void(*killHook)(void);
HINSTANCE hDLL; installHook iHook; killHook kHook;
hDLL=LoadLibrary(TEXT("hookdll2.dll"));
if(hDLL!=NULL){
MessageBox (NULL, TEXT ("Hello, Windows 00000000000!"), TEXT ("HelloMsg"), 0);
iHook=(installHook)GetProcAddress(hDLL,"InstallHook");
kHook=(killHook)GetProcAddress(hDLL,"EndHook");
if(iHook){
MessageBox (NULL, TEXT ("Hello, Windows 11111111111111!"), TEXT ("HelloMsg"), 0);
iHook(0);
}
if(kHook){
MessageBox (NULL, TEXT ("Hello, Windows 2222222222222222!"), TEXT ("HelloMsg"), 0);
kHook();
}
FreeLibrary(hDLL);
}
}
分享到:
相关推荐
[bool]hook:params{ realFunc[String|must]:用于保存原始函数的函数名称,用于unHook; hookFunc[Function|must]:替换的hook函数; context[Object|opt]:目标函数所在对象,用于hook非window对象下的函数,如String....
【C++】D3D11 最新HOOK 源码支持X86_X64 【C++】D3D11 最新HOOK 源码支持X86_X64 【C++】D3D11 最新HOOK 源码支持X86_X64 【C++】D3D11 最新HOOK 源码支持X86_X64 【C++】D3D11 最新HOOK 源码支持X86_X64 【C++】D3...
HOOK 系统注册表 HOOK API SYSTEM REGISTRY 文件清单: PHookRegistry.exe HOOK管理主程序 PNtHOOK.dll HOOK API DLL 功能描述: 1. 只针对用户级别的程序API陷井式HOOK, 这里只对以下API进行HOOK: ...
using (var hook = new MessageBoxHook()) { //绕过Hook直接调用源函数 hook.Origin(IntPtr.Zero, "111", "222", 0); //调用Api 被Hook MessageBox.Show("Hello world", "666", MessageBoxButtons.YesNoCancel...
钩子函数,顾名思义,就是把我们自己实现的hook函数在某一时刻挂接到目标挂载点上。 1. hook函数,就是我们自己实现的函数,函数类型与挂载点匹配(返回值,参数列表) 2. 挂接,也就是hook或者叫注册(register...
含内核HOOK 的 easyhook,可用于C#等语言支持
发布一个自己写的用于Hook .Net方法的类库,代码量不大,完全的C#代码实现,是一个比较有趣的功能,分享出来希望能和大家共同探讨 安装:Install-Package DotNetDetour 源码:...
这是一个Hook WinSocket的例子,只在原理性述如何Hook API。 直接注入就可以使用了 sdddddddddddddddd
hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程...
Hook经典分析 关于QQ Hook的应用 钩子
源码采用inlinehook来监听实时消息,并且回调到易语言,可监听的消息为:收到的聊天内容/发送出去的聊天内容/入店路径/改地址信息/退款信息/小卡片信息/订单信息等等自动监视目标进程创建,自动hook/自动还原hook。...
hook api,hook CreateFile,hook CloseHandle,hook ReadFile,hook WriteFile,hook LoadLibrary
目前最好的EasyHook的完整Demo程序,包括了Hook.dll动态库和Inject.exe注入程序。 Hook.dll动态库封装了一套稳定的下钩子的机制,以后对函数下钩子,只需要填下数组表格就能实现了,极大的方便了今后的使用。 Inject...
hook,apihook,inlinehook
Easyhook demo 供大家学习和参考
Hook 实战:编写动作脚本 Hook 是 Git 中的一种机制,允许开发者在特定的时刻执行自定义的脚本,从而实现自动化的工作流程。在本课程中,我们将学习如何编写动作脚本,使用 Git Hook 实现团队 Coding Review 流程...
包含3个教程,易语言Hook教程,Hook教学实战等,包含PC2.6 Hook全功能版
HookAPI HookAPI HookAPI HookAPI
分享一个大神的hook示例,理论上能Hook任意地址和获取寄存器数据
JS Hook笔记1 JS Hook是JavaScript中的一种调试技术,用于hook JavaScript代码中的方法或属性,以便进行调试、修改或验证。JS Hook的主要思想与Frida Hook相似,都是使用Object.defineProperty()方法来实现hook操作...