`
ruantongsheng
  • 浏览: 21827 次
  • 来自: ...
社区版块
存档分类
最新评论

HOOK

 
阅读更多
/**
*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);
    }

}

分享到:
评论

相关推荐

    Hook Api,hook ReadFile,hook WriteFile,hook LoadLibrary

    在IT行业中,Hook API是一种广泛使用的技术,它允许开发者拦截并控制特定函数的调用,以便在函数执行前后插入自定义的行为。这个技术在软件调试、性能监控、系统安全和功能扩展等方面都有重要应用。本篇文章将深入...

    EasyHook-2.7.6270.0.zip_c# easy hook_easyhook_easyhook 2.7_eas

    EasyHook是一款强大的、开源的.NET库,用于在托管代码中实现远程函数钩子(Remote Function Hooking)。在标题和描述中提到的"EasyHook-2.7.6270.0.zip"是一个包含EasyHook库版本2.7.6270.0的压缩包,适用于C#开发者...

    APIHook例子 hook api

    APIHook是一种技术,用于在应用程序调用特定API(应用程序编程接口)时,插入自定义代码以拦截、修改或增强原始API的功能。这个例子是关于如何Hook Windows Socket API,即Winsock,来监控或改变网络通信行为。让...

    Inline Hook_inlinehook_x86_x64_64位HOOK_

    Inline Hook是一种技术,主要用于在程序运行时修改函数的行为。它涉及到计算机编程中的底层技术,特别是逆向工程和软件调试领域。Inline Hook的核心是通过在原函数的代码中插入额外的指令来实现对函数调用的拦截,...

    Hook经典分析 关于QQ Hook的应用 钩子

    QQ Hook是一种技术手段,主要涉及计算机程序中的钩子(Hook)机制。钩子在编程领域中,是指一种允许开发者在特定事件发生时插入自定义处理代码的机制。它允许程序拦截并处理系统或应用程序级别的事件,例如键盘输入...

    C#EasyHook_easyhook_

    【C# EasyHook】是一个强大的库,用于在.NET Framework中实现远程函数调用(RDI,Remote Function Invocation)和钩子技术。EasyHook为开发者提供了一种高效、稳定且易于使用的解决方案,允许他们在运行时拦截和修改...

    微信Hook教程(易语言)

    ### 微信Hook教程(易语言) #### 一、Hook技术概述 Hook技术在软件开发领域扮演着重要的角色,尤其在实现特定功能扩展或者调试分析时。本教程将重点介绍如何利用易语言进行微信Hook操作。 #### 二、Hook原理简述...

    分享一个大神的hook示例,理论上能Hook任意地址和获取寄存器数据

    在IT行业中,Hook技术是一种非常重要的调试和系统监控手段,它允许我们拦截并处理特定的系统调用、函数调用或者API调用。本示例着重讲解如何实现一个通用的Hook机制,能够理论上Hook任意地址并获取寄存器数据。我们...

    易语言 微信 hook 2.6

    《易语言微信hook 2.6技术解析及应用探索》 在信息技术日新月异的今天,编程语言的创新和应用不断推动着软件开发的进步。其中,“易语言”以其独特的汉字编程理念,降低了编程的门槛,让更多的人能够参与到程序设计...

    QT下 hook自定义API

    QT下hook自定义API是一种技术,它允许程序员在不修改原始代码的情况下,拦截并修改特定API函数的行为。这种技术在软件测试、调试、性能分析以及功能扩展等方面具有广泛应用。本篇将详细介绍如何在QT环境下利用detour...

    Hook函数任意地址 c++

    在IT行业中,Hook技术是一种非常重要的系统编程技巧,它允许开发者拦截和修改系统或应用程序的特定功能执行流程。本实例以"C++"为语言环境,实现了Hook函数在任意地址的功能,同时还提供了获取CPU寄存器内容的能力。...

    apihook,inlinehook

    在IT行业中,"hook"是一种技术,用于在程序运行时拦截特定函数的调用,以便在调用前或调用后执行自定义代码。这种技术广泛应用于软件开发、调试、性能分析以及安全领域。"apihook"是hook技术的一个特定应用,主要...

    VC++ api hook 源码 带示例

    API Hook是一种技术,它允许开发者拦截系统调用或者特定库函数的调用,以便在调用前后执行自定义代码。这种技术在逆向工程、调试、插件开发、系统监控等领域有着广泛的应用。在VC++环境中,我们可以使用API Hook来...

    Hook MessageBox 全局Hook

    全局Hook是一种技术,它允许一个程序监控或修改其他程序的行为,而无需修改这些程序的代码。在本场景中,我们关注的是Hook MessageBox,也就是对Windows系统中的消息框函数MessageBox进行拦截。MessageBox是Windows ...

    EasyHook远程进程注入并hook api的实现

    本篇将详细讲解如何利用EasyHook库实现远程进程API Hook。 EasyHook是一个开源的.NET库,它提供了一种在Windows平台上进行远程钩子(Hook)的技术。Hook技术允许开发者拦截系统调用或特定函数的执行,以便在调用...

    APIHook、InlineHook库,使用C++11编写,可将回调函数绑定到类成员函数

    APIHook和InlineHook是两种常见的钩子技术,用于在运行时拦截和修改程序的行为。在C++编程中,这两种技术可以被用来实现诸如调试、插件系统、性能分析等功能。本库利用C++11的新特性,提供了一种优雅的方式来实现...

    DISKHook_hook序列号_diskhook_walksi2_硬盘系列号HOOK_

    标题中的“DISKHook_hook序列号_diskhook_walksi2_硬盘系列号HOOK”指的是一个针对硬盘系列号(或称为硬盘ID)的钩子(hook)技术。这种技术主要用于修改或模拟硬盘的序列号,通常在软件开发、系统调试或者安全研究...

    API hook 源码演示

    API Hook是一种技术,它允许开发者拦截和修改特定API(应用程序编程接口)的调用行为。在Windows操作系统中,API Hook通常通过钩子函数(hook function)实现,这种函数会在目标API被调用前后执行,从而提供了对系统...

    微信3.1.0.72 运行日志HOOK 源码

    微信3.1.0.72 运行日志HOOK源码分析 微信作为中国乃至全球最流行的即时通讯工具之一,其内部的运行机制一直是开发者和技术爱好者关注的焦点。本篇将深入探讨“微信3.1.0.72运行日志HOOK源码”这一主题,了解如何...

    Hook工具例子 监控任意窗体拦截消息

    在Windows编程领域,"Hook工具"是一种用于监视和拦截特定系统事件或应用程序行为的技术。标题“Hook工具例子 监控任意窗体拦截消息”表明我们将探讨如何使用Hook机制来跟踪和控制窗口的消息处理。描述中提到的“修改...

Global site tag (gtag.js) - Google Analytics