Erreur lors de l'ajout d'une nouvelle section dans un programme de type PE

Le
Pascal Rito
Bonjour tout le monde.

J'ai voulu ces derniers temps mettre sur pieds un packer.
Après quelques recherches sur internet, je suis tombé sur cet article
de lilxam (http://lilxam.tuxfamily.org/blog/?p=117).
Après avoir fini de coder mon packer avec ses explications, je me
retrouve confronté à un problème que je n'arrive pas à résoudre.
Ainsi je viens quérir votre aide.

Lors de la création de la nouvelle section qui contiendra le loader,
mon programme plante sur la fonction memcpy, surement à cause d'un
pointeur mal initialisé. Et ce serait pNewSection (un
PIMAGE_SECTION_HEADER).
Mais je n'arrive pas à savoir pourquoi il est mal initialisé. Et parce
qu'il y a une ligne dans le code de lilxam que je n'arrive à
comprendre, et qui, je pense, est en rapport avec mon problème.
Mais je n'affirme rien.

Ainsi je me retrouve avec cette fonction : http://pastebin.com/m708df224
Avec GetSectionHeader une fonction me retournant la SectionHeader du
fichier, GetFileHeader, la COFF et GetOptionalHeader,
l'OptionalHeader.

Ce que je tiens pour sûr est que ce n'est pas le fichier qui est mis
en cause (il est bien ouvert, et mappé en mémoire avec succés).

Alors sauriez-vous pourquoi mon programme plante à la ligne 20 du code
fourni ? Et si possible m'expliquer la ligne 18 que je ne comprends
pas très bien.

Amicalement votre. Pascal.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pascal Rito
Le #21223391
Je poste à nouveau un message car j'ai tenté de m'y prendre autrement
pour ajouter ma section mais je me retrouve toujours avec un SIGSEV
lorsque je tente de modifier les champs de la section.
Je vous passe le lien vers le code en question pour illustrer mes
propos et pour j'espère, obtenir une solution.

Voici le lien : http://pastebin.com/mfcb8987

J'ai vérifié plusieurs choses dans mon code et j'en suis arrivé là :
-le problème ne vient pas du mappage en mémoire du fichier, car il est
accompli correctement
-le problème ne vient pas de GetCOFFHeader
-le problème ne vient pas de GetOptionalHeader
-le problème ne vient pas de GetSectionHeader
-le SIGSEV provient de la ligne 30

Donc j'ai l'intime conviction que ma pMyNewSection est mal initialisée
mais je ne comprends pas pourquoi.

Pourrez-vous m'aider ?
Fred
Le #21224071
"Pascal Rito"

Donc j'ai l'intime conviction que ma pMyNewSection est mal initialisée
mais je ne comprends pas pourquoi.



J'ai pas regardé, mais tu devrais t'inspirer de cet exemple :
http://www.programmersheaven.com/2/PE-Protector
Pascal Rito
Le #21224301
On 18 fév, 16:38, "Fred"
"Pascal Rito"

>Donc j'ai l'intime conviction que ma pMyNewSection est mal initialisée
>mais je ne comprends pas pourquoi.

J'ai pas regardé, mais tu devrais t'inspirer de cet exemple :http://www .programmersheaven.com/2/PE-Protector



Merci pour ce lien qui est très complet, mais il ne répond pas à mes
attentes.
Ce que je voudrais comprendre, pour moi, c'est pourquoi mon
PIMAGE_SECTION_HEADER m'offre un généreux segment fault dès que je
veux changer l'une de ses valeurs.

En espérant trouver une réponse.
Pascal.
Publicité
Poster une réponse
Anonyme