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

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

编辑:说三道四文库 发布时间:2017-05-30 05:33
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到,结贴了。
《习惯联盟》陈晓冬:与京东云合作让我们没有后顾之忧 流计算与批处理同现:畅享大数据时代的开源实践 挑战和机遇并存:大数据时代机器学习与可视化 【企业开源系列】收发一条Twitter推文的背后 在IE11中更快地获得您需要的内容 暴露程序员身份的8个行为 英特尔创新应用大赛大评审!创新也有中国风 苹果面临一问题:正源源不断地失去优秀工程师 初学编程者必知的五个网站 大数据基准测试专题论坛:基准测试是一把尚未完成的尺子 大数据应用(下):应用驱动技术,DaaS创造价值 大数据研究与发展专题论坛:大数据在各领域中的应用及发展策略 雅虎新目标:欲收购照片分享网站Imgur 移动开发工具访谈《近匠》第01期:七牛云存储—BaaS进化论 ShareSDK:A轮融资到位!将推社会化评论SDK 70美元,你也能用Raspberry Pi做个专属iBeacon基站 7个鲜为人知却超实用的PHP函数 从管理远程式团队和分布式团队中所获得的宝贵经验 Netflix开源数据流管理器Suro Google新创意:天花板加麦克风 人脑植芯片 苹果获弯曲屏新专利 可给手机弄个大波浪卷 真正的跨平台硬件测试:3DMark已打通PC、iOS、Android 将Chrome浏览器变成终端工具 【开源推荐】AllJoyn:打造全球物联网的通用开源框架 21张图带你走进Google数据中心 Snapchat C轮融资5000万美元 投资方是Coatue Management 又一个被谷歌寄生的平台,Chrome应用启动器现来到OS X上 雷军遇上刘德华:创业、艺术、移动互联网 为了抗衡Android,传微软开始考虑WP和WinRT免费 维护代码库的五个精华实践 微软发布安全补丁 IE11.0.2随之而来 如何读取Excel表中的数据 知道一个文件名d:/1.bmp,想复制另一文件d:/2.bmp,怎么写?在线等候 GIF动画图片 我的一个dbgrid的连到一个datasource名是dtds,然后dtds的dataset是一个adoquery,现在当我在dbgrid上选择了几个记录后,如何把所有被选择 如何在Delphi6 程序中,把数据库(BDE)连接的用户名、密码写进程序中? 汉字组成的字符串转成char[]数组,再组合起来就出现乱码 WEB控件 textbox控件的问题,我从来没有遇到过,真奇怪? 求救!在线等 向高手求救,有关java中文的问题!!! 怎样在数据库中查出本周的记录。是ACCESS数据库。为什么高手都不进来。是问题太难吗 如何将任务栏的图标隐藏? 怎么google上不去了? SQL简单问题 关于html中进行文本编辑中操作图片的问题?请各位大虾来看看结贴一定给分 哪儿有H.323的资料呀? 我是菜鸟: ReportBuilder 中明细记录的序号怎么加? 屏蔽输入的字符 求解分数排名的权数确定 如何实现海量数据数据库的快速查询?? 有谁知道TreeView的AutoSelect属性是干嘛用的?? vc60编译出错问题? 请问编写调试JavaScript用什么软件比较好? 救命啊!!!!! 和父母一直搞的不好,怎么办? 客户端连接问题 求救 VFP:event.prg不存在? 宏和内联函数有什么具体的区别 请问如何将HTML页面直接插入TWebBrowser而不通过文件存取?谢谢! 如何将任务栏的图标隐藏? SQL Server7.0我的一个表才5万条数据,用这样的SQL Select * from Diner 语句查询要几十秒钟?太慢了。 请高手指点迷津!!! 2035年9月7日新华社报道 我的IE菜单怎么变成英文的了? GetFileVersionInfoSize,GetFileVersionInfo, VerQueryValue通过他们...... 谁知道文件上传组件:w3upload ,哪里有下载? 向高手求救,有关java中文的问题!!! 请教关于信息分析的好的软件有哪些?(100分) 急!如何使JTable中的某一列中的所有单元格只能输入数字?(急需源代码!)感谢! 怎样判断数据连接? 你是一个真正的程序员吗? 串口接收二进制数据一问,高分相送 关于关机的问题 Linux gcc 一弱弱问题 关于《阳春白雪》安装的问题,急! 发现index.aspx页面的ImageButton事件无法跟踪调试 怎么google上不去了? VB当中相当于VC当中的Continue(跳出一次循环,接着进行下一次循环)的语句是什么? 请教:Jsp中一个有关日期的简单问题! 我这边有个问题,用分1000给答的好人啊。。望各位兄弟帮帮忙啊! 如何使属性页和属性单占用资源减少? 为什么有时候gets()会停都不停,不让用户输入,而有时候却正常? 问问黏土就是橡皮泥吗?,价格多少? PCB中SMT封装怎么做?因为SMT加工的时候经常被投诉“封装Pin脚太短,焊接不好”“封装Pin脚太长,不爬锡焊接不好”.搞得很被动,一会说长,一会说短!如0402;FQPF128;QFN48之类常见封装,该如何定义Pin 夏天池塘内的鱼出现浮头现象,原因是? 化学元素符号的书写顺序是什么?有金属的肯定金属在前,非金属在后.氧化物氧在后,但如果是既没有金属原子成分也没有氧原子呢?比如HCL,凭什么氯在氢后头? 呼吸酶是什么,又什么产的 “OT”是啥意思拜托了各位 谢谢 为什么胰蛋白酶处理可以使细胞分散? 耽美经典语句 请问“OT”是什么意思? 太空泥干了怎麼办 网络语言“BL”是什么意思 风力发电的风扇为何竖放且只两个扇叶 太空泥干了怎么办 血浆的主要成分是什么 "OT"是什么意思? 如何检测水里的重金属 胃蛋白酶可以催化下列哪种物质的消化?A猪肉 B花生 C 苹果 D饮料 为什么与外界隔绝的新挖池塘会生出鱼呢?一直有一个问题感觉非常奇怪.我们家附近前两年挖了一个小池塘.这两年回家发现池塘里好多的鱼.绝对没有人在里面放养.而且附近没有水系.老人们 太空泥有毒么 风力发电怎样输送 新挖的池塘,水是雨水提供的,一段时间后为什么就会有鱼?鱼卵是雨水带来的吗? 太空泥如何调色 碱石灰由什么组成的 铝制品如何自制成铝粉?如题 太空泥弄到床单上怎么办 神经兴奋恢复是否仅零电位,胃蛋白酶是否都生长在酸性环境中 盛铝粉的烧杯怎样清洗 求一个极限, 为什么纤维素可以造纸,淀粉却不能? 一个池塘里养了一些鱼,为了估算该池塘中有多少条鱼,养鱼人第一次从池塘中捕捞一网共40条鱼,它们全被做上标记,然后放回池中,经过一段时间,等带标记的鱼完全混合于鱼群后,再第二次从池 请问一个求极限的问题请问求极限的过程中什么情况下能把式子中的一部分用该部分的极限值代替,我只知道0比0型是不行的,请问还有其他的吗, 预糊化淀粉粘度在造纸中能起到硬度吗 水性铝粉表面的有机质如何清洗我现在用上海某铝粉公司的水性1025铝粉,现在需要对铝粉进行清洗,但是苦于没有合适的清洗剂,丙酮买不到,还有什么其他的清洗剂可以清洗铝粉表面的有机质. 请问SMT 和 EMS 和PCB和HDI的全拼是什么,啥意思 OT是什么意思 怎么清洗铝制品? 四川省绵阳市自来水是否重金属超标? 电子行业中,PCB,SMT,FTB这三个缩写的全称是什么意思呢? 网游中的ot是什么意思? 净水 器出来的水会不会重金属超标了? 目前从事SMT行业,主要负责设备方面,哪位前辈可以说说设备这块主要工作内容是什么?比如日检,保养,还有备件类的 刻意OT是什么意思 老师说胃蛋白酶可以水解蛋白质.那是不是一般来说所有的蛋白酶都可以水解蛋白质.快拉快拉.我急. 血浆中的水来自.A.淋巴,组织液B,消化道,淋巴,组织液答案:B. 请问为什么血浆中的水有来自消化道的? 2.OT是什么意思 胃蛋白酶能相互水解吗?为什么? 强生膜怎样 树状分类法和交插分类法各有何特点! 胃蛋白酶和胰蛋白酶能互相水解吗胃蛋白酶和一胰蛋白酶在都不失活的情况下 呼吸酶在哪里生成的? 按照树状分类法.乙醇属于什么 胃蛋白酶能否将自己水解? 植物呼吸用的酶在哪 树状分类法 如何除去自来水中重金属、铁锈及其他杂质? SMT厂和PCB厂是一样吗半导体盲,啥都不懂,老板让搜集PCB组装厂的信息,不知道SMT厂是不是属于这一类,如果不是请解释一下区别 古代生物化石是不是生物 自来水真的含很多重金属吗 呼吸酶在哪合成? 夏天,有些池塘会突然变绿,水质变坏变臭,鱼类死亡,发生该现象的地区常有化肥或去污剂被排放到池塘.请设计实验,探究化肥和去污剂(如含磷洗衣粉)是否是引起池水变绿的原因,记录实验现
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘