cs_elpens
Messages postés260Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention 3 novembre 2007
-
1 oct. 2007 à 18:58
cs_elpens
Messages postés260Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention 3 novembre 2007
-
2 oct. 2007 à 13:47
Bonjour,
Je voudrais savoir si le champ "charactéristics" de ma section est executable
Pour ce faire, il me faudrait un moyen de faire tout d'abord un "substring" de
pimage_section_header->Characteristics
afin de pouvoir utilisé que la première valeur (0x6XXXXXXX)
Ensuite, il me faut un moyen de convertir cette valeur en binaire, afin de pouvoir y appliquer un "masque" lors d'une fonction AND
Ex:
0110 --> le 6 à comparer
0010 --> le masque 2 (Ce qui signifie que le champs characteristic est EXECUTABLE)
------
0010 --> le 6 est bel est bien EXECUTABLE
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 1 oct. 2007 à 19:30
Salut,
Pour savoir si le champ est exécutable, il suffit de tester le bit 5 de la valeur:
ULONG valeur=0xadcd2946;
ULONG masque=0x00000020; // = IMAGE_SCN_CNT_CODE
ULONG result=valeur & masque;
if(result) --> exécutable
else --> non exécutable
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 2 oct. 2007 à 12:39
Je n'avais pas bien lu ta question mais la méthode que je t'ai donné doit marcher avec n'importe quel autre flag:
ULONG valeur=0x6dcd2946;
ULONG masque=0x20000000; // = IMAGE_SCN_MEM_EXECUTE
ULONG result=valeur & masque;
if(result) --> exécutable
else --> non exécutable
cs_elpens
Messages postés260Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention 3 novembre 2007 2 oct. 2007 à 09:04
Mais malheureusement cela ne fonctionne pas.......
if
((pimage_section_header->Characteristics) && IMAGE_SCN_MEM_EXECUTE == IMAGE_SCN_MEM_EXECUTE)
(Ou aussi avec IMAGE_SCN_CNT_CODE)
passe pour les valeurs: 0x60000020 (code:execute:read); 0xC00000040 (initialized data: read: write) ; 0x400000040 (initialized data: read)
Alors qu'il faut qu'il ne passe que le premier...
ElpenS
Vous n’avez pas trouvé la réponse que vous recherchez ?