Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Win XP - limitations d'accès au hardware

39 réponses
Avatar
CriCri
Salut l'encyclopédie pour les nuls

J'avais compris que sous Win XP l'accès direct au hardware était
interdit. Et depuis mon passage à XP il y a quelques ans je n'en avais
jamais vraiment eu besoin: une fois j'ai bien reçu une insulte parce que
je voulais m'adresser directement à un périph - mais ce n'était pas
indispensable et j'ai trouvé une autre solution sans devoir chercher
plus loin.

Cependant, suite au discussions récentes concernant certains problèmes
de clavier j'ai découvert que
1. des utilitaires que j'ai écrits il y a longtemps (compilés sous MSC
5 - et que je viens de mettre à jour); qui utilisent de l'assembleur
'inline' - avec des appels aux Int21H, 10H, 13H et 16H - fonctionnent
toujours parfaitement sous XP.
2. je peux toujours me servir de 'debug' dans une console DOS sous
Windows XP pour inspecter et modifier directement la mémoire (en
particulier dans le cas présent des adresses 0000:nnnnH dans le BIOS)
sans aucune contrainte.

Alors où est la réalité? Qu'est qui est autorisé et qu'est-ce qui est
vraiment interdit?
En clair, y a-t-il des accès qui sont réellement interdits, ou peut-on
_tout_ contourner avec des astuces officieux?
Je vais bien sûr poursuivre mes propres tests mais je serais également
intéressé par les expériences des autres.

Amicalement
CriCri

PS - je vais rajouter quelques utilitaires de diagnostic sur mon site
(tout à fait au fond) - que je croyais périmés mais qui finalement ne le
sont pas du tout.

--
bitwyse [PGP KeyID 0xA79C8F2C]
Les conseils - c'est ce qu'on demande quand on connaît déjà la réponse
mais aurait préféré ne pas la savoir.
http://www.le-maquis.net

10 réponses

1 2 3 4
Avatar
Pascal Hambourg
Salut,

CriCri a écrit :

Ben le BIOS fait bien partie du hardware...



Non, le BIOS c'est du logiciel.

A ce compte-là, l'OS ferait aussi partie du matériel puisqu'il est
stocké sur un disque dur.

Si je lis ou écris un registre dans le BIOS,



Un "registre dans le BIOS" ? Si tu parles de 0000:0417, c'est une bête
adresse en mémoire (virtuelle pour une boîte DOS), pas un registre
d'entrée-sortie matériel. Idem pour la table des vecteurs d'interruption.
Avatar
CriCri
Pascal Hambourg a écrit :

Non, le BIOS c'est du logiciel.



Une adresse à laquelle un logiciel stocke une valeur est constituée d'un
ensemble de transistors et condos, diodes et résistances (selon): donc
bien du _hardware_; que ce soit un registre ou - comme je l'aurais dû
écrire, tu as raison - une partie de la basse mémoire réservée au BIOS.
Mais en tout cas fonctionnellement ça ne change rien.

La question de fond est si j'ai le droit d'accéder à ce _hardware_.

Le "BIOS" est du firmware stocké dans du hardware. On peut consulter une
valeur écrit par ce programme en mémoire (que ce soit la sienne -
intérieure, ou la RAM de l'ordinateur): mais consulter une valeur dans
un logiciel n'a aucun sens. (A la limite si on lit la mémoire où le
logiciel est chargé on va voir les codes hexa de ses instructions...)

Mais grâce aux explications de Michel_D je crois avoir compris
maintenant que la table des vecteurs d'interruptions ainsi que le
contenu des adresses réservées au BIOS sont copiées dans la mémoire
virtuelle de chaque nouvelle machine virtuelle lors de sa création. Et
c'est à cette mémoire que j'ai le droit d'accéder.

A ce compte-là, l'OS ferait aussi partie du matériel puisqu'il est
stocké sur un disque dur.



D'après ton raisonnement si inversement je consulte la mémoire dans une
imprimante, ce serait du software!

Un "registre dans le BIOS" ? Si tu parles de 0000:0417



Ce que je voulais voir vraiment était le contenu du registre dans le
microcontrôleur du clavier - puisque manifestement ce qui est enregistré
par le BIOS dans l'octet à 0000:0417 n'est pas le même.
Mais il est devenu évident qu'il faudrait attaquer ça sous DOS (càd en
ayant démarré sous DOS).

--
bitwyse [PGP KeyID 0xA79C8F2C]
Les conseils - c'est ce qu'on demande quand on connaît déjà la réponse
mais aurait préféré ne pas la savoir.
http://www.le-maquis.net
Avatar
CriCri
Salut

Michel_D a écrit :

Non, je l'ai déja dit certaines fonctions de l'interruption 0x21 ne
réagissent pas pareil...



Est-ce que tu as une référence pour savoir quelles fonctions sont
différentes et quelles sont les différences?

Amicalement
CriCri

--
bitwyse [PGP KeyID 0xA79C8F2C]
Les conseils - c'est ce qu'on demande quand on connaît déjà la réponse
mais aurait préféré ne pas la savoir.
http://www.le-maquis.net
Avatar
Michel_D
"CriCri" a écrit dans le message de news:48a01b5c$0$964$
Salut

Michel_D a écrit :
>
> Non, je l'ai déja dit certaines fonctions de l'interruption 0x21 ne
> réagissent pas pareil...

Est-ce que tu as une référence pour savoir quelles fonctions sont
différentes et quelles sont les différences?



Je n'ai pas de référence, mais j'avais developpé un programme de
copie; un clone de xcopy mais avec quelque spécificité de xxcopy
et par exemple sous XP je ne peux pas avoir la liste complète des
fichiers (avec les fonctions de recherche) alors que sous W9x en
ligne de commande ainsi que sous DOS il n'y a aucun problème.

Et il y a aussi les fonctions qui renvoient des informations sur
l'emplacement des structures qui ne renvoie pas les mêmes
informations.
Avatar
CriCri
Michel_D a écrit :

et par exemple sous XP je ne peux pas avoir la liste complète des
fichiers (avec les fonctions de recherche)...



OK - j'ai déjà de vieux programmes qui utilisent ces fonctions mais que
je n'ai jamais testés sous XP. Ça servira déjà comme une base pour tester.

Merci pour toutes les infos!

Amicalement
CriCri

--
bitwyse [PGP KeyID 0xA79C8F2C]
Les conseils - c'est ce qu'on demande quand on connaît déjà la réponse
mais aurait préféré ne pas la savoir.
http://www.le-maquis.net
Avatar
Pascal Hambourg
CriCri a écrit :
Pascal Hambourg a écrit :

Non, le BIOS c'est du logiciel.



Une adresse à laquelle un logiciel stocke une valeur est constituée d'un
ensemble de transistors et condos, diodes et résistances (selon): donc
bien du _hardware_;



Evidemment que toute information a besoin d'un support matériel pour
être stockée. Mais il faut faire une différence entre le support (le
registre d'entrée-sortie, la cellule mémoire) et son contenu. Je parlais
du programme BIOS stocké dans la PROM, à savoir une suite d'instructions
lues et exécutées par le processeur central. Ça c'est du logiciel. Si tu
parles de la puce d'EPROM qui le contient, c'est effectivement du matériel.

La question de fond est si j'ai le droit d'accéder à ce _hardware_.



La réponse est non, dans un vrai OS moderne les applications n'ont pas
le droit d'accéder directement au matériel.

Le "BIOS" est du firmware stocké dans du hardware.



Non, le BIOS n'est pas du firmware. Le BIOS est essentiellement du code
exécuté par le processeur central comme n'importe quel autre logiciel,
alors qu'un firmware est un ensemble de données (code exécutable ou
autre chose) chargé dans un périphérique et non exécuté par le
processeur central. Toutefois il n'est pas exclu que le BIOS incorpore à
titre accessoire des firmwares destinés à des périphériques intégrés à
la carte mère, de même que certains pilotes incorporent un firmware
destiné à être chargé dans le périphérique dont ils ont la charge.
Avatar
CriCri
Michel_D a écrit :

...ce qui n'est pas anormal puisque ce n'est pas réellement du DOS
mais une émulation.



Finalement je me rends compte que j'ai lu ça plusieurs fois sans réagir!

Ce n'est pas parce qu'il s'agit d'une émulation per se; c'est parce que
le développeur a choisi de l'implémenter ainsi.
Rien ne l'aurait empêché d'écrire son émulation en restant presque 100%
fidèle au fonctionnement de MS-DOS. Il aurait suffi d'y recopier MS-DOS
- avec toutes ses fonctions inchangées - dans son entièreté; ainsi que
la totalité des fonctions du BIOS, pour faire une émulation
quasi-identique à l'original (même dans une machine virtuelle).
Si l'émulation ne fonctionne pas comme ça c'est parce que le programmeur
ne l'a pas voulu!

--
bitwyse [PGP KeyID 0xA79C8F2C]
Les conseils - c'est ce qu'on demande quand on connaît déjà la réponse
mais aurait préféré ne pas la savoir.
http://www.le-maquis.net
Avatar
CriCri
Pascal Hambourg a écrit :

Evidemment que toute information a besoin d'un support matériel pour
être stockée. Mais il faut faire une différence entre le support (le
registre d'entrée-sortie, la cellule mémoire) et son contenu. Je
parlais du programme BIOS stocké dans la PROM, à savoir une suite
d'instructions lues et exécutées par le processeur central.



Et moi je parlais des données générées par ce programme, qui ne font pas
partie de cette suite d'instructions; et de mon droit d'accès à elles.
Le contenu du programme du BIOS n'est intéressant que si on veut le
bricoler.

La réponse est non, dans un vrai OS moderne les applications n'ont
pas le droit d'accéder directement au matériel.



Du moment ou le BIOS stocke ses informations en RAM (même s'il s'agit de
la mémoire virtuelle d'une machine virtuelle) - au lieu de dans sa
mémoire interne - elles me deviennent accessible.

Non, le BIOS n'est pas du firmware. Le BIOS est essentiellement du
code exécuté par le processeur central comme n'importe quel autre
logiciel, alors qu'un firmware est un ensemble de données (code
exécutable ou autre chose) chargé dans un périphérique et non exécuté
par le processeur central.



Cela est _une_ interprétation de la part de l'auteur d'un texte
particulier.
En particulier ça ne s'applique principalement qu'aux PC et n'est pas du
tout vrai sur d'autres plateformes. Regarde par exemple 'Open firmware':
le code est non seulement exécutable par le processeur mais programmable
par l'utilisateur de surcroît.

Par curiosité j'ai cherché des définitions sur Internet, et parmi
quelques centaines d'auteurs on peut trouver quelques centaines
d'explications. Ça a aussi évolué. (C'est d'autant plus difficile parce
qu'il s'agit d'un anglicisme qui ne paraît pas donc dans des nombreux
dicos et encyclopédies.)

Je tiens à ce qu'on entendait par là quand le terme est apparu. On
travaillait sur des cartes expérimentales - des 'diskless computers'.
A l'exception du microprocesseur et 64 ko de RAM, tout le code exécuté
par le processeur résidait dans un EEPROM: qu'on appelait bien 'le
firmware'.

D'où la notion que le firmware consiste en
"un ensemble d'instructions et de données enregistrées dans une mémoire
non volatile".
Pas plus.

--
bitwyse [PGP KeyID 0xA79C8F2C]
Les conseils - c'est ce qu'on demande quand on connaît déjà la réponse
mais aurait préféré ne pas la savoir.
http://www.le-maquis.net
Avatar
Laetitia
Bonjour [et,ou un (+ ou -) chanceux début de semaine estivale],

CriCri écrivit :

le BIOS fait bien partie du hardware...









Et Pascal Hambourg, lui répondit vertement :

Non, le BIOS, c'est du logiciel.







lol

Puis CriCri écrivit :

Une adresse à laquelle un logiciel stocke une valeur est
constituée d'un ensemble de transistors et condos, diodes
et résistances (selon): donc bien du _hardware_;





Après mûre réflexion, Pascal Hambourg affirma ceci, cela :

Evidemment que toute information a besoin d'un support matériel
pour être stockée...



Mais il faut faire une différence entre le support
(le registre d'entrée-sortie, la cellule mémoire) et son contenu.



Je parlais du programme BIOS stocké dans la PROM,
à savoir une suite d'instructions lues et exécutées
par le processeur central. Ça c'est du logiciel.



Si tu parles de la puce d'EPROM qui le contient,
c'est effectivement du matériel.



CriCri insista, encore :

La question de fond est si j'ai le droit d'accéder,
à ce _hardware_.





Après mûre réflexion, Pascal Hambourg affirma ceci, cela :

La réponse est non, dans un vrai OS moderne,
les applications n'ont pas le droit
d'accéder directement au matériel.



lol lol (et, deux fois plutôt qu'une) ?

CriCri insista, encore un peu plus :

Le "BIOS" est du firmware stocké dans du hardware.





Après mûre réflexion, Pascal Hambourg affirma ceci, cela :

Non, le BIOS n'est pas du firmware.



Le,s copyright de MB [Main Board], ce serait,ent quoi ?

Après mûre réflexion, Pascal Hambourg affirma ceci, cela :

Le BIOS est essentiellement du code exécuté par le processeur central
comme n'importe quel autre logiciel,


...
alors qu'un firmware est un ensemble de données
(code exécutable ou autre chose)
chargé dans un périphérique et non exécuté par le processeur central.



Avez-vous déjà vu un calculateur personnel démarrer (sauf sous VISTA],
sans pouvoir jamais passer avant, par le BIOS [SETUP], d'une MB ?

Après mûre réflexion, Pascal Hambourg affirma ceci, cela :

Toutefois il n'est pas exclu que le BIOS incorpore,



* à titre accessoire *,



des firmwares destinés à des périphériques intégrés
à la carte mère (the main board),
de même que certains pilotes incorporent



Après mûre réflexion, Pascal Hambourg affirma ceci, cela :

un firmware destiné : à être chargé dans le périphérique,



et, dont ils en auraient : la charge ?

Serait-ce : le,s célèbre,s tatouage,s "UMP" par ID [Identity firmware
hardware : an serial and typical right era product], et que l'on
retrouverait dans presque toutes les clés USB commercialisées et,
actuellement du monde ?

Il existerait cependant quelques "exceptions dites RELATIVEMENT
anonymes" et, j'en posséderais quelques unes...)?

Et c'est quoi, tout ce b..... ?

Cordialement (and, or a new best french regard, in this usenet group).

--
Pour survivre dans l'espace, il faudra apprendre à y survivre
et, si les rares survivants parviennent à ne plus comprendre
leurs géniaux concepteurs, l'incompréhension deviendra totale,
ce sera alors enfin l'apocalypse et, tant désirée par certains ?
Avatar
Michel__D
CriCri a écrit :
Michel_D a écrit :

...ce qui n'est pas anormal puisque ce n'est pas réellement du DOS
mais une émulation.



Finalement je me rends compte que j'ai lu ça plusieurs fois sans réagir!

Ce n'est pas parce qu'il s'agit d'une émulation per se; c'est parce que
le développeur a choisi de l'implémenter ainsi.
Rien ne l'aurait empêché d'écrire son émulation en restant presque 100%
fidèle au fonctionnement de MS-DOS. Il aurait suffi d'y recopier MS-DOS
- avec toutes ses fonctions inchangées - dans son entièreté; ainsi que
la totalité des fonctions du BIOS, pour faire une émulation
quasi-identique à l'original (même dans une machine virtuelle).
Si l'émulation ne fonctionne pas comme ça c'est parce que le programmeur
ne l'a pas voulu!



Ben oui, mais le cahier de charges n'était pas de faire un DOS bis.
1 2 3 4