/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, filename
suivi 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 :
key
address
[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 size
facultative. 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
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.
Sélectionnez la page de propriétés Avancées de l’Éditeur >de propriétés>de configuration.
Modifiez la propriété Adresse de base.
Pour définir cette option de l'éditeur de liens par programmation
- Consultez BaseAddress.
Voir aussi
Informations de référence sur l’éditeur de liens MSVC
Options de l’éditeur de liens MSVC