🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.lang.c
Article #58

Re: secteur d'un disque dur --> Merci

#58
From: Pierre Maurette
Date: Wed, 16 Feb 2005 04:06
81 lines
5831 bytes
Thierry59 a �crit :
[...]
> Merci pour tous vos reponses... en fait, je programme dans un premier temps
> en C sous Windows ( destination emulation DOS) pour apprendre a utiliser la
> FAT...., ensuite veux le programmer sous Visual C++ ( interface
> graphique.... faire une DLL... il y a du travail.... )
> je vois donc plusieurs possibilit�.... ( En resum�)
> 
> - Utiliser en direct le port d'acces du disque dur... acces directe au
> hardware....http://xos.freezee.org/index.php?page=hard ( merci Dark poulpo)
>                        Dans ce site, il y a plein de doc interressantes....
> Avis au programmeur....
> - Utiliser INT soft  13, mais je ne sais pas si celle ci est accessible
> depuis Windows.... si INT13 est une IT BIOS alors oui, c fesable ( routine
> en Asm a inserrer dans le code C )
Vous allez vers deux d�ceptions.
Tout d'abord, oui, INT13 est bien une interruption du BIOS, c'est � dire 
une famille de fonctions cod�es dans la ROM du BIOS. Notez que ces 
fonctions sont ind�pendantes de l'OS et qu'il faut bien qu'au moins une 
partie d'entre elles soient en dur dans le BIOS puisqu'il faut bien 
acc�der au disque pour charger le premier embryon d'OS. Malgr� cel�, 
elle n'est pas accessible depuis Windows XP, m�me sous pseudo DOS en 
fen�tre invite de commande. Elle est filtr�e proprement, ou proprement 
filtr�e ;-), �a d�pend comment on l'entend.
Ensuite, le mot "asm" n'a rien de magique. Pour les protections mises en 
place par l'OS, que vous utilisiez INT 13 en assembleur ou les fonctions 
biosdisk de bios.h en C (par exemple) ne fait aucune diff�rence. En 
fait, "l'enveloppement C" de l'assembleur est ici extr�mement l�ger.

> - Utiliser les instructions  CreateFileA et surtout  DeviceIoControl.  (
> Merci Pierre Maurette pour les infos)
> 
> Maintenant, il y  a surment d'autre possibilit�... attaquer une DLL (
> Librairie sous Win)
Idem que pour "asm", rien de magique dans le mot "dll". Lier une 
fonction dans une dll ne lui conf�re aucun droit suppl�mentaire. En 
dehors de l'aspect pratique qu'on peut lui trouver, l'avantage d'une dll 
est d'�tre projet�e dans l'espace m�moire de chaque processus 
utilisateur. Cette caract�ristique les rend dans certaines circonstances 
indispensables.

Revenons au cas qui nous pr�occupe, en restant tr�s tr�s tr�s 
approximatif puisque je ne fais pas la diff�rence entre Windows 9x et 
XP, alors qu'elle est importante. L'acc�s bas niveau, c'est � dire 
permettant de travailler � des niveaux de privil�ge (ring0) interdits 
aux programmes utilisateurs, se fait par l'�criture d'un pilote de 
p�riph�rique. Le p�riph�rique en question peut �tre virtuel, il peut 
s'agir tout simplement d'appeler les interruptions du BIOS ou de placer 
des points d'arr�t dans un programme (simples exemples). L'�criture de 
tels pilotes demande un DDK, pour faire simple, c'est un m�tier. 
L'interface entre les pilotes et les programmes utilisateurs se fait par 
des fonctions g�n�ralement (ou toujours ?) en dll. En fait, c'est plus 
complexe, la structure r�elle est lourdement multicouche. C'est ce qui 
permet de simplifier l'�criture de pilotes pour une imprimante qui sera 
soit USB, soit parall�le, pour un modem soit s�rie, soit USB, etc.

Windows vous fournit tout �a et vous permet d'y acc�der de fa�on s�re 
(sic) au moyen de CreateFile.
Vous avez ici des explications et un projet :
http://www.codeguru.com/Cpp/W-P/system/misc/article.php/c5765
Voir "download sources" en bas de page, c'est un workspace VC++ 6.0 qui 
se charge sans souci sous VS .NET 2003 (VC++ 7.0).
Les 3/4 du taf sont faits. Il vous reste � adapter �ventuellement aux 
disques physiques et � l'�criture. Pour cel�, il faudra vous int�resser 
aux droit d'acc�s. Commencez par �tudier CreateFile dans le MSDN puis 
rayonnez:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/createfile.asp
http://minilien.com/?ghfHtyZTwK
Puis vous pourrez vous pencher sur l'interface graphique qui est nulle � 
chier.

note finale: vous trouverez des m�thodes plus ou moins s�rieuses pour 
passer outre les protections de Windows (XP en particulier). Ce n'est 
pas raisonnable, et � exclure absolument dans le cas d'une application 
d�ploy�e m�me gratuitement. D'abord, c'est tr�s con de payer pour un OS 
  stable et de le bouziller. Ensuite, si on peut tenter le coup pour 
faire mumuse sur un port parall�le non utilis� par ailleurs, c'est exclu 
pour les disques, pour lesquel il faut g�rer l'acc�s concurrent.

-- 
Pierre
Technical Details
Message-ID: <37fv4mF5c66dgU1@individual.net>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
References: <cuokcp$5ap$1@news.tiscali.fr> <cutnjt$854$1@news.tiscali.fr>

Show Full Headers
Complete Article Headers
X-Google-Thread: f9822,cee8ec78e27adc6a
X-Google-Thread: fdcad,cee8ec78e27adc6a
X-Google-Thread: 10f688,cee8ec78e27adc6a
X-Google-Thread: 111deb,cee8ec78e27adc6a
X-Google-Thread: 102e15,cee8ec78e27adc6a
X-Google-Attributes: gidf9822,gidfdcad,gid10f688,gid111deb,gid102e15,public
X-Google-Language: FRENCH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: Pierre Maurette <maurettepierre@wanadoo.fr>
Newsgroups: fr.comp.lang.c,fr.comp.lang.c++,fr.comp.os.msdos,fr.sci.electronique,fr.comp.developpement
Subject: Re: secteur d'un disque dur --> Merci
Date: Wed, 16 Feb 2005 05:06:12 +0100
Lines: 81
Message-ID: <37fv4mF5c66dgU1@individual.net>
References: <cuokcp$5ap$1@news.tiscali.fr> <cutnjt$854$1@news.tiscali.fr>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: individual.net gwTPfxNAZEYDiAyKDhW3OgKGXS1iALiEyCUNc6tJtkQfNj6qlf
User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206)
X-Accept-Language: fr, en
In-Reply-To: <cutnjt$854$1@news.tiscali.fr>