2010-10-28 3 views
0

При использовании библиотеки DLL или код инъекционного быть Specific
это пример класс предназначены только для объяснениякласса Членов над экспортом

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

, которая охватывает наиболее общие элементы, которые включали в классах
Теперь при экспорте этого функция в другую DLL или приложение
и пропустил элемент из тех, кто является членом или членом своей группы данных, частный или общедоступный
Что происходит или изменен?
и если каждая функция присваивается это значение, когда Code-Инъекция как

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

что такое происходит в этом случае, если члены класса являются указателями, которые назначены после класса строительства, а затем пропустили один элемент или изменили их заказ ?

+0

Осторожно, я вижу, что неопределенное поведение происходит прямо у вас. –

+0

Безусловно, Надеюсь, что нет. Это действительно важно знать наверняка, какое поведение я ожидаю – VirusEcks

ответ

1

Я полагаю, что вы забыли добавить общественность: (:)

mynewclass1 статически инициализируются нулем во время загрузки (если вы не работаете на очень старую версию окон). , если вы добавите конструктор в поведение вашего класса, станет непредсказуемым, потому что довольно сложно узнать, когда статический файл инициализируется (по крайней мере, временные зависимости между ссылками).