Lors du débogage d'une application, j'ai trouvé en mémoire une structure dont je suis sûr à 100% que se compose de 4 chaînes. Bien que je ne sois pas tout à fait sûr comment je le convertirais en une structure de données ainsi je peux employer l'adresse de pointeur de structures pour accéder aux valeurs. Par exemple ici, est ce que la structure de données ressemble en mémoire (comme un exemple permet de dire qu'il est toujours situé à l'adresse de mémoire 0x123456) C++ convertir la mémoire en structure de données
Les données structureconsists de 4 cordes séparées
string 1 = ad
string 2 = dgdhkkkkkkhkk
string 3 = ggghhjk
string 4 = dgcfoh
Et j'ai a essayé de créer une structure de données comme
struct reversedConnectionDat_t
{
char * data1;
char * data2;
char * data3;
char * data4;
}
et voici comment j'ai essayé d'accéder aux données
reversedConnectionDat_t * storeDat = (reversedConnectionDat_t*)0x123456;
print(storeDat->data3);
Mais cela ne semble pas fonctionner. Est-ce que je ne lis pas correctement les chaînes de la mémoire?
(Oh, et les cordes changent parfois de ce que je poste dans le code exemple affiché ci-dessus, soit parfois chaîne 1 sera 7 en longueur et chaîne 3 ne sera 2 longueur etc ...)
La mémoire ne contient pas de pointeurs, donc votre structure ne devrait pas non plus. Utilisez des tableaux de char simple. Et désactiver le remplissage et l'alignement ... – Thomas
Ils ne me ressemblent pas, comment êtes-vous sûr que c'est ce qu'ils sont? – harold
@harold Je connais la fonction à laquelle ils sont passés. La fonction prend 4 paramètres, et tous les 4 sont des chaînes. – reflexdev