从闭源库中检索静态指针,而不是由公共接口公开

时间:2013-09-07 13:11:20

标签: c++ memory

我正在使用一个我无法改变的代码。我有一个公共接口,它公开了我正在使用的类Surface

dll的代码包含类似的内容:

static Texture  staticTexture[MAXTEXTURECOUNT];
static Texture *staticTextureCurrent = NULL;
static Texture *staticGetTextureById(int id);

class Texture
{
public:
    int     _id;

...
    void   *_dib;
...
};

void Surface::DrawSetTexture(int id)
{
    Texture *texture = staticGetTextureById(id);
    staticTextureCurrent = texture;
}

公共头文件不以任何方式公开Texture类。我需要访问Texture :: _ dib指向的内存。理想情况下,我希望能够从任何地方呼叫staticGetTextureById,但记忆就是我所追求的。 但是我或多或少知道Texture类的外观。

在调用DrawSetTexture之后,我已经尝试通过调整cpu寄存器来查看是否可以恢复纹理指针,但这根本没有用。

如何检索此指针的任何想法?我会很高兴任何解决方案,无论多么糟糕,只要它不会崩溃并且可靠地工作。我需要一种更快的方法来吸引那些记忆,然后用我所得到的东西。

1 个答案:

答案 0 :(得分:0)

根据我的理解,类在C的结构方面与它们的设置方式类似。所以,也许通过做ptrToClassObject + offset它可能只是起作用。有一种方法可以获得班级成员的抵消,我只是不知道如何设置。