说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

100分请教(嫌不够,可以在加)dll导出的类中的函数怎样hook到?

编辑:说三道四文库 发布时间:2017-12-15 10:47
HTML文档下载 WORD文档下载 PDF文档下载
比如说一个名为A的dll中导出了下面的类:
namespace B
{
_cdeclspec(dllexport) Class C
{
public:
function D();
function E();
}
}
如果我现在想HOOK第三方程序对函数D或者函数E的调用,该怎么写?
在detour库中使用DETOUR_TRAMPOLINE宏。
DETOUR_TRAMPOLINE有两个输入参数:trampoline的原型和目标函数的名字。
其中目标函数的名字该怎么写,我直接写D,好像不行,老说我函数D没有声明。
Detours不是有例子的吗? 看看Sample 中的 Member 例子!


////////////////////////////////////////////////////////////////
// Target Class. 也就是你DLL中的类:
class CMember
{
  public:
    void Target(void);
};

void CMember::Target(void)
{
    printf("  CMember::Target!   (this:%p)\n", this);
}

////////////////////////////////////////////////////////////////
// Detour Class. 也就是你自己编写来替代前面类的类:

class CDetour /* add ": public CMember" to enable access to member variables... */
{
  public:
    void Mine_Target(void);
    static void (CDetour::* Real_Target)(void);

    // Class shouldn't have any member variables or virtual functions.
};

void CDetour::Mine_Target(void)
{
    printf("  CDetour::Mine_Target! (this:%p)\n", this);
    (this->*Real_Target)();
}

void (CDetour::* CDetour::Real_Target)(void) = (void (CDetour::*)(void))&CMember::Target;

// 然后在函数中这样调用:
    DetourAttach(&(PVOID&)CDetour::Real_Target, *(PBYTE*)&pfMine);
你得把DLL中类的定义(或头文件)得到。
没用过detour库。不过直接写D肯定不行,试试写B::C::D。
谢谢,明天去试试。
如果导出的类位于dll中的一个命名空间namespace,该怎样hook,是否和上述方法一样?
访问名空间中的函数是要用这样的写法的,也可以在程序中using 名空间。
例子中的类不是dll中导出的,
而我需要hook的是dll中导出的类,
可以用例子中的方法吗?
没明白你的意思。你可以先试试调用要Hook的函数,只要调用没问题应该就可以Hook,Hook时函数的写法与调用时相同。
就是说被hook的函数D位于类C中,而类C是由动态链接库A导出的(可以看楼主的帖子)
你的项目可以隐式链接A.dll;或者查出要Hook的函数导出的名称,用GetProcAddress来获取地址。
引用 6 楼 wanghuok 的回复:
例子中的类不是dll中导出的, 
而我需要hook的是dll中导出的类, 
可以用例子中的方法吗?


有什么区别吗?按照通常的做法导入DLL A 必要的库就行了。
#include ".h"
#pragma comment(lib, ".lib")
可以,采用基本的修改jmp指令方式就可以
没hook过类的函数,mark
谢谢vcPlayer朋友的提示和各位朋友的支持,我看了下detour库里面的member例子,已经照着例子中的方法解决了hook类中函数的问题,而且发现即使多态,重载的成员函数也可以hook到,结贴了。
谈应用分发控制力:还是渠道为王 Unity亚洲开发者大会:手游半衰期越短,开发者手中的机会越多 《割绳子》开发者:俄罗斯双胞胎的奋斗史 曾应聘Rovio未果 Win7系统上常见IE 10问题汇总 如果苹果推廉价手机,市场份额会不会超过安卓? 移动互联网下,如何做儿童新音乐? 第三届“中科杯”全国软件设计大赛正式启动 注重稳定性 Docker 0.2.0发布 何谓机器学习 机器学习能做些什么? 艰难的决定:EA裁员10%,殃及PopCap 或提前落地!Amazon和Facebook急聘SDN工程师(Python优先) 轻松完成网站提速:来自Google、淘宝等的Nginx PageSpeed模块 Touch-Pay发布 移动联通在手机游戏领域联合推融合计费SDK 如何组织大型JavaScript应用中的代码? Robert Scoble:戴Google Glass两周后 再也不想摘下它 赶时髦?Facebook CEO 2013年将领取1美元年薪 蓝港在线CEO王峰:我在网络游戏行业十年从业记 CMDN Club 27期:从儿童音乐教育到移动碎片化管理 聚焦全球移动市场——你所不知道的俄罗斯 MemSQL:号称世界上最快的内存-关系型数据库 兼容MySQL但快30倍 PC衰落 Intel转投Google挖掘移动市场潜力 移动周报:500元体感、精确到0.01毫米的Leap Motion TUP第29期:王淮、龚世海谈如何打造优秀的技术团队 一网打尽13款开源Java大数据工具,从理论到实践的剖析 从用户体验的善与恶说起,做用户爱“玩”的教育应用 三大主流开源硬件对比:Arduino vs BeagleBone vs Raspberry Pi “BlackBerry 10移动应用开发大赛”应用推荐 Java程序优化的一些最佳实践 Heka:Go编写,来自Mozilla,高效、灵活的插件式数据挖掘工具 Anchora鲁为民:PaaS是我的兴趣 次世代IDE Light Table 0.4发布 带来众多更新和改进 想参加一个jsp开发组织。那里有? 为什么下面的头文件没有 .h后缀 如何在SAS软件中导入SQL SERVER 2000的数据?谢谢 请教有经验的学长:动态网页在我自己的机器上运行没有问题,但是(急) 一个奇怪的输出问题?各位C高手看过来 如何让Edit1->Text 等于float类型的变量? 菜鸟问题,在线等 Win98下的SOAP. 哪位大侠有installshield 7.0 以上版本的,发我一个,谢谢!!! 在word中用鼠标滚动的时候,左下角的 行 页变化是怎么的出来的,有没有程序呢 请大家看过来,apache配置文件是否有错,超紧急求救! 如何让Edit1->Text 等于float类型的变量? 为何提示不能创建对象?急死我了 在对话框类中怎样向视图类发送刷新视图的消息?谢谢 急,在线等!同样的打印程序(套打),为什么在不同的操作系统下面打印的位置有差别,怎么才能做到同一打印程序在不同的打印机和不同的系 DELPHI+SQL 想要怎么学习才能快速成长 哪个前辈指点指点 请你们指教好吗 串口通信问题 一个排序的问题! JBuilder下的编辑问题 急呀!vba高手帮帮忙? 动态类型转换 关于软件测试,测试结论 大家进来说说 如何在当前目录下调出一个CHM格式的文档? 为什么动态增加的WebBrowser1.Align不能为alClient啊? 怎样通过代码实现CTRL+C和CTRL+V的功能? 有两个问题要问,很难的哟,谁来挑战一下!! 在dll中能不能声明一些类,供外部程序调用?能给个例子最好; 各位,请帮我看看! weblogic6.1中配置好了oracle9i的连接池,名为oracle9,但是编程工程中如何使用这个连接池,希望答复!! MSXML2.XMLHTTP 是什么组件? 颜色填充 我要用到GPRS的知识,了解者请赐教! 请问在程序运行期间执行label1.text="***"怎么不变啊! 大家帮我看看,为什么不能选择divx压缩? 打开excel文件时提示“重载open方法未获得1参数” 帮忙写报表查询,我搞不定,请求帮忙!!!比较复杂!!!! 自定义标志的问题 着急! 今天在CSDN上终于变成三个绿色的小三角了,高兴……散分(前十位每人10分)! 如何把一个文件中text的值传到另一个文件中去? 路由器如何设置?? apache2配置文件问题,请大家指点迷 PPS文件用什么软件打开,谢谢! 填充颜色 svhost.exe程序错误 求HOOK例子 php得到xml文档中的中文无法正常显示问题 高手请指教一下思路!!!!!!!! 奇怪的乱码问题!急急!在线等待! 填充算法 今天我过生,放分(来者有分) 磁通量改变为什么会产生电动势?磁通量的改变为什么会产生电动势?到底是什么的变化产生了电动势,电动势产生的机制是什么?是带电粒子在磁场中的运动产生了电动势么? “口舌”是个什么字?我在一本旧书上看到但是字典上查不到,也不知道读什么,所以只能拆开来写原文是这样的(‘口舌’是一个字),"一群闲鸦的口舌口舌声"一楼的,你这几个解释为什么字 智商要有多高才能自学成才? 3.14159265 智商278能自学成才吗? 智商180能自学成才吗?我现在的智商是175 我智商有278,能自学成才吗? 形容口舌对战的词 Lg7分之300+Lg3分之700+Lg100 1g5/lg7+lg3/lg7+lg2/lg7=什么 已知lg2=a,lg3=b,求值log3 4 ;log2 12 (前面为下标)lg2,lg3 数字为真数 “南溪”天然气管道保加利亚境内段开工中国代表呼吁尊重各国自主选择的人权发阿尔及利亚对摩洛哥撤回驻阿大使表示遗俄罗斯西北地区强风暴后电力全面恢复供联合国因资金不足减少肯尼亚难民粮食供中国代表:反对西方国家无端指责攻击中官方释疑北京单双号限行:单号单日双号德国法兰克福股市DAX指数10月31伦敦股市《金融时报》100种股票平均美国务卿将访沙特修补关系多米尼加登革热致98人死亡2015国内跨年,哪里最好玩?凌晨12点,一儿子和母亲的对话想不想在跨年派对上留下你的犀利魅影?长大后才发现,宫崎骏电影中的台词辣么李彦宏告诉郁亮:要转型,该牺牲的收益结束一天的完美方式逆生长?联想如何做到的碉堡了!传苹果明年或推无Home键i大神天猫爱施德Qualcomm联手 这一次,广场舞大妈们终于输了,此人只可以不为风景去旅行,但心中要有自己的生化医生在都市真相破案凯伦仙珏奇缘商道无间金明灭帝师神棍异界穿越者我要屠龙天元末世百家九流第一人谁的神位新沙岛旅游应天塔旅游明月岛旅游和平广场旅游嫩江公园旅游坎儿井博物馆旅游挪步园避暑山庄旅游南京奥林匹克体育中心旅游北禅寺旅游广惠桥旅游洛洼码头旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘