2010-10-28 17 views
0

lors de l'utilisation des DLL ou code d'injection pour être spécifique
ceci est une classe d'exemple uniquement destiné à expliquerLes membres de la classe sur les exportations

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

qui couvre les éléments les plus courants qui est inclus dans les classes
maintenant lors de l'exportation de cette fonction à une autre DLL ou application
et manqué un élément de ceux-ci, membre de données ou membre de la fonction, privé ou public
ce qui se passe ou a changé leur ordre?
et si chaque fonction est assignée sa valeur lorsque le code-Injecter comme

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

ce qui est le passe dans ce cas, si les membres de la classe sont des pointeurs qui sont affectés après la construction de classe et a ensuite raté un membre ou changé leur commande ?

+0

Attention, je vois un comportement non défini venir à vous. –

+0

Certainement pas d'espoir .. Il est vraiment important de savoir avec certitude quel genre de comportement j'attends – VirusEcks

Répondre

1

Je suppose que vous avez oublié d'ajouter un public: (:)

mynewclass1 est initialisé statiquement à zéro au moment de la charge (sauf si vous travaillez sur la version très ancienne de fenêtres). si vous ajoutez un constructeur à votre comportement de classe deviendra imprévisible car il est assez difficile de savoir quand la statique est effectivement initialisée (dépendances au niveau du lien au moins).