bilaloch
Messages postés556Date d'inscriptionlundi 6 octobre 2003StatutMembreDernière intervention31 octobre 2019
-
31 juil. 2007 à 18:59
testtestiop
Messages postés16Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention14 mars 2008
-
12 août 2007 à 15:28
Bonjour à tous,
J'aimerais savoir s'il y a une possibilité pour que, à travers le C++ (ou l'ASM d'ailleurs, je poste ce message sur le forum de l'ASM également), on puisse lire la RAM (c'est-à-dire les données contenues dans les adresses) et la récuperer dans certaines variables. J'aimerais aussi savoir s'il est possible de modifier la RAM, selon les données que l'on a récuperé préalablement. Je sais que cela est difficile pour être mis en place, mais j'aimerais tout de même savoir si ces deux possibilités existent. Si oui, je poserai surement d'autres questions sont j'aurai besoin plus tard sur ce même forum.
PS : desolé de l'avoir posté dans ce salon, je n'ai pas trouvé de meilleur endroit.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 2 août 2007 à 14:19
Je viens d'apprendre dans un message de BruNews que le DDK est devenu téléchargeable gratuitement, sans abonnement MSDN ni paiement. Voici le lien direct: DDK Download.
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 1 août 2007 à 11:10
et quand on met l'application en mode DEBUG (ou autre mode de privilège plus haut), http://www.cppfrance.com/code.aspx?ID=26858 elle n'a pas un niveau d'accès plus élevée ? Enfin il faudrait qu'elle ait le niveau kernel, ce qui me semble difficile. Et je pense qu'il n'est pas nécéssaire de présiser qu'écrire dans a RAM comme ça c'est suicidaire...
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 1 août 2007 à 13:32
Salut,
Je crois qu'il faut passer en ring 0.
Les deux pistes principales que j'ai trouvé sont SysEnter, une instruction du processeur, et une méthode dite du "Call Gate".
Et faudrait regardé du côté de ntdll.dll. Cette dll contient des routines accessibles en usermode et en ring 0. Il doit bien y avoir une routine pour effectuer le passage... Si ça se trouve, il suffit simplement de trouver une routine de l'API Windows pas trops longue qui a besoin de ce niveau de privilège à un moment ou à un autre et de la tracer avec un débugueur.
Sinon, en parlant de logiciel qui lisent la RAm, il doit y avoir SoftICE qui le fait.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 1 août 2007 à 19:06
Salut,
Il est possible de lire
et écrire directement dans la RAM physique en Kernel-Mode. Il te faudra
donc un Driver réalisé à l'aide du DDK. Ton application en User-Mode
pourra communiquer avec ce Driver. Pour la lecture des adresses
mémoire, ça ne devrait poser aucun problème. Par contre, en voulant
modifier le contenu de certaines adresses, on risque un crash total du
système.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 2 août 2007 à 02:29
BruNews >> C'est exactement ce que j'ai dit. Non? C'est bien le
driver qui lit la ram en kernel-mode. Une application user-mode pourra
communiquer avec le driver via DeviceIoControl(). Ce dernier lui
fournira le contenu des adresses voulues, après l'avoir copié dans le
buffer de communication, ou lui permettra de le modifier. Bien entendu,
l'accès à la ram physique ne peut se faire qu'en kernel-mode.
bilaloch >> Le DDK est disponible en téléchargement gratuit pour les abonnés MSDN. Il est payant pour les non-abonnés mais il ne devrait pas couter cher.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 2 août 2007 à 12:26
Bin il paraît qu'il y en a qui y arrive... Mais ça à l'air chaud (Sur XP), et les infos sur le net sont pas foison (Ou je les ai pas trouvé).
Tu seras certainement plus dans ce que M$ veut que l'on fasse en faisant un driver.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 2 août 2007 à 14:05
Dans Windows NT/2000/XP etc, une application user-mode ne peut pas accéder directement en kernel-mode. Elle doit obligatoirement passer par un driver qui lui y accède directement. C'est ça qui assure la stabilité du système. Plusieurs applications peuvent accéder au même driver simultanément. Chacune sera servie à tour de rôle. Si elles pouvaient aller directement au kernel-mode pour une même ressource, il y'aura un conflit et c'est la crash assuré.
testtestiop
Messages postés16Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention14 mars 2008 12 août 2007 à 15:28
Tu peux aussi alouer de la memoire en usermod avec malloc et lire le contenu sans l'initialiser... Ca peut te permettre notament de recuperer des donnees ecrites par d'autres programmes qui viennent de se terminer...