gpt4 book ai didi

c++ - Hook 非虚类成员函数

转载 作者:行者123 更新时间:2023-11-28 07:09:48 28 4
gpt4 key购买 nike

我设法 Hook 了所有我想要的东西(API 函数、虚拟方法、“标准”函数),但我想知道如何 Hook 一个非虚拟 类成员函数(方法)。要 Hook 一个虚拟方法,您只需要获取 VTable 并对其进行修补(或复制它、修改它并更改 VPointer)。然而,当方法是NOT virtual时,就没有 VTable。

首先,如何从方法的名称中获取我要hook的方法的地址?我无法使用 GetProcAddress(),因为该函数未导出。唯一的方法似乎是在内存中搜索与函数对应的字节模式。然后,一旦我得到地址,我该如何 Hook 它?使用基本方法 (JMP)?如果我只想 Hook 一个实例怎么办?我想我会检查我的 Hook 函数:如果它是正确的实例,那么就做必须做的事情,否则只执行它而不做任何其他事情。

实际上,我正在寻找更好的解决方案,因为我认为上面的解决方案可行,但它们不是很“整洁”,对吧?

谢谢。

最佳答案

大多数情况下,转移静态解析函数是根本不可能的。您听说过这种称为内联 的优化吗?即使没有发生这种情况,COMDAT 折叠也会使您无法隔离您感兴趣的函数。

强烈推荐阅读:Raymond Chen's "Why does the debugger show me the wrong function?"

关于c++ - Hook 非虚类成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21197011/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com