从闭源库中检索静态指针,不由公共接口公开
Retrieving a static pointer from a closed-source library, not exposed by the public interface
我正在使用一个我无法更改的代码的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 类不会以任何方式由公共头文件公开。我需要访问纹理::_dib指向的内存。理想情况下,我希望能够从任何地方呼叫staticGetTextureById
,但记忆是我所追求的。但是,我或多或少知道纹理类的样子。
我已经尝试过在调用 DrawSetTexture 后通过摆弄 cpu 寄存器来恢复纹理指针,但这根本没有奏效。
任何想法如何检索此指针?无论多么笨拙,只要它不会崩溃并且工作可靠,我都会对任何解决方案感到高兴。我需要一种更快的方法来吸引那个记忆,然后用我得到的东西。
根据我的理解,类在设置方式方面与 C 中的结构类似。所以,也许通过做ptrToClassObject+offset,它可能只是工作。有一种方法可以获取类成员的偏移量,我只是不知道它是如何设置的。
相关文章:
- 如何使用接口指针调用方法,该指针是其具体类的一部分,而不是接口的一部分
- 静态声明专用类的接口指针数组
- 如何找到C 接口指针的地址
- 将指向COM接口指针的指针从托管c++传递到.NET c#
- 当从一个应用程序调用时,在DLL方法中创建COM接口指针是有效的,但当从另一个应用软件调用时则无效
- 创建 COM 接口指针在开发计算机上有效,但会导致其他计算机上的应用程序崩溃
- 如何在C#中使用C++DLL导出的接口指针
- 如何将共享_ptr用于com接口指针
- 为什么Visual Studio 2010(Intellisense)会停止生成接口指针
- 将COM接口指针传递给函数
- 通过抽象模板基类接口指针访问派生类方法,而无需在接口中显式类型
- 将从接口派生的类的实例添加到接口指针数组中
- 声明没有头文件的COM接口指针
- 如何向上查询或向下查询接口指针
- 处理接口指针的方法的正确实现
- 我该如何处理c++中指向接口指针的指针呢?
- c++将基指针强制转换为接口指针
- 我可以将对象类强制转换为它实现的接口指针吗
- 释放接口指针
- 从进程外COM服务器返回接口指针的正确方式是什么