Accueil > Forum > > > > [ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique)
[ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique)
dimanche 4 avril 2010 à 04:46:19 |
[ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique)

dogloop
|
J'ouvre ce topic pour essayer de mieux comprendre quelles sont les différentes façons pour accéder à toute la RAM (et aussi peut être la ROM) de mon PC. Ok le principe de la mémoire "protégée" est que j'accéde à la RAM sans déranger les autres programmes et utilisateurs.
Mais si j'ai envie de scanner toute la mémoire de mon PC juste pour voir ce qui s'y passe avec un petit programme simple en assembleur, comment je fais ?
A titre d'exemple voilà un programme simple de scan. mémoire pouvant tourner sous MS-DOS 8088 et me montrant tout ce qui se passe dans un vieux PC disposant de 640 Ko de RAM :
Code :
cld
; open 80 x 50 x 16 text mode (font 8x8)
mov ax, 2
int 16
mov ax, 0x1112
xor bl, bl
int 16
; DS = memory source
; ES = target (video ram)
xor ax, ax
mov ds, ax
mov ax, 47104
mov es, ax
loop_scan:
; displaying memory
xor si, si
xor di, di
mov cx, 80 * 49
loop_disp:
movsb
inc di
loop loop_disp
; displaying segmentation value
mov ax, 0x0C20 ; space char & bright red
mov word [es:49*160 ], ax
mov word [es:49*160 + 2], ax
mov word [es:49*160 + 4], ax
mov word [es:49*160 + 6], ax
mov word [es:49*160 + 8], ax
mov ax, ds
mov di, 49 * 160 + 8
call disp_number
; key tests
; 8, 2, 9, 3, ESC
xor ah, ah
int 22
cmp al, '8'
jne no_up
mov bx, ds
sub bx, 5
mov ds, bx
jmp loop_scan
no_up:
cmp al, '2'
jne no_down
mov bx, ds
add bx, 5
mov ds, bx
jmp loop_scan
no_down:
cmp al, '9'
jne no_page_up
mov bx, ds
sub bx, 80 * 49 / 16
mov ds, bx
jmp loop_scan
no_page_up:
cmp al, '3'
jne no_page_down
mov bx, ds
add bx, 80 * 49 / 16
mov ds, bx
jmp loop_scan
no_page_down:
cmp al, 27
jne loop_scan
ret
disp_number:
; AX = number to display
; ES = video RAM (usually 0xB800)
; DI = position in video RAM
mov bx, 10
xor dx, dx
mov cx, ax
div bx
add dl, 48
mov byte [es:di], dl
dec di
dec di
mov ax, cx
xor dx, dx
div bx
cmp ax, 0
jne disp_number
ret
à compiler avec NASM.
Au démarrage le segment lu est placé sur 0, en appuyant sur n'importe quelles touches vous verrez le buffer clavier se remplir dans le milieu de l'écran. Les vecteurs d'interruptions tout au début.
Autour de 7840, en appuyant sur les touches vous verrez la pile.
Un peu avant 40000 l'interpréteur de commandes
ensuite 47104 (0xB800) la video ram donc avec l'effet mirroir vous verrez des blocs de caractères changer
et enfin la ROM ... avec du ASCII incompréhensible puisque c'est le code assembleur des routines de bases du PC.
Est-ce que quelqu'un peut me dire quels moyens j'ai pour faire l'équivalent pour visualiser mes 2 Go de RAM ... au moins le début voir ce qui se passe réellement et physiquement (la table d'allocation des blocs de mémoire, le noyau, les programmes, la VIDEO RAM, etc ... )
Est-ce déjà possible, faut il nécassairement que ça soit ROOT qui le fasse ? ou que le programme soit executé comme si c'était un DRIVER ?
Merci 
|
|
dimanche 4 avril 2010 à 08:12:35 |
Re : [ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique)

ghuysmans99
|
Si tu veux faire ça c'est plus facile de le faire sans aucun autre OS. Tu codes ton propre OS en mode protégé avec une GDT qui te permet de lire/écrire où tu veux et après il te suffit de te faire une petite gestion écran.
---
VB.NET is good ... VB6 is better 
|
|
lundi 5 avril 2010 à 03:09:06 |
Re : [ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique)

dogloop
|
Merci pour ta réponse
Donc CD-ROM de boot ?
Mais est-ce si difficile de lancer par exemple mon programme comme un driver pour qu'il est tous les priviléges ?
Comment font les anti-virus qui doivent scanner la mémoire ?
Merci.
|
|
lundi 5 avril 2010 à 10:17:57 |
Re : [ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique)

ghuysmans99
|
Les antivirus ne scannent pas la mémoire : ils ne font que lire la mémoire de chaque process via l'API ReadProcessMemory sous Windows. Faire un driver demande de très bonnes connaissances du noyau Windows/Linux et c'est beaucoup plus simple de faire un OS "comme ça" si tu veux seulement voir le contenu de ta RAM.
---
VB.NET is good ... VB6 is better 
|
|
lundi 5 avril 2010 à 18:51:01 |
Re : [ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique)
|
jeudi 8 avril 2010 à 01:47:39 |
Re : [ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique)

dogloop
|
Merci pour toutes ces précisions ...
Oui d'accord que passer par MS-DOS est tordu, ce n'est pas mon but de toutes façons ;-)
C'est quand même incroyable que juste pour utiliser mon processeur comme s'il était presque seul avec une RAM comme sur une carte électronique en lui faisant ignorer l'O.S. le mode protégé et le basculement de contexte, il faille passer par une connaissance de toutes ses docs.
L'informatique des temps modernes devient comme les voitures modernes ; tu l'utilises mais t'as pas à savoir ce qui se passe en dessous ... c'est les "personnes compétentes" qui elles seulent ont le droit de mettre le nez dedans ... enfin c'est mon impréssion pour l'instant ... je changerai d'avis peut être dans quelques temps :-)
Sinon j'ai téléchargé ton code "debugger" ... très utile et bravo pour cette initiative qui permet encore à ceux qui aiment l'informatique de ce savoir ce qui se passe en-dessous.
|
|
jeudi 8 avril 2010 à 10:33:15 |
Re : [ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique)
|
mardi 13 avril 2010 à 06:24:10 |
Re : [ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique)

dogloop
|
Bien sûr que tout nécessite un minimum d'apprentissage ... mais changer un joint de culasse sur une voiture d'aujourd'hui sera beaucoup plus décourageant que le changer sur une voiture d'il y a 30 ans ... pourtant le principe fondamental du moteur est le même ...
De la même manière que lire ma mémoire sous MS-DOS 16 bits ou un micro. 8 bits demande un peu d'apprentissage et le faire sous un Windows 95 like ou un Linux ... il faut biaiser l'O.S. en lui faisant croire qu'il démarre un driver en ring 0 ...
A force de faire trop de protections et de confort paradoxalement l'informatique devient plus compliquée ...
|
|
mardi 13 avril 2010 à 09:18:25 |
Re : [ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique)

ghuysmans99
|
Pas vraiment plus compliquée : sans protection mémoire (donc en ring 0 ou en développant ton propre OS) c'est toujours aussi simple.
---
VB.NET is good ... VB6 is better 
|
|
mercredi 14 avril 2010 à 08:07:01 |
Re : [ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique)
|
Cette discussion est classée dans : scan, mov, ds, ax, bx
Répondre à ce message
Sujets en rapport avec ce message
Ennoncés à corriger svp :-) [ par did2604 ]
Bonjour à tous,Mon professeur m'a demandé de convertir les énoncés (en langage C) suivants en assembleur, quelqu'un aurait-il la gentilesse de me les
petit probleme de debutant [ par freekc ]
j'essaie de faire un ptit prog que lorsque l'on rentre son nom prenom etc . Il y est un recapitulatif qui se mette en dessous ms lorsque que le recapi
rs232 [ par TRAX44 ]
salut,tout premièrement je sais qu'il ya des exemples sur le site!mais mon problème est autre je tiens à comprendre pourquoi mon code ne fonctionne pa
Affichage [ par AMENO ]
Cher amis aidez moi, c'est une partie de mon examen de noel. et je suis bloquerenfin il 'sagit d'un programme que l'on doit entrer jsuqu a 32 caracter
afficher un pixel [ par oclone ]
hello, j'aimerais faire une librairie graphique en c++ mais pour cela il faut deja que je puisse afficher un point, j'ai pensé que la meilleur solutio
Modifer le vecteur d'interruptions [ par vecchio56 ]
Bonjour J'essaie de refaire la source http://www.cppfrance.com/code.aspx?ID=33558 en assembleur (ca consiste à modifier la routine de l'interruption 0
boot system [ par henri12 ]
salut je viens de trouver ce code qui permer de lancer un fichier sur une disquettr a: exemple systemje voudrais qu il me lance le jeu pong sur a: j
Affichage décroissant et alphabétique de 2 listes(Nom_Prénom et Note) [ par m_didi9 ]
[code=autre]Data SEGMENT Mess1 DB 10,13, 'Entrez la liste des Noms :' DB 10, 13, '$' Mess2 DB 'Entrez la liste des Notes :' DB 10, 13, '$' Mess3
ERREUR DE SEGMENTATION en asm [ par tahsgh ]
salam; jai le code suivant ----------------------------------------- global main SECTION . text main :
Executer 2 action en meme temps [ par HirOinEvOl ]
Bonjour, je souhaite exécuter les deux codes suivant mais simultanément pour qu'ils puissent tournés en parrallèles. Je n'ai trouvé aucun moyen de l
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|