Article View: fr.comp.lang.c
Article #58Re: secteur d'un disque dur --> Merci
From: Pierre Maurette
Date: Wed, 16 Feb 2005 04:06
Date: Wed, 16 Feb 2005 04:06
81 lines
5831 bytes
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-mailReferences:
<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>