0xAA55 发表于 2014-7-31 16:13:53

【C】C语言写的针对Win32的Inline Hook程序

两个文件:Hooker.c和Hooker.h
包含Hooker.h,编译链接Hooker.c就能使用功能。
用法:

1、定义变量:

HookedFn foo={0};

2、初始化:

HookInit(&foo,要Hook的函数地址,你的函数的地址);

3、Hook!

HookFunc(&foo);

4、Unhook

UnhookFunc(&foo);

声明部分:
Hooker.h://=============================================================================
//作者:0xAA55
//论坛:http://www.0xaa55.com/
//版权所有(C) 2013-2014 技术宅的结界
//请保留原作者信息,否则视为侵权。
//-----------------------------------------------------------------------------
#ifndef _HOOKER_
#define _HOOKER_

#pragma pack(push,1)

typedef struct
{
        void                        *pOrgFunc;                //原始函数的位置
        void                        *pNewFunc;                //新函数的位置
        unsigned char        bSavedBytes;        //保存的字节
}HookedFn,*HookedFnP;

typedef struct
{
        unsigned char        bJumpIns;
        int                                lOffset;
}JumpIns,*JumpInsP;

#pragma pack(pop)

void HookInit(HookedFnP pData,void*pOrgFunc,void*pNewFunc);//初始化HookedFn结构体。调用前HookedFn必须被清零
void HookFunc(HookedFnP pData);//进行inline Hook
void UnhookFunc(HookedFnP pData);//恢复原始函数

#endif下载:
实现部分:回帖后可见
Hooker.c:**** Hidden Message *****

tomatogege 发表于 2014-7-31 21:08:20

强大:):)

我晕 发表于 2014-8-1 10:46:56

看看代码...

忧郁 发表于 2014-9-12 21:19:05

卡卡 发表于 2015-6-20 09:41:00

xpx 发表于 2015-7-22 13:32:45

思路都差不多吧

Lv.1 液态物体 发表于 2015-7-23 07:47:18

最近在琢磨hook.来学校理解一下

招财猫 发表于 2015-9-24 18:24:13

牛逼啊
!!

KeVin゛ 发表于 2015-12-21 13:52:53

········

0xAA55 发表于 2015-12-21 17:00:27

KeVin゛ 发表于 2015-12-21 13:52
········

不要水帖好吗?

u0yiji 发表于 2016-3-2 18:24:53

看下thx

aundylau 发表于 2018-5-1 23:53:09

这个还像那么回事

秋风落叶 发表于 2018-12-27 09:30:33

大撒达娃大撒达娃大撒大撒

鱼头之王 发表于 2019-10-17 17:18:15

回帖后可见

鱼头之王 发表于 2019-10-18 09:47:20

回帖后可见

watermelon 发表于 2020-3-31 10:59:44

学习一下

viwooo 发表于 2020-6-11 10:09:51

可以, 想试用一下看效果{:4_89:}
页: [1]
查看完整版本: 【C】C语言写的针对Win32的Inline Hook程序