2010-10-28 50 views
0

使用DLL或代码注入时要具体
这是一个示例类仅旨在用于说明类成员在进出口

class test 
{ 
    int newint1; 
    char newchararray[512]; 
    void (*newfunction1)(int newarg1); 
    int newfunction2(bool newarg1, char newarg2) 
    { 
     return newint1; 
    } 
} mynewclass1; 

覆盖出口此当这样包含在类
现在最常用的元素函数到另一个DLL或应用程序
并错过了那些元素,无论是数据成员还是函数成员,私有还是公开
发生了什么或更改了它们的顺序?
如果每个功能被赋予它的价值时,代码注入样

mynewclass1.newfunction1 = (void *)(newexportedfunction); 

什么是发生在这种情况下,如果类的成员是被一流的施工后,分配,然后错过了一个会员或改变指针的为了?

+0

小心,我看到未定义的行为正好在你身上。 – 2010-10-28 18:23:00

+0

当然希望不..真的很重要的是要知道我期待什么样的行为 – VirusEcks 2010-10-28 19:59:06

回答

1

我想你忘记添加一个公众:(:)

mynewclass1是加载时静态初始化为零(除非你的工作很老版本的Windows)。 如果向类中添加构造函数将会变得无法预测,因为很难知道静态何时被有效初始化(至少链接时间依赖性)。