gpt4 book ai didi

c++ - 从闭源库中检索静态指针,不由公共(public)接口(interface)公开

转载 作者:太空宇宙 更新时间:2023-11-04 14:02:25 25 4
gpt4 key购买 nike

我正在使用一个我无法更改代码的 dll。我有一个公共(public)接口(interface),它公开了我正在使用的类 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;
}

公共(public)头文件不会以任何方式公开 Texture 类。我需要访问 Texture::_dib 指向的内存。理想情况下,我希望能够从任何地方调用 staticGetTextureById,但内存是我所追求的。不过,我或多或少知道 Texture 类的样子。

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

任何想法如何检索这个指针?我会很高兴任何解决方案,无论多么 hacky 只要它不会崩溃并且工作得有点可靠。我需要一种比我得到的更快的方法来绘制那个内存。

最佳答案

根据我的理解,就类的设置方式而言,类的操作类似于 C 语言中的结构。因此,也许通过执行 ptrToClassObject+offset 它可能会起作用。有一种方法可以获得类成员的偏移量,我只是不知道它是如何设置的。

关于c++ - 从闭源库中检索静态指针,不由公共(public)接口(interface)公开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18673640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com