Lire et modifier la RAM

Résolu
bilaloch Messages postés 556 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 31 octobre 2019 - 31 juil. 2007 à 18:59
testtestiop Messages postés 16 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 14 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.

BILALoch

17 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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.
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
31 juil. 2007 à 21:59
Etant donné que certains programmes proposent de le faire, je dirais que oui c'est possible

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 juil. 2007 à 23:04
Tu connais un prog qui lit la mémoire depuis l'user mode ???

ciao...
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
1 août 2007 à 08:42
J'ai pas dit que c'était en mode user (d'ailleurs je ne sais pas)

_____________________________________
Un éditeur de ressources gratuit pour Windows
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bilaloch Messages postés 556 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 31 octobre 2019 1
1 août 2007 à 10:54
Merci de vos réponses. Si vous avez des idées n'hésitez pas à m'en faire part.

Merci encore.

BILALoch
0
vinc1008881 Messages postés 257 Date d'inscription dimanche 22 août 2004 Statut Membre Dernière intervention 29 septembre 2010 3
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...
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
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.

Si tu trouves, publie svp !
0
bilaloch Messages postés 556 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 31 octobre 2019 1
1 août 2007 à 13:54
Oui je vous tiendrai au courant. Pour l'instant je continue mes recherches. Quand j'aurai quelque chose de concret, je posterai ici ^^ .

BILALoch
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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.
0
bilaloch Messages postés 556 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 31 octobre 2019 1
1 août 2007 à 21:36
Interessant. Pourrais je avoir plus d'infos sur le DDK s'il te plait ?

BILALoch
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
1 août 2007 à 22:27
ben non racpp, celui qui lira la ram c'est le driver, donc ne se fait que depuis le kernel mode.
SoftICE idem charge des drivers.

ciao...
BruNews, MVP VC++
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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.
0
bilaloch Messages postés 556 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 31 octobre 2019 1
2 août 2007 à 09:42
Je vois. Merci pour les précisions. Comment un programme pourrait il atteindre le kernel-mode ? Ce n'est pas possible ?

BILALoch
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
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.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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é.
0
bilaloch Messages postés 556 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 31 octobre 2019 1
2 août 2007 à 17:36
Merci de votre aide :)

BILALoch
0
testtestiop Messages postés 16 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 14 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...
0
Rejoignez-nous