2015-12-04 1 views
1

Je me suis conformé à une application très simple, il imprime juste le monde de l'enfer à une console C++ Win32. Je suis tombé sur une référence au fichier de base de données de débogage dans HxD, je ne l'avais jamais remarqué auparavant, je le construisais pour "debug" et non "release". J'ai changé cela, la version exécutable inclut également cette référence.Windows PE à partir de base de données de débogage du compilateur Visual C++

Est-ce que quelqu'un sait si je fais quelque chose de mal en ce qui concerne la sortie de ce produit? Quel serait le "bon" moyen de construire un exécutable pour la libération.

Je vois aussi un peu plus bas l'assemblage de projet XML, je suis intéressé par la minimisation de l'exécutable Windows PE, ai-je raison de penser qu'il doit y avoir des options plus compliquées? Peut-être que tout cela est à faire avec l'IDE et en utilisant juste un éditeur de texte et barebones complier est ce que je cherche?

HxD screenshot

Répondre

1

Même en mode release Visual C++ génère une base de données de programme (* .pdb, le chemin complet est intégré dans le par certains débogueurs binaire et peut être utilisé) et un fichier manifeste (le XML que vous voyez dans votre exécutable).

Désactiver génération PDB

  • Dans Visual C++, allez à vos propriétés du projet (Edit>xxx Properties [ALT + F7]).
  • Dans les propriétés du projet vont à Configuration Properties>Linker>Debugging
  • Set Generate Debug info à No (il faut dire Yes (/DEBUG) par défaut)

Attention: Vous allez maintenant avez pas des symboles pendant le débogage.

Désactiver fichier Manifest

  • Dans Visual C++, allez à vos propriétés du projet (Edit>xxx Properties [ALT + F7]).
  • Dans les propriétés du projet vont à Configuration Properties>Linker>Manifest File
  • Set Generate Manifest à No (il faut dire Yes (/MANIFEST) par défaut)

Vous pouvez également vérifier les propriétés dans Configuration Properties>Manifest tool.

Avertissement: les manifestes sont notamment utilisés pour le chargement côte-à-côte DLL, l'isolation COM et le contrôle d'accès utilisateur. Assurez-vous que votre exécutable s'exécute correctement lorsque la génération du manifeste a été désactivée.

Il existe plusieurs astuces pour réduire un fichier PE (en plus de la compression évidente) pour obtenir un fichier minimal à partir des passes du compilateur et du linker, ces astuces sont bien connues dans la demoscene, certaines d'entre elles sont explained here. Gardez à l'esprit que cela a quelques inconvénients et nécessite un test approfondi pour voir si le fichier PE résultant se comporte correctement.