首页
社区
课程
招聘
api hook 库,刚刚完成。希望大家喜欢[原创]
发表于: 2006-1-21 20:42 9743

api hook 库,刚刚完成。希望大家喜欢[原创]

dummy 活跃值
23
2006-1-21 20:42
9743
/******************************************************************************\
* API Hook
* 作者: 宋雷
* e-mail: dummyz@126.com
* 版权保留 ^_^
* 2006-1-21
*******************************************************************************/

#ifndef _WINAPIHOOK_INC_
#define _WINAPIHOOK_INC_

#ifdef __cplusplus
extern "C" {
#endif

typedef LPVOID HAPIHOOK;

/*****************************************************
* 函数: CreateApiHook
* 功能描述:
*        创建一个 api hook 目标,初始化状态为无效
* 参数:
*        LPVOID        lpHookedAddress        - 被修改的地址
*        LPVOID        lpHookProc                - 监视过程地址
* 返回值:
*        成功失败返回 NULL, 成功返回一个非 NULL 值
*****************************************************/
HAPIHOOK WINAPI CreateApiHook(LPVOID lpHookedAddress,LPVOID        lpHookProc);

/*****************************************************
*函数: SetApiHook
*功能描述:
*        设置 api hook 状态为有效
*参数:
*        HAPIHOOK hApiHook        - CreateApiHook  返回的有效值
*返回值:
*        成功返回 TRUE, 失败返回 FALSE
*****************************************************/
BOOL WINAPI SetApiHook(HAPIHOOK hApiHook);

/*****************************************************
*函数: ResetApiHook
*功能描述:
*        设置 api hook 状态为无效
*参数:
*        HAPIHOOK hApiHook        - CreateApiHook  返回的有效值
*返回值:
*        成功返回 TRUE, 失败返回 FALSE
*****************************************************/
BOOL WINAPI ResetApiHook(HAPIHOOK hApiHook);

/*****************************************************
*函数: DeleteApiHook
*功能描述:
*        设置 api hook 为无效,并且释放相关资源
*参数:
*        HAPIHOOK hApiHook        - CreateApiHook  返回的有效值
*返回值:
*        成功返回 TRUE, 失败返回 FALSE
*****************************************************/
BOOL WINAPI DeleteApiHook(HAPIHOOK hApiHook);

/*************************************************************************
* 函数: MappingInProcess
* 功能描述:
*        映射 MappingInProcess 所在模块到指定的进程空间
* 参数:
*        DWORD        dwProcessId                - 目标进程的 ID, 如果 dwProcessId 为 -1, 那么
*                                                          MappingInProcess 将试着把它所在的模块映射到系统
*                                                          中现存的进程空间内
*        LPCTSTR lpszModuleFile  - 附加需要同时映射到目标进程中的模块, 此值为 NULL
*                                                          表示没有同时需要映射的模块
* 返回值:
*        成功返回非 0 值, 失败返回 0
*************************************************************************/
BOOL WINAPI MappingInProcess(DWORD dwProcessId, LPCWSTR lpszModuleFile);

/*************************************************************************
* 函数: UnmappingInProcess
* 功能描述:
*        从指定进程撤出 UnmappingInProcess 所在的模块
* 参数:
*        DWORD        dwProcessId                -   目标进程 ID, 如果 dwProcessId 的值为 -1,
*                                                                那么将试着丛全部进程中撤出此模块的映像
*        LPCWSTR lpszModuleFile  -   附加需要同时从到目标进程中撤出的模块, 此值为
*                                                                NULL 表示没有同时需要撤出的模块
* 返回值:
*        成功返回非 0 值,失败返回 0
*************************************************************************/
BOOL WINAPI UnmappingInProcess(DWORD dwProcessId, LPCWSTR lpszModuleFile);

/*****************************************************
* 函数:slmGetProcAddress
* 功能描述: 和 GetProcAddress 类似
*****************************************************/
FARPROC WINAPI slmGetProcAddress(HMODULE hModule, LPCSTR lpProcName);

/*************************************************************************
* 函数: slmGetModuleHandle
* 功能描述:
*        可以获取 dwProcessId 进程内 lpszModuleFile 的实例句柄
* 参数:
*        DWORD        dwProcessId                - 目标进程的 ID
*        LPCWSTR lpszModuleFile        - 要获取信息的模块文件名
* 返回值:
*        如果成功返回 lpszModuleFile 在 dwProcessId 的实例句柄, 否则返回 NULL
*************************************************************************/
HINSTANCE WINAPI slmGetModuleHandleW(DWORD dwProcessId, LPCWSTR lpszModuleFile);

/*************************************************************************
* 函数: slmLoadLibrary
* 功能描述:
*        把 lpszModuleFile 加载到 dwProcessId 进程空间或增加引用计数
* 参数:
*        DWORD        dwProcessId                - 目标进程 ID
*        LPCWSTR lpszModuleFile        - 要加载的模块文件名
* 返回值:
*        如果成功返回 lpszModuleFile 在 dwProcessId 的实例句柄, 失败返回 NULL
*************************************************************************/
HINSTANCE WINAPI slmLoadLibraryW(DWORD dwProcessId, LPCWSTR lpszModuleFile);

/*************************************************************************
* 函数: slmFreeLibrary
* 功能描述:
*        减少 hModule 在 dwProcessId 进程空间的引用计数
* 参数:
*        DWORD                dwProcessId                - 目标进程
*        HINSTANCE        hModule                        - 目标模块
* 返回值:
*        成功返回非 0 值, 失败返回 0
*************************************************************************/
BOOL WINAPI slmFreeLibrary(DWORD dwProcessId, HINSTANCE hModule);

#ifdef __cplusplus
}
#endif

#endif

附件:apihook test.rar

源码

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (36)
雪    币: 175
活跃值: (2531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
下载学习。
2006-1-21 21:35
0
雪    币: 234
活跃值: (104)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不错!正在研究这方面的东东!
2006-1-21 21:50
0
雪    币: 272
活跃值: (143)
能力值: ( LV15,RANK:930 )
在线值:
发帖
回帖
粉丝
4
注意接收
2006-1-22 13:17
0
雪    币: 211
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
没收到啊。楼主,麻烦再发一次。
zhu015502@163.com
2006-1-22 18:47
0
雪    币: 211
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢楼主啊。
2006-1-23 09:59
0
雪    币: 211
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
GOOD JOB
2006-1-23 10:54
0
雪    币: 204
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
高级,谢谢楼主啊。
2006-1-23 11:19
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
这种库我有7-8套完整的,大部分开价都800美元以上。
2006-1-23 12:16
0
雪    币: 272
活跃值: (143)
能力值: ( LV15,RANK:930 )
在线值:
发帖
回帖
粉丝
10
.............
2006-1-23 12:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习了

果然有特点
2006-1-23 15:46
0
雪    币: 211
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
最初由 鸡蛋壳 发布
这种库我有7-8套完整的,大部分开价都800美元以上。


厉害~~~
2006-1-23 17:23
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
13
支持,谢谢分享,请问一下是VC写的?
2006-1-23 22:48
0
雪    币: 131
活跃值: (154)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
正在研究hook, 请楼主发个原始代码给我,谢谢了
My Email: webmaster@mail.cznogf.com
2006-1-24 09:41
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
15
楼主也给我一个吧
lhxybbs@126.com

先谢了!
2006-1-24 09:55
0
雪    币: 272
活跃值: (143)
能力值: ( LV15,RANK:930 )
在线值:
发帖
回帖
粉丝
16
如果可以,我想交朋友
2006-1-24 10:51
0
雪    币: 229
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
呵呵。a.t.t
2006-1-24 11:17
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
18
微软有个detours库,免费的还开源,多好
2006-1-24 11:32
0
雪    币: 272
活跃值: (143)
能力值: ( LV15,RANK:930 )
在线值:
发帖
回帖
粉丝
19
最初由 clane 发布
slmLoadLibraryW可以加载资源dll吗?


当然
2006-1-24 12:00
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
我好丢人啊,不知道这是什么东西,做什么用的。下载了不知道方到那里!也不知道怎么用!
2006-1-24 13:32
0
雪    币: 211
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
最初由 孙行者 发布
微软有个detours库,免费的还开源,多好


何处有下?
效果如何?
2006-1-25 09:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
最初由 堆栈的栈 发布


何处有下?
效果如何?


http://research.microsoft.com/research/sn/detours/

用过,效果还行。
2006-1-25 10:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
detours2.0开始商业化了,1.5还是免费,可以拿来学习学习。这玩意用起来不方便。
2006-1-25 10:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
兄弟,我最近也在搞hook api,能不能给我一份?
另外,能不能交流一下啊,我的QQ:404271575,MSN:joshua_yu@263.net(邮箱也是这个)
呵呵,交个朋友啊。
2006-1-25 16:47
0
雪    币: 259
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
学习ING
也给我一份研究研究吧,,谢谢先
cykerr@163.com
2006-1-30 03:02
0
游客
登录 | 注册 方可回帖
返回
//