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

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

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到,结贴了。
为什么游戏领域总是“抄抄抄”! 物竞天择、百家争鸣——评OpenStack生态圈 CES 2014:Intel针对可穿戴技术发布多款产品 直击CES:Pebble推金属版智能手表Pebble Steel 为4K智能电视而生:高通推出骁龙802处理器 英特尔首席执行官阐述可穿戴设备新技术及Edison计算平台 设计师如何写出更棒的项目建议 微软以1亿美元收购Parature“知识库” 登陆CES:三星发布智能家庭平台Smart Home CES 2014:GPS供应商Garmin推健康腕带Vivofit 《近匠》第05期:移动开发工具访谈,个推——有节操的push 【Hadoop技术博客推荐】Hive的那些事 Twitter联合创始人推社交搜索应用Jelly 马云“食言”进军手游分成比例8:2,开发者可拿7成 CodeCombat游戏全面开源:玩游戏也能学编程 Netflix首席云架构师Adrian Cockcroft加盟Battery Ventures Android 4.3附体:RIBX发布FB/Ti 互联网手表 IE11界面布局的秘密武器:Quero Toolbar 【开源专访】Node-Webkit作者王文睿:桌面应用的全新开发方式 CentOS归属红帽:企业级Linux领域社区与商业的融合 印度初创公司Little Eye Labs证实已被Facebook收购 雅虎收购Aviate:重在提升用户体验 SDN领域硝烟再起,Oracle将Corente收入囊中 Hadoop科普文——常见的45个问题解答 CES 2014:奥迪下一代汽车将采用NVIDIA的芯片! Cocos 3.0 Beta发布:更易用、更友好 开拓新兴市场?诺基亚或推Android手机,UI界面遭泄露 预测2014大数据值得关注的8个发展方向 霸主地位再临挑战?Salesforce CEO,我们不只有Oracle LBS应用新星、“司机好助手”微车借力移动互联网,志在打造车主的个人移动门户 新一代IDE Light Table开源:让编程工作更简单 ASM 菜鸟问题,请大家帮忙!谢谢 解释一下好了吗? ============答对我的问题者,将可获得111222的签名照片!!!!!!!!=========== 关于图片的上传 ======== 绝对好消息,activereport2.0已经release 了,cracker们出动啊~~~~~加油 ============= 关于什么才是真正的系统分析和系统分析员的讨论!——欢迎大家参加,进行善意地讨论!^&^ 今晚的球赛什么时候开始啊? 哪里有关于水平考试(高程)的模拟题的啊??? 为什麽还是不能显示中文呢? 怎样获取WIN2000的密码 在父窗体怎样画jpg格式的背景图? 如何注册MSComm控件????????? 如何解决这个问题啊?重赏啊!!!! 公告: 从现在开始封shines 111222 :)流芳斑主,结贴的工作要开始了,会很累啊!我代表大家先谢谢你了! 怎样改变MSHflexgrid中每条记录的背景颜色。急急急急急急急 各位,能不能给我讲一下“句柄”是怎么一回事? 唉,心情不爽 关于C++语法的问题? 灌水-----大学时的恶作剧(转载) "setdibs()"是什么来着,请指教,谢谢! 写注释不宜过头 这段代码错在哪里? 请大家预测一下比分(参与者都有分)开赛后就不算了,还有半个小时,赶紧着 写网络电话程序的讨论 最后一帖,贴完睡觉----如何在电梯里捣乱 怎样定制一个在程序中重用的组件?只能通过包方式吗? 寻寻觅觅 汉英计算机科技文章 互译!!有劳各位朋友费心帮忙找找 我靠!真TMD不爽,这个时候准老婆的老妈进了医院! 怎样调用*.db格式文件 谁知道哪儿有英汉互译,急急急急!!!! ISO 9001认证 VS CMM2 谁知道哪儿有《神秘的人月》下载? 为111222求情 怎样可以修改浏览器的标题? 怎样可以修改浏览器的标题1? 哪位能给我一个source insight 3.0的sn号? 怎样可以修改浏览器的标题2? 如何异步调用远程组件的方法? 哈哈!球赛开始了!我也不想去医院了!!!顶多明天挨顿骂! 上CSDN的有谁是七月份毕业,大家认识一下 我想问问,一个程序员的黄金年龄是多少? 如何由CRgn得到一组Polygon? 初学者请教一个小问题!急急急,尿都快急出来啦! 急急急急急急急急急急,用vb怎样知道COM口是不是打开着,能不能不用控件高分. 高手请看:20 分 我想给50 分,但是系统只让给20分,对不起大家了,有机会一定补上!!! 关于一个报表问题,急! 我需要一个Hackman的配套的Debugger,有谁知道哪有 现在就用VB.net开发商用程序可靠吗? 急急急急急急急急急急,用vb怎样知道COM口是不是打开着,能不能不用控件,怎样用API函数,高分。 中乌最新战报!!!!!!!!!! 2(x-2. ..二元一次方程组...有一些苹果箱,若每只装苹果25千克,则剩余40千克无处装,若每只装30千克,则余20只空箱,这些苹果箱有多少只?请列式计算...PS...符号"^"表示上标..即N次方...每个方程组之间请 设方程2^x+x+2=0和方程log2 x+x+2=0的根分别为p和q,则p+q=?我想知道,作出y=2^x,y=log2 x,及y=-x-2的图像以后, 8(X-6.2)=41.6 (X-3)/2=7.5 这两个方程怎么解 列二元一次方程组解2道初中数学题1,一旅馆的客房有3人间和2人间,3人间每人每晚25元,2人间每人每晚35元.一个50人的旅游团到该旅馆住宿,租住了若干客房且每个客房正好住满,一天共花住宿费1 已知方程2^x+x+2=0的根为P,log2(x+x+2)=0的根为q,记f(x)=(x+p)(x+q)+2则A,f(0) 帮忙解一道方程,x-18=3(x-26) 初中数学二元一次方程组题一个两位数,个位数字比十位数字大5.如果把个位数字对调,那么所得到的新数与原来数的和是143.求原来的两位数 2x-3/4=5/6 . (x-2)/(x+2)+16/(4-x^2)=(x+2)/(x-2) 初中数学题(有关二元一次方程组~急)1.若|X+Y-3|+(X-Y)^2=0,你能求出X,2.已知t满足方程组{2x=3-5t,则x和y之间满足的关系式是_______3y-2t=x, 6.3-2x+4.5=7. 解一道方程!3分之2(x-y)=4分之x+y-1 6(x+y)=4(2x-y)+16! 初中数学题二元一次方程组 解答两道方程题目(1)3x²=2x (2) (x+4)²=5(x+4)(1)3x²=2x (2) (x+4)²=5(x+4) 第十六题该怎么算?方程式来的. 方程log2 (x+4)=2^x的实数根的个数为好像是两解 请根据方程,x+2x+3x=72联系生活实际,编一道应用题(要求题目完整,题意清楚)明天就要交 [(4-x+4)*4/2]+(4x/2)=16 这道方程怎么算 方程log2(x+4)=3^x的实数根的个数为 编写一道应用题,使它满足下列要求:1:题意适合一元一次方程2x+8=6-2x 2:所编应用题应完整,符合实际. x+9=2x-9这个方程怎么解 方程log2(x+3)=3的x次方的实数根的个数 8道一元一次方程应用题先说明要有步骤不要只有一个答案 不用再步骤中插入解说。一定要用方程!1、两个仓库装粮食,第一个仓库是第二个仓库存粮的3倍,如果从第一个仓库中取出20吨放 求方程9^2x-1=4^x的解 判断方程Log2(x)+x^2=0在区间[1/2,1]内有没有实数根,为什么? 求一元一次方程答案 2x-1/6=5x+1/8带步骤的速度要快 方程9^(2x-1)=4^x的解x=RT 方程log2 (x+4)=(1∕2)^x的实数根的个数为答案为1个数 不用画图能做吗!最好不要画图能做! 求30-40道初一的一元一次方程练习题!不要应用题,像2x+1=x+3这种题不要 2x—9=x+9(方程解答) 方程ln(3*2^x-2)=log2的3+log2的1/3d的解为 解下列方程:2x+3y=4,3x-2y=11. x比6分之5=9分之5【比例方程】 方程log2(2^x+1)log2(2^(x+1)+2)=2的解为 要具体方程log2(2^x+1)log2(2^(x+1)+2)=2的解为 要具体过程 3x-2y=8,2x+3y=7 用加减消元法解这个方程 解下列方程 15分之4+X=1-15分之4 X-(3分之2+4分之1)=6分之5 方程log2(9ˇx-5)=log2(3ˇx-2)+2的解集是过程理由 已知3x+2y=17,2x+3y=13,则x-y=( ).方程2x+y=6的正整数解是( ) 3分之2(x+1)=6分之5(x+1)-1++方程怎么解 x^log2(x+2)=8 解对数方程, 3x-2y=6 2x+3y=17 解方程 8题的方程. 求方程log2(x+4)=(1/3)^x的根的个数,并说明理由给点思路也行..请误乱写P言 省得没人问津 以为有人答了.] 0.01分之4-6x-6.5=0.02分之0.02+2x-7.5 求救7,8两题拜托用方程解 方程log2(x+5)=4^x的实根的个数为RT!求教! 已知关与X的方程.2分之2M+X=4的解是方程3分之2X-3M-4分之X-1=6X-1的解的5 倍求这两个方程的解. 7.8-x=6.2这个方程怎么解 方程log2(x+a)=3^x的实根的个数A.0B.1C.2D.3 (0.1x-0.2)/0.01-6.5=(0.02-2x)/0.02-7.5 解方程 第6、7题用列方程解决. 方程log2(x+4)=x^(1/3)根的个数是几个 (4-6x)/0.01-6.5+(0.02-2x)/0.02-7.5(注意解方程按步骤先通分再去分母再移向的做法)sorry……(4-6x)/0.01-6.5=(0.02-2x)/0.02-7.5 6、7、8题怎么做直接列方程不用解 方程log2(2^x+1)log2(2^(x+1)+2)=2的解 解方程4-6x/0.01+1=0.02-2x/0.02和2|2x-1|+1=5 X+6/5X+6/5X*31/4=320这个方程怎么解 七年级上册数学复习题3答案 速度好急快啊要方程的式子 和答案 6.7.8.9题要过程 急 速度速度速度速度速 方程log2(2^x+1)log2(2^(x+1)+2)=2的解为给答案就行
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn