| |||||
| Dernière réponse | ||
|---|---|---|
| Sujet : un truc dur mais utile ... | ||
| stefes007 |
|
|
| Aperçu |
|---|
| Vue Rapide de la discussion |
|---|
| stefes007 |
|
| 246tNt | Le seul moyen je crois tu a raison c de faire comme mscdex, c'est d'utiliser les drivers reseau ... eh oui pour dos, un lecteur cd c un disque reseau dont le driver est le .sys de votre lecteur CD. A la limite, en devellopand un driver de lecteur µcd qui en fait cree un ram disk et en utiliant mscdex y a p/e moyen |
| Kristoph | J'aurais jure que les drivers de CDROM sous DOS avaient une option pour choisir la lettre de lecteur. C'est peut-etre mscdex.exe qui fait ca alors.
Peut-etre que ca ne peut pas se faire au niveau du config.sys mais seulement avec un bon vieux TSR qui s'occupera de faire tout les appels systemes à la main. |
| 246tNt | Ben au fait, tu "demande" pas vraiment.
Quand tu ecrit un drivers .sys en dos, l'entete contient un bit qui dit si c'est un driver de caractère ( communication char by char, pas de lettre attribuée ) ou un driver de bloc ( un HDD, un RamDisk ... ) Au moment du chargement du .sys, DOS attribuera a ton driver la premier lettre disponible. Au moment de l'appel de la fonction d'init de ton driver, le parametre se trouvant a l'offset 16h du bloc de donnée qu'on te donne est la premiere lettre attribuée a ton driver de bloc. ( je dis premier car ton drivers pourrait utiliser plusieurs lettre, elle sont alors prise les une a la suite des autres ) |
| Ace17 | Précise un peu ca m'intéresse ca; comment tu demandes a DOS d'allouer un nouveau lecteur? Comment ca se passe au niveau des interruptions? |
| 246tNt | Non, y a un probleme de taille ... J'ai moi meme programmer un RAM drive "pour voir" comment c'etait un .sys Le probleme est que ce n'est pas ton programme qui choisi la lettre !!! Toi tu dis a DOS que tu veut creer un disque et c'est LUI qui te dit quelle lettre ce sera !!! C Dos qu'il faut modifier alors ... et ca ca risque d'etre un peu limite ... |
| freewol | ok merci pour le lien, ça a effectivement l'air sympa
le problème qui se pose lorsque ramdrive crée un disque virtuel sur la même lettre qu'un lecteur réel qu'il n'a pas trouvé (le fait qu'il soit en NTFS n'est qu'une des raisons possibles, j'ai déjà eu autre chose), c'est qu'on ne peut plus utiliser fdisk, et la plupart des outils de partitionement sans détruire le lecteur réel ... ou tout au moins endommager la table de partitionnement. ensuite pour reprogrammer un ramdrive, pkoi pas, ça correspond bien a l'intitulé ... ;) Je vais y réfléchir, mais si qqun se sent le courage de le faire ... ;) |
| Ace17 | Allez, et tant que j'y suis, je précise que reprogrammer (puisqu'on est dans le forum programmation, tant qu'a faire) un ramdrive serait peut etre plus facile! |
| Ace17 | Un petit lien sympa :
http://www.simtel.net/pub/pd/49244.html |
| Ace17 | Peut etre qu'il existe un autre utilitaire ou driver qui fait le meme travail que ramdrive.sys? Mais en fait en quoi ca pose probleme que ramdrive choisisse une lettre deja attribuée a une partition NTFS? De toute maniere ramdrive c'est sous DOS que tu l'utilises non? Or DOS il voit pas les partitions NTFS il me semble... |
| freewol | et ben d'un coté j'ai trouvé de la doc sur ce fameux ramdrive.sys, et même pleins, ya des dizaines de liens sur google ... je pensais pas que c'était si populaire ...
par contre d'un autre coté voici une phrase de fort mauvaise augure ... : "The first line gives the letter allocated by DOS to the drive. This is the first available drive letter and cannot be specified by the user" :( Voila donc ben il semblerait bien que le seul moyen soit le désassemblage ... |
| freewol |
|
| freewol |
|
| Kristoph | Je trouve que vous vous compliquez un peu la vie.
D'abord, essayez pas d'editer un fichier .sys sauf config.sys qui n'est en fait qu'un fichier texte. J'ai pas la disquette sous la main mais je suis sur qu'il doit y avoir une reference à ramdrive.sys dans config.sys. C'est un truc du genre : DEVICE=ramdrive.sys [...] Avec un peu de chance et un paramètre sur la ligne servant à lancer ramdrive.sys, tu peux peut-etre lui assigner un lettre de lecteur precise. Bien sur le probleme est de retrouver la doc de ramdrive.sys. Pour ca, cherche du cote de MSDOS 6.22 ou moins récent. [edtdd]--Message édité par Kristoph--[/edtdd] |
| Ace17 | Oublie ce que j'ai dit, de toutes manieres ca ne mene nulle part; Il faut désassembler ramdrive.sys plutot
Ce qui va pas etre facile vu que c'est pas un format courant... Mais au fait c'est quoi ton but exactement? [edtdd]--Message édité par Ace17--[/edtdd] |
| freewol | euh ... désolé je ne te suis pas là ? pkoi ça serait pas indispensable ? |
| Ace17 | C'est bizzare que ramdrive soit appellé automatiquement...Y doit y avoir une référence quelque part non? étant donné que c'est pas indispensable... |
| freewol | ben oui c'est exactement ça. Et il est appelé si j'ai bien suivi en 3e après config.sys et hymem.sys (dans le cas du démarage sans gestion du cd-rom) ... Et ensuite est appelé autoexec.bat qui se charge en 1er lieu d'appeler findramd.bat qui trouve quelle est la lettre du lecteur virtuel créé par ramdrive, et qui refile la lettre à autoexec.bat qui ensuite copie tous les fichiers importants de la disquette dessus ...
Voila pour ce que j'en ai compris. |
| Ace17 | Tu pourrais étendre un peu plus la théorie? ramdrive.sys ca crée automatiquement un lecteur virtuel c'est ca? |
| freewol | merci bcp 246tNt, c'est clair que je cherchais un truc tellement compliqué que j'avais même pas pensé à ça ! donc :jap:
mais bon le problème c'est que je me suis rendu compte que j'avais été trop optimiste : en réalité l'autoexec.bat n'est pas le 1er fichier appelé, et findramd ne sert qu'à trouver la lettre du lecteur virtuel déjà créé ... donc tout est à refaire. Et encore, c'est absolument horrible : ce qui se passe c'est que le 1er appelé est config.sys, qui ensuite appelle himem.sys, puis ramdrive.sys, qui est celui qui nous intéresse puisqu'il crée le lecteur virtuel ... Le seul problème c'est que je vois pas trop comment modifier un .sys, vu que je sais même pas à quoi ça correspond ... Le config.sys est un fichier texte, mais malheureusement ça n'est pas le cas de ramdrive.sys, et pire encore qd je l'ai désassemblé avec windasm, ça foire parce qu'il arrive pas à trouver l'entrée du prog ... Donc ben je pense que je devrais renommer ce topic en "un truc super dur mais utile" ... :( |
| Ace17 | Quand meme........peut etre qu'il faut que ca puisse marcher pour plusieurs disques virtuels! Dans ce cas la pourquoi faire appel a findramd alors qu'on pourrait choisir manuellement z! [edtdd]--Message édité par Ace17--[/edtdd] |
| 246tNt | Question a la con, un simple
int main() { return 26; } ca le ferait pas ? ca renvoie tjs 26 ;) ... |
| freewol | euh non en fait désolé erreur d'écriture, en réalité c'est 6.69Ko ... de toute façon je vois pas trop comment ça pourrait être différent ... en tout cas j'espere que c'est pas possible sinon on est pas sortit d'affaire ... |
| Ace17 | Au fait mon findramd.exe a moi il fait 6k; Or il est dit qu'il en fait 9; c'est peut etre un début d'explication? |
| freewol | ben donc ça devrait renvoyer E ou G, je sais pas trop, m'enfin pas C en tout cas ... chelou, j'ai pas d'explication |
| Ace17 | Ben c'est une bonne question car ca m'est pas venu du premier coup; j'ai fait un batch et dedans j'ai mis une succession de
if %errorlevel%=1 if %errorlevel%=2 if %errorlevel%=3 et avec un message dans chaque cas. Sinon, j'ai : A: lecteur de diskette C: partition systeme(fat32) D: partition de données(fat32) E: Lecteur CD1 F: Lecteur CD2 |
| freewol | au fait tu pourrais m'expliquer comment il te renvoie C ? Tu l'a testé avec la disquette de boot ? Parce que tout seul il fait rien ce prog, enfin je veux dire si on le lance sous win ...
chelou pour la lettre en tout cas. T'as combien de lecteurs (ie de lettres déjà assignées) ? |
| Ace17 | ben non! tout est en Fat32!
Sinon le défi m'a l'air intéressant; je promet rien mais je veux bien jeter un oeil [edtdd]--Message édité par Ace17--[/edtdd] |
| freewol |
|
| freewol |
|
| Ace17 | Est-ce normal que ce machin me renvoie 3(C) ? |
| C_Po_Ma_Faute | en France, on a le droit de décompiler, désassembler, ... un soft uniquement quand on veut assurer l'inter-opérabilité avec d'autres softs :D |
| freewol | mmmmmmhhhhhhh .... mouais je veux bien croire aux USA mais bon ... on va dire qu'au pire si c'est vraiment interdit z'avez qu'à trouver la manip, et pis la poster sur le forum. Je me chargerai de risquer ma vie en l'effectuant tout seul dans mon coin ;)
Personne ne se sent l'âme d'un hacker de génie ? Parce que bon là ça serait vraiment utile ... [edtdd]--Message édité par freewol--[/edtdd] |
| gizmo | ca dépend des pays, mais aux US par exemple, c'est interdit (cf l'affaire Adobe vs le Russe venu expliqué une faille de leur logiciel) |
| freewol | d'où tu tiens que c'est interdit par la loi ? Faudra que tu me montre un texte de loi parce que là j'ai comme qui dirait un doute ... :??: |
| Buitoni |
|
| flo850 | tu y vas fort .
il faut desassmbler le prog (interdit par la loi )puis le bidouiller. c'est un peu violent . |
| freewol | voila si qqun pouvait modifier un chtit programme présent sur la disquette de boot de win98 : findramd.exe, qui fait 9Ko et qui décide au moment du boot sur quelle lettre il fout le lecteur virtuel ...
Parce que vu qu'il choisit tjs celui juste après le dernier qu'il a trouvé ça pose souvent des problèmes qd il ya plusieurs DD, ou des partitions NTFS etc ... Donc ça serait cool d'avoir le même mais qui choisirait tjs z: ... Par contre j'ai bien peur que ça soit impossible, parce que j'ai regardé le prog désassembler et j'ai rien compris ... :( M'enfin si qqun déchire bien ça vaut le coup de demander... |




