c++ - 获取有关函数地址的信息

标签 c++ reflection

是的,又是“这些”问题之一。

我已经建立并运行了一个基本的反射框架,尽管它仍然需要前端用户手动注册每个方法(包括返回类型、参数)。但是,我想到了使每个需要反射(reflect)的函数成为虚拟函数的想法,因为(即使它依赖于编译器)这些函数在技术上应该在 vtable 中(如果没有优化的话)。所以我得到了每个函数的地址,并成功调用/执行了每个函数。但是,有没有一种方法可以在给定此函数的地址的情况下“获取”返回类型和参数类型。

现在,在您说这是不可能的之前,我不介意最奇怪、最骇人听闻的方式,因为我这样做只是为了挑战。但是我不想要准备方法或任何类似的东西,因为那不是我的目标。

最佳答案

使用反编译器或调试器(idapro、ollydebug、windasm ...)然后检查在调用该函数之前有多少推送来猜测参数,并尝试找到存储在 eax 中的内容以了解什么是返回。这是低级的东西,根本不是一件容易的事。

关于c++ - 获取有关函数地址的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33026365/

相关文章:

c# - 当我为类的字段赋值时,添加一些与特定字段关联的元数据?

java - 类加载器之间的反射参数类型不匹配

c++ - 编译包含 V8 的项目时文件无效或损坏

c++ - 在 C++ 中共享底层状态

c++ - 将 void 指针增加一个字节?两个?

c++ - 未使用的模板方法中的错误

java - 类型不匹配 : cannot convert from Class<capture#1-of ? > 到 Class<?>[]

Windows 下 Visual Studio 2012/英特尔编译器的 C++ double 失败

java - 是否可以在不使用反射的情况下获取.class文件(在java中)的信息

java - 如何从Java中的抽象类改变私有(private)字段?