| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3691 人关注过本帖, 1 人收藏
标题:APIHook是不是只能hook到系统函数呢?
只看楼主 加入收藏
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
HookApi( classTmp.classFn , classFn_stub);
不是不能HOOK类成员,而是无法通过编译器的语法检查。对HOOK函数来说所有的函数都一样。但对编译器来说,不同的函数类型指针是不相容的。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-08-06 18:33
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 11楼 东海一鱼
测试发现静态成员函数是可以的

class TestClass {
public:
static void classFn1(void) { printf("classFn1\n"); }
       void classFn2(void) { printf("classFn2\n"); }
} classTmp;

void *tt = (char*)classTmp.classFn1;  // pass
// void *tt = (char*)classTmp.classFn2;  // failed
void classFn_stub(void) { printf("classFn_stub\n"); }

按照您的意思,如果只是类型不一致的话,应该可以通过强制类型转换实现的,不知道怎么强制转换才能适合普通成员函数

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-08-06 22:13
xiaobai_2511
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-9-11
收藏
得分:0 
回复 10楼 vfdff
我用了上面的代码 也hook不了自己写的自由函数。不知道咋回事  程序一运行到 VirtualProtect  就蹦了
2015-09-11 17:29
快速回复:APIHook是不是只能hook到系统函数呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014464 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved