0

覆盖附加的 DLL/SO 中导出的数据是否合法?

示例(win32):

t_Controller controller = (t_Controller*) GetProcAddress(SomeDLL, "Controller");
controller->Args = args; //  <--- here
controller->Run();
4

1 回答 1

1

好的 - 所以你正在导出某种结构。

一旦获得指向结构的指针,从exe写入结构是否合法,完全取决于它在dll中写入结构是否合法。

即它是一个常量结构吗?如果它没有被定义为 const,那么你可以写入它。如果它被定义为 const,那么你GetProcAddress只是一种复杂的转换方式const,这将导致 - 一如既往 - 导致未定义的行为。即它可能起作用,也可能不起作用,具体取决于您的编译器实现——通常是否将在全局范围内声明的静态对象放置在只读数据部分中。

于 2012-04-12T11:32:08.607 回答