/**
*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 的 easyhook,可用于C#等语言支持
钩子函数,顾名思义,就是把我们自己实现的hook函数在某一时刻挂接到目标挂载点上。 1. hook函数,就是我们自己实现的函数,函数类型与挂载点匹配(返回值,参数列表) 2. 挂接,也就是hook或者叫注册(register...
发布一个自己写的用于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的应用 钩子
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 供大家学习和参考
源码采用inlinehook来监听实时消息,并且回调到易语言,可监听的消息为:收到的聊天内容/发送出去的聊天内容/入店路径/改地址信息/退款信息/小卡片信息/订单信息等等自动监视目标进程创建,自动hook/自动还原hook。...
HookAPI HookAPI HookAPI HookAPI
包含3个教程,易语言Hook教程,Hook教学实战等,包含PC2.6 Hook全功能版
分享一个大神的hook示例,理论上能Hook任意地址和获取寄存器数据
1、HOOK MessageBoxA 实现易快速启动。2、HOOK SendMessage 实现拦截消息。3、HOOK 注册表相关命令 实现修复易发送失败。4、Hook 修改窗口命令,实现修改窗口。5、HOOK 读内存命令,实现拦截读取。6、HOOK 写内存...
在这里,给大家一个Delphi的源码,使用HOOK进行拦截处理任务管理器来实现. 在附件的文档中包含了源码,共分为两个部分:exe测试部分,Dll部分(HookDll,unithook). 我已经亲自编译测试过,可以实现拦截任务管理器的消息. ...