Bonjour
Comment obtenir l'entry point d'un exe ???
Version imprimable
Bonjour
Comment obtenir l'entry point d'un exe ???
Bonjour,
Si mon anglais aproximatif est juste, il s'agit du point d'entré dans un programme. En C, il s'agit de la fonction main (c'est par la que commence l'exécution d'un programme).Citation:
Envoyé par Moustico
Maintenant comment l'obtenir :koi: Tout dépend de ce que tu entends par "obtenir".
J'ai rien compris. Tu veux faire quoi exactement ? Et surtout, quel rapport avec le langage C ?Citation:
Envoyé par Moustico
Ma question n'est pas de savoir ce qu'est l'entry point, (point d'entrée d'un prog)...
Je voudrais acceder aux données PE Header d'un ficheir executable..
En gros mon projet est de faire une simulation de virus.
Cela consiste en gros à changer le poitn d'entrée d'un programme, de le rediriier vers un morceau de code qu'on insere et qu'ensuite à la fin de ce cde on retourne à l'entrée point initial.
C'est étonnant comme projet...!?! Finalement, le meilleur moyen de se deéfendre contre les virus, c'est de savoir en écrire... Je n'ai aucune idée comment on réalise ce que veux faire, mais je ne suis pas certain que ce soit le bon forum.
Meilleures salutations
Thierry
Bonjour,
à peu de chose près :
Ensuite il ne reste plus qu'a faire ce qu'on appelle la "mutation" de l'OEP (original entry point), relocaliser ton nouveau code et sauter vers l'ancienne adresse du point d'entrée.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #include "windows.h" //ouverture du fichier PE ... // Obtenir la taille du fichier PE ... // allocation mémoire [vérifier si tout est ok en retour du malloc] AdresseBase = (unsigned char *) malloc (TailleFichier); ... // faire une simple lecture pour copier les données depuis le fichier vers l'espace alloué (fread ou ReadFile pour l'API win32) ... // on transtype l'adresse de base vers un pointeur de structure pImageDosHeader = (IMAGE_DOS_HEADER *) AdresseBase; // A ce moment précis, il faut absolument vérifier la validité du fichier PE !!! ... // si valide, on va chercher la structure INH pImageNtHeaders = (IMAGE_NT_HEADERS *) (pImageDosHeader->e_lfanew + (unsigned long)pImageDosHeader); // maintenant on peut récupérer le point d'entrée unsigned long PointEntree = pImageNtHeaders->OptionalHeader.AddressOfEntryPoint;
P.S : Pour ceux qui se questionnent, je n'écris pas de virus ! Mon boulot c'est plutôt de les analyser :D