[VC++ ASSEMBLEUR ] questions sur les disques durs

questions sur les disques durs [VC++ ASSEMBLEUR ] - Programmation

Marsh Posté le 28-03-2001 à 13:27:15    

Je cherche à écrire un explorateur windows mais capable de lire dans plusieurs types de partitions , FAT16,FAT32 , NTFS, Linux EXT2, SCO UNIX  etc ... tout cela sous windows. un truc qui mélange EXPLORER et explore2fs.
Je cherche à savoir comment lire sur le(s) disque(s) dur(s) en bas niveau (connaitre les fonctions assembleurs pour ca en faire ca).
Je voudrais aussi connaitre la structure du disque :le MBR, la table des partitions et la taille qu'il font ainsi que l'endroit ou ca se trouve.
Enfin, je cherche aussi des informations sur les différents système de fichiers vu au dessus. (Un lien sur un site expliquant ca me suffirait.)
 
Merci de vos éventuelles réponses.

Reply

Marsh Posté le 28-03-2001 à 13:27:15   

Reply

Marsh Posté le 28-03-2001 à 13:33:14    

xilebo a écrit a écrit :

Je cherche à écrire un explorateur windows mais capable de lire dans plusieurs types de partitions , FAT16,FAT32 , NTFS, Linux EXT2, SCO UNIX  etc ... tout cela sous windows. un truc qui mélange EXPLORER et explore2fs.
Je cherche à savoir comment lire sur le(s) disque(s) dur(s) en bas niveau (connaitre les fonctions assembleurs pour ca en faire ca).
Je voudrais aussi connaitre la structure du disque :le MBR, la table des partitions et la taille qu'il font ainsi que l'endroit ou ca se trouve.
Enfin, je cherche aussi des informations sur les différents système de fichiers vu au dessus. (Un lien sur un site expliquant ca me suffirait.)
 
Merci de vos éventuelles réponses.




Regarde dans les sources de Linux

Reply

Marsh Posté le 28-03-2001 à 15:01:39    

moi aussi je cherche ce genre d'infos mais juste pour fat32 ert fat16 mais je n'ai pas de source de linux a disposition !!!

Reply

Marsh Posté le 28-03-2001 à 15:13:06    

Je sais pas si tu sais mais pour faire cela il faut écrire un  
driver sinon tu n'auras pas acces aux fonctions qui  
permettent de lire sur un disque sans passer par le systeme.
En plus d'être assez compliqué, ils faut également une version
Entreprise ( je crois que c'est celle là) de visual C++.
Ne pas oublier bien sur de télécharger le DDK sur le site de
microsoft.

Reply

Marsh Posté le 28-03-2001 à 15:30:22    

merci mr seblamb, je vais pouvoir friter mes partitions

Reply

Marsh Posté le 28-03-2001 à 19:23:46    

Je ne suis pas tout a fait d'accord sur le fait qu'on soit obligé d'écrire un driver pour accéder au disque.En effet qu'est ce qui empecherait d'acceder au disque ... le système d'exploitation ? je ne pense pas. On peut toujours ecrire des routines assembleurs qui accedent au disque sans passer par le systeme. Je pense que c'est ce que fait explore2fs mais je n'en suis pas sur . C'est pour c ela que j'aimerais bien avoir l'adresse des sources ( ils sont dispos mais je ne sais pas ou ).
 
Si je me trompe sur ce que j'ai dit au dessus, n'hésitez pas à me corriger mais je ne pense vraiment pas qu'un OS puisse empecher d'acceder aux peripheriques ( ce serait le top de la securité !!)

Reply

Marsh Posté le 29-03-2001 à 00:13:34    

xilebo a écrit a écrit :

Je ne suis pas tout a fait d'accord sur le fait qu'on soit obligé d'écrire un driver pour accéder au disque.En effet qu'est ce qui empecherait d'acceder au disque ... le système d'exploitation ? je ne pense pas. On peut toujours ecrire des routines assembleurs qui accedent au disque sans passer par le systeme



 
Justement si:
Comment du decriptes les noms longs NTFS en assembleur? Et si le FS est crypte (NTFS permet cela il me semble) ou compresse par l'OS, bonjour.
 
Ecrire un driver IFS est la bonne methode je pense (et je te signale que les specialistes de la question, cf www.sysinternals.com et www.winternals.com pour acceder au FS NTFS en RW sous win98, ils ont besoin de certains routines implementees dans le Kernel NT qui ont pas l'air evidente a dupliquer, puisqu'ils utilisent une copie locale des modules de NT (tournant sous 98)).
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 29-03-2001 à 00:25:29    

Merci du renseignement gilou , j'ai en effet vu un peu gros ! je ne savais pas que NTFS pouvait etre crypté ( komen kon fait pour le crypter alors ?), je vais d'abord me pencher sur un explorateur FAT/FAT32/ext2, j'espere avoir moins de mal !

Reply

Marsh Posté le 29-03-2001 à 02:12:13    

Pour le cryptage avec NTFS, j'ai jamais manipe ca, mais j'ai vu des fontions a ce sujet dans la doc de l'API il me semble (ou alors c'est le volume manager de Win2K qui m'a propose ca, je sais plus).
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 29-03-2001 à 10:33:29    

xilebo > Bien sur que le systeme d'exploitation va t'en empécher.  
Esseye de lancer une interruption dans une applie 32 bits et tu va voir comme tu vas te faire jeter.
Windows c'est pas le DOS, c'est un systeme protégé,  
il est garant du partage des resources sytemes entre les différents programmes.
Donc on ne peut pas acceder directement au materiel. Il faut passer pas ses API ou alors faire un driver.

Reply

Marsh Posté le 29-03-2001 à 10:33:29   

Reply

Marsh Posté le 29-03-2001 à 10:49:39    

Pour le code source de explore2fs voir la page
http://uranus.it.swin.edu.au/~jn/linux/explore2fs.htm
NB : explore2fs est écrit en Delphi.

Reply

Marsh Posté le 29-03-2001 à 11:38:10    

On peut lancer une interruption dans un programme 32 bits, mais il faut faire une manip avant, windows à sa propre tble d'interruption mis il est possible de rediriger les interruptions. Je ne sais pas comment on fait techniquement mais un pote ( bien calé ) m'a expliqué que c'est parfaitement possible. je dis pas que c'est pas du travail de goret par contre. Cependant, je vais suivre vos conseils , je vais soit ecrire un driver , soit passer par ses API, je ne sais pas encore comment je vais entamer ...

Reply

Marsh Posté le 31-03-2001 à 09:05:18    

Hello
A mon epoque, j'avais eu besoin d'info sur tout ce qui touchait la fat16. Un bon bouquin (enfin en 1992!) était la Bible PC de Micro Application: malheureusement, je sais meme pas si ca exite encore, et si oui, j'espere que ca été remis à jour :) .  
 
d'ailleurs, c'est tres marrant à relire, notamment la section sur les cartes videos (cga,ega et meme vga!)... ca en rappelle des souvenirs !

Reply

Marsh Posté le 01-04-2001 à 14:02:06    

Que tu fasses ton programme en C, en C++, ou en Assembleur, le problème à résoudre sera le même: la barrière du système d'exploitation qui tourne. Sous Windows, tu es dans un environnement protégé, et les esaces mémoire et entrée-sortie sont protégés car le processeur a été placé dans un mode qui le met sous le contrôle du système: tu as un niveu de privilège qui ne te permet que de voir ce que l'OS veut bien te laisser voir. Pour passer outre, sans planter le système pour autant ou sans éteindre la machine, il faut cohabiter avec l'OS, donc utiliser ses APIs.
Et à ce moement-là, il est plus simple de travailler en C ou C++ qu'en assembleur: c'est déjà assez compliqué de manipuler les couches basses de l'OS (regarde le DDK tu comprendras)...
Sinon si tu veux analyser un disque sur lequel aucun fichier n'est ouvert par l'OS (partition démontée, tu peux utiliser les fonctions du Bios, ou de Win32 pour lire les secteurs. Pas besoin d'assembleur pour cela.
Reste après à analyser les structures de données que tu y trouveras. Quant à modifier le contenu du disque, l'OS ne te laissera pas faire facilement. Bref abandonne l'assembleur: il n'est pas nécessaire pour des raisons de performance, le C ou le C++ sont aussi bien pour utiliser des APIs de l'OS.
Aujourd'hui l'assembleur ne se justifie plus que pour accélérer les longs calculs qui ne nécessitent pas l'inervention de l'OS: calculer une image 3D, décompresser des données, ... et encore, car maintenant tout ça se fait très bien en C (ou C++), Pascal (Delphi) grâce aux progrès des compilateurs... Et un langage de haut niveau permet de développer nettement plus facilement au milieu d'une jungle de structures de données.

Reply

Marsh Posté le 01-04-2001 à 20:09:50    

D'accord , d'accord j'arrete, l'assembleur c'etait une mauvaise idée ... donc vous me conseillez le DDK . Tres bien mais ou puis-je le trouver ? et pis quel(s) doc(s) y-a-t-il à ce sujet . Est ce que MSDN version entreprise ( janvier 2000) suffirait ?  
 
Mais une chose que je ne comprends toujours pas, c'est que la dll diskio.dll de explore2fs( j'ai le source de cette dll) est en assembleur et d'apres ce que je vois dedans , il y a des fonctions ecrites en assembleur pour lire et ecrire des secteur sur un disque.(ce qui me semble "plutot necessaire" pour lire un FS ). Mais je me trompe peut-etre . en tout cas il font bien appel à l'interruption 13h pour piloter le disque .
 
 
Si quelqu un peut m'expliquer un peu comment fonctionne DDK et ou peut on trouver de la doc , ce serait sympa . Et aussi une adresse expliquant le systeme de fichier EXT2 et NTFS ( version 4 pour le moment)
 
Merci en tout cas de votre aide.
 
A ce propos je vous conseille si vous ne le connaissez pas deja le site jc.bellamy.free.fr, qui est une source d'info assez interessante sur le sujet.

Reply

Marsh Posté le 01-04-2001 à 21:55:31    

Pour le NTFS, je crois que tu peux te brosser (comme dirait l'autre), c'est la propriété de Microsoft et je ne crois pas qu'il t'en filerait les specs, mais sait-on jamais  ;)

Reply

Marsh Posté le 02-04-2001 à 11:01:57    

J'ai regardé les explication du programmeur  :)  pour la dll
En fait elle est compilée en 16bit et utlise la compatiblité qu'offre windows95 pour ces programmes, pour pouvoir utiliser l'interruption.
J'ai quand même un peut regardé sur le site de microsoft il ne semble pas q'on puisse utiliser les int. dans un prog 32bit. Par contre on peut controler les drivers directement (fonction DeviceIoControl). C'est ce qu'utilise "explore2fs" quand il fonctionne sous NT.
 
Pour le DDK telecharge le et tu auras toutes les indications

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed