Question:
Puis-je définir le point d'entrée au niveau du code dans les en-têtes PE?
edhoklorf
2013-08-25 17:08:42 UTC
view on stackexchange narkive permalink

Si je définis quelque chose comme 0x00000040 (mon code se trouve à cette adresse), le programme se bloque avec cette erreur:

  L'application n'a pas pu démarrer correctement (0xc000007b)  

Mais si je jmp de la section de code à 0x00400040 alors cela fonctionne.

Pourquoi ai-je eu une erreur avec cela adresse étrange ( 0xc000007b )? Est-il possible de démarrer l'exécution du programme à partir de code qui se trouve en dehors des sections?

J'utilise Windows 8.

Si vous définissez 0x00000040 où?
0x40 comme adresse d'EP dans l'en-tête facultatif (décalage 0x110)
L'erreur est définie dans `ntstatus.h` du WDK. Le code d'erreur existe depuis longtemps et est connu sous son nom symbolique comme «STATUS_INVALID_IMAGE_FORMAT».
Un répondre:
Ange
2013-08-25 20:51:40 UTC
view on stackexchange narkive permalink

Windows 8 introduit une nouvelle restriction: le AddressOfEntryPoint ne peut pas être inférieur à SizeOfHeaders.

Définissez SizeOfHeaders à AddressOfEntryPoint pour le faire fonctionner.

L'erreur que vous obtenez est définie dans ntstatus.h comme suit:

  //// MessageId: STATUS_INVALID_IMAGE_FORMAT //// MessageText: //// {Mauvaise image} //% hs n'est pas conçu pour fonctionner sous Windows ou contient une erreur. Essayez de réinstaller le programme à l'aide du support d'installation d'origine ou contactez votre administrateur système ou le fournisseur du logiciel pour obtenir de l'aide. État d'erreur 0x% 08lx .//# définir STATUS_INVALID_IMAGE_FORMAT ((NTSTATUS) 0xC000007BL)  


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...