我正在使用一个我无法改变的代码。我有一个公共接口,它公开了我正在使用的类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寄存器来查看是否可以恢复纹理指针,但这根本没有用。
如何检索此指针的任何想法?我会很高兴任何解决方案,无论多么糟糕,只要它不会崩溃并且可靠地工作。我需要一种更快的方法来吸引那些记忆,然后用我所得到的东西。
答案 0 :(得分:0)
根据我的理解,类在C的结构方面与它们的设置方式类似。所以,也许通过做ptrToClassObject + offset它可能只是起作用。有一种方法可以获得班级成员的抵消,我只是不知道如何设置。