获取有关函数地址的信息
Getting information about a function address
是的,这又是"这些"问题之一。
我得到了一个基本的反射框架,尽管它仍然需要前端用户手动注册每个方法(包括返回类型,参数)。然而,我得到的想法,使每个函数的虚拟需要反映,因为(即使它的编译器依赖)这些函数应该在技术上虚表(如果没有优化出来)。所以我得到了每个函数的地址,并成功地调用/执行了每个函数。然而,是否有一种方法可以"获取"函数的返回类型和参数类型?
现在在你说这是不可能的之前,我不介意最奇怪的方式,最黑客的方式,因为我只是为了挑战而这样做。但是,我不想要准备方法,或任何类似的东西,因为这不是我的目标。
使用反编译器或调试器(idapro, ollydebug, windasm…)然后检查在调用猜测参数的函数之前有多少次push,并尝试查找eax中存储的内容以了解返回结果。这是低级别的东西,根本不是一件容易的事。
在c++ 11中,您可以使用如下模板创建注册和调用接口:
template <class Return, class... Args>
然后可以将其专门化以在注册函数中存储类型信息,并将其与运行时参数进行比较:基本上,通过模板元编程序列化类型对象,比较,将函数指针强制转换为所需的类型,并使用参数列表调用它。
相关文章:
- 将数组的地址分配给变量并删除
- 正在查找文档以获得PS4平台的C++中的设备信息
- 空基优化子对象的地址
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 如何在c++程序中找到函数的地址
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 为什么类型转换对象不会更改其地址?有关对象类型的信息存储在哪里?
- 使用DHCP获取IP地址,网关,掩码和广播信息
- 获取WinPcap地址信息时出错
- 如何使用本机 Wifi API C++获取 MAC 地址和信道信息
- 如何获取 IP 地址(IPv4 为空,但存在 IPv6),内容的详细信息
- 指针具有良好的地址,但不显示真实信息
- 获取有关函数地址的信息
- 如果用调试信息编译,则通过其名称获取全局变量地址
- 在类数据结构中存储地址和路由信息
- 如何通过符号在内存中的地址获取有关符号的更多信息
- C++套接字 - 从结构数组返回单个地址信息