- UID
- 1
- 精华
- 积分
- 76363
- 威望
- 点
- 宅币
- 个
- 贡献
- 次
- 宅之契约
- 份
- 最后登录
- 1970-1-1
- 在线时间
- 小时
|
两个文件: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[5]; //保存的字节
- }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.h
(835 Bytes, 下载次数: 15)
实现部分:回帖后可见
Hooker.c: |
|