我正在使用无法更改代码的 dll。我有一个公共接口,它公开了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 寄存器来查看是否可以恢复纹理指针,但这根本没有成功。
任何想法如何检索此指针?我会很高兴任何解决方案,无论它多么老套,只要它不会崩溃并且工作可靠。我需要一种更快的方法来吸引我的记忆。