/BASE (Adresse de base)

Spécifie l’adresse de base d’un programme.

Syntaxe

/BASE:{address[,size] | @filename,key}

Notes

Remarque

Pour des raisons de sécurité, Microsoft vous recommande d’utiliser l’option /DYNAMICBASE au lieu de spécifier des adresses de base pour vos exécutables. /DYNAMICBASE génère une image exécutable qui peut être rebase de manière aléatoire au moment du chargement à l’aide de la fonctionnalité de randomisation de disposition de l’espace d’adressage (ASLR) de Windows. L’option /DYNAMICBASE est activée par défaut.

L’option /BASE éditeur de liens définit une adresse de base pour le programme. Il remplace l’emplacement par défaut d’un fichier EXE ou DLL. L’adresse de base par défaut d’un fichier EXE est 0x400000 pour les images 32 bits ou les 0x140000000 pour les images 64 bits. Pour une DLL, l’adresse de base par défaut est 0x10000000 pour les images 32 bits ou 0x180000000 pour les images 64 bits. Sur les systèmes d’exploitation qui ne prennent pas en charge la randomisation de disposition de l’espace d’adressage (ASLR) ou lorsque l’option a été définie, le /DYNAMICBASE:NO système d’exploitation tente d’abord de charger un programme à son adresse de base spécifiée ou par défaut. Si l’espace est insuffisant, le système déplace le programme. Pour empêcher la réinstallation, utilisez l’option /FIXED .

L’éditeur de liens émet une erreur si address ce n’est pas un multiple de 64 Ko. Vous pouvez éventuellement spécifier la taille du programme. L’éditeur de liens émet un avertissement si le programme ne peut pas tenir dans la taille que vous avez spécifiée.

Sur la ligne de commande, une autre façon de spécifier l’adresse de base consiste à utiliser un fichier de réponse d’adresse de base. Un fichier de réponse d’adresse de base est un fichier texte qui contient les adresses de base et les tailles facultatives de toutes les DLL que votre programme utilise et une clé de texte unique pour chaque adresse de base. Pour spécifier une adresse de base à l’aide d’un fichier de réponse, utilisez un signe@ () suivi du nom du fichier réponse, filenamesuivi d’une virgule, puis de la key valeur de l’adresse de base à utiliser dans le fichier. L’éditeur de liens recherche filename dans le chemin spécifié ou si aucun chemin d’accès n’est spécifié, dans les répertoires spécifiés dans la LIB variable d’environnement. Chaque ligne représente filename une DLL et a la syntaxe suivante :

keyaddress [size] ;comment

Il key s’agit d’une chaîne de caractères alphanumériques et ne respecte pas la casse. Il s’agit généralement du nom d’une DLL, mais ce n’est pas obligatoire. Il key est suivi d’une base address en langage C, hexadécimal ou décimale et d’une valeur maximale sizefacultative. Les trois arguments sont séparés par des espaces ou des onglets. L’éditeur de liens émet un avertissement si l’espace d’adressage virtuel spécifié size est inférieur à l’espace d’adressage virtuel requis par le programme. A comment est spécifié par un point-virgule (;) et peut se trouver sur la même ou une ligne distincte. L’éditeur de liens ignore tout le texte du point-virgule à la fin de la ligne. Cet exemple montre une partie de ce fichier :

main   0x00010000    0x08000000    ; for PROJECT.exe
one    0x28000000    0x00100000    ; for DLLONE.DLL
two    0x28100000    0x00300000    ; for DLLTWO.DLL

Si le fichier qui contient ces lignes est appelé DLLS.txt, l’exemple de commande suivant applique ces informations :

link dlltwo.obj /dll /base:@dlls.txt,two

Une autre façon de définir l’adresse de base consiste à utiliser l’argument BASE d’une instruction ou LIBRARY d’une NAME instruction. Les /BASE options et /DLL les options sont équivalentes à l’instruction LIBRARY .

Pour définir cette option de l'éditeur de liens dans l'environnement de développement Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.

  2. Sélectionnez la page de propriétés Avancées de l’Éditeur >de propriétés>de configuration.

  3. Modifiez la propriété Adresse de base.

Pour définir cette option de l'éditeur de liens par programmation

Voir aussi

Informations de référence sur l’éditeur de liens MSVC
Options de l’éditeur de liens MSVC