没有目标DLL的钩子函数
Hook functions with no target DLL
我正在为exe编写一个分析工具。我有这个exe的源代码,所以我知道它使用哪些函数。我需要挂钩两个特定的函数,这样我就可以检查传递的参数。我感兴趣的函数不是任何DLL的一部分,但它们是程序的一部分。
我开始使用弯路写一个钩子DLL拦截函数调用。我编写了钩子DLL,在那里我指定了要钩子的函数,但不幸的是,因为没有DLL可以引用,当我编译钩子DLL时,我无法解析函数名称。
我该如何解决这个问题?
这不是一个完美的解决方案,但它将解决您的问题:
你可以通过在目标程序中做这样的事情来获得函数的相对偏移量:
int FuncToGet()
{
int x = 5;
return x;
}
int main()
{
intptr_t baseAddr = (intptr_t)GetModuleHandle(NULL);
intptr_t relativeoffset = baseAddr - (intptr_t)&FuncToGet;
std::cout << "Relative offset = 0x" << std::hex << &relativeoffset;
}
你可以用它打印出你想要挂钩的函数的相对偏移量。
然后将相对偏移量添加到目标进程中模块的基址,这是您在运行时获得的。
然后你可以使用这个地址来挂钩函数
相关文章:
- 从 c 或 cpp 系列子函数返回到主函数
- C++:为什么我的掷骰子函数在掷骰子数量时只返回偶数整数?
- 禁止子函数调用父级的抽象(或虚拟)函数
- 我想要一个具有子函数的函数访问相同的命名函数,而不使用它取决于其子类的类
- 添加字符串类型的类成员会导致调用基类函数而不是子函数
- C++调用子函数
- 如何在C++从父实例调用子函数
- 是否有理由大多数/所有 try-catch 示例只对 throw 语句使用 void 子函数
- CRTP 在父级析构函数中调用子函数
- 在函数和子函数中调用相同的关键部分
- 整数模板参数和子函数调用
- LNK2019某些类函数,但不在其他类函数(DLL 中的模板类)上
- 如何在C++中创建具有子函数的对象
- 使用子函数的继承函数
- 从void子函数检索int值到C++中的函数
- 现有的标准函子/函数,用于检查等于 0
- 通过指针修改子函数中函数的局部变量的内容
- 重载算子函数==
- 如何编写返回类型的函数,该类型是其子函数的返回类型
- c++11 子函数中的随机数生成器