是否可以获取实现虚拟的函数的地址

逆向工程 C++
2021-07-05 06:40:46

我在导出表中有虚拟函数的地址,是否有可能获得实现函数的地址,这使得整个虚拟逻辑?


代码示例:

这是导出表的虚函数

class CORE_API FArchive
{
public:
    virtual ~FArchive()
    {}
    virtual void messageboxer(char* messagetext){}
};

这是虚函数实现

class FArchiveFileReader : public FArchive
{
public:

    void messageboxer(char* messagetext)
    {
        MessageBoxA(0, messagetext, "alert", MB_ICONERROR);
    }
};

所以在导出表中只有虚拟 - 就像那样?messageboxer@FArchive@@UAEXPAD@Z

如果我继续访问该地址(通过调试器在内存中),我会得到这个 http://i.imgur.com/VuJITVl.png?1 - 我没有看到任何有用的东西,比如 jmp 或 call。这个http://i.imgur.com/wegPZfq.png?1是函数实现的地方,它是否以某种方式连接?所以我可以计算它。

或者从导出表中获得虚拟函数地址 - 在获取函数地址(具有实际逻辑)方面没什么?

如果是这样 - 有人可以给我一篇简单而好的文章,描述如何获取实际函数(非虚拟)的地址。

PS 抱歉,如果我说话有点奇怪,英语不是我的通用语言,如果您认为我的文字中的某些地方不清楚,请告诉我在哪里,我会尽量解释得更好!

希望有人能帮助我

谢谢!

0个回答
没有发现任何回复~