Introduction

DOSBox est un émulateur MS-DOS qui nécessite d'être un émulateur x86. Mais contrairement à d'autres émulateurs x86 comme 86Box ou QEMU, les parties DOS sont intégrées de manière inextricable. Lorsque vous exécutez des programmes à l'intérieur de DOSBox, il est difficile de détecter si vous êtes réellement sur un système MS-DOS ou sur un émulateur.

Contexte Technique

Les émulateurs MS-DOS comme DOSBox doivent simuler le comportement d'un système MS-DOS, y compris les interruptions BIOS et le POST. Cependant, les émulateurs ne sont pas parfaits et peuvent présenter des différences par rapport au système réel. Une des méthodes pour détecter si l'on est à l'intérieur de DOSBox est d'utiliser les commandes comme MOUNT ou VER qui semblent avoir la capacité de « percer » vers le monde extérieur.

Analyse et Implications

Une méthode simple pour détecter DOSBox est de récupérer la chaîne de version du BIOS à l'adresse FE00:0061, mais cela peut être modifié ou contourné. Une autre approche consiste à analyser les opcodes utilisés par les programmes exécutés à l'intérieur de DOSBox. En utilisant un désassembleur, on peut identifier des opcodes spécifiques à DOSBox qui ne sont pas présents dans les processeurs x86 standard. Par exemple, l'opcode FE /7 est utilisé pour appeler des callbacks, ce qui est une fonctionnalité exclusive à DOSBox.

Perspective

La détection de DOSBox depuis l'intérieur de l'émulateur nécessite une compréhension approfondie des mécanismes internes de l'émulateur et des différences par rapport aux systèmes MS-DOS réels. Les méthodes de détection peuvent être contournées ou modifiées, il est donc important de rester à jour avec les dernières évolutions de l'émulateur. De plus, la compréhension des opcodes x86 et de leur encodage est essentielle pour analyser et détecter les spécificités de DOSBox.