Accueil > Forum > > > > Petit problème pour comparer (cmp)
Petit problème pour comparer (cmp)
jeudi 21 février 2008 à 18:53:26 |
Petit problème pour comparer (cmp)

smok1360
|
Bonjour à tous, Pour commencer, j'espère de ne pas avoir choisis le mauvais lieu pour poster, j'ai un petit peu hésité  Donc, j'ai décidé d'apprendre l'assembleur et j'ai fait un petit "vérificateur de mot de passe" trés basique et le problème est que mon code me renvoie toujours NO, je pense que cela se joue sur une mauvaise utilisation de cmp : SECTION .data mdp db '123' bon db 'OK', 10 bad db 'NO', 10 wel db 'Entrez votre mdp : ' welen equ $-wel buflen db 1024 SECTION .bss buf resb 1024 SECTION .text GLOBAL _start _start: mov edx, welen mov ecx, wel mov ebx, 1 mov eax, 4 int 80h mov edx, buflen mov ecx, buf mov ebx, 0 mov eax, 3 int 80h mov eax, [buf] cmp eax, mdp je cest_bon mov edx, 3 mov ecx, bad mov ebx, 1 mov eax, 4 int 80h jmp exit cest_bon: mov edx, 3 mov ecx, bon mov ebx, 1 mov eax, 4 int 80h exit: mov ebx, 0 mov eax, 1 int 80h EDIT : Je suis sous Linux et CPU : i686 mais bon je pense que c'est surtout une erreur d'écriture et je tiens à préciser que je n'ai aucune erreur avec nasm et ld... Merci 
|
|
vendredi 22 février 2008 à 14:02:41 |
Re : Petit problème pour comparer (cmp)

_dune2_
|
Réponse acceptée !
Salut,
commenter son code peut aider à diagnostiquer ;) ex : ; écriture de 'Entrez votre mdp : ' sur la console (eax:4 -> sys_write , ebx:1 -> stdout) mov edx, welen mov ecx, wel mov ebx, 1 mov eax, 4 int 80h
; lecture du mot de passe (eax:3 -> sys_read, ebx:0 -> stdin) mov edx, buflen mov ecx, buf mov ebx, 0 mov eax, 3 int 80h
; on recopie les 4 1ers octets de la chaine buf en LSB (ordre des octets inversés) dans eax mov eax, [buf] ; on compare ce mot de 32bits avec l'adresse du texte '123' cmp eax, mdp
; si ils sont identiques (ce que je doute fort en comparant 4octets ; d'un texte et une adresse), alors on va l'affichage de "OK" je cest_bon
; on affiche 'NO' mov edx, 3 mov ecx, bad mov ebx, 1 mov eax, 4 int 80h
; on va quitter le prog jmp exit
cest_bon: ; on affiche 'OK'
mov edx, 3 mov ecx, bon mov ebx, 1 mov eax, 4 int 80h
; on quitte le prog exit: mov ebx, 0 mov eax, 1 int 80h
Bon ben après une simple analyse, je pense que ça a l'air évident :) Il n'y a aucune chance pour que tes 4 octets de "buf" soient identique à une adresse.
Première correction : changer "cmp eax, mdp" par "cmp eax, [mdp]" (pour comparer les 4 1ers octets de 'buf' aux 4 1ers octets de 'mdp').
Ensuite, le problème c'est que de cette manière tu compares 4 octets (pas un de plus, pas un de moins !)... Donc si tu veux garder cette simplicité, il te faut restreindre la saisie à 4 caractères, et utiliser un mot de passe de 4 caractères (exemple : "mdp db '1234'").
++dune2
Gentoo... que du bonheur ...
|
|
vendredi 22 février 2008 à 15:52:29 |
Re : Petit problème pour comparer (cmp)

Nasman
|
Bonjour,
Comme te le fait remarquer _dune2_ ton problème réside dans le fait que tu compare ton mot de passe à une adresse. Tu peux également effectuer la comparaison de tes caractères avec l'instruction cmpsb (comparaison octet par octet) ou cmpsd (dword par dword) - mais il faudra avoir un nombre de caractères multiple de 4. Pour les appels système Linux, je ne sais pas car je débute sur cet OS.
PS: Je suis à la recherche d'infos pour les "api" Linux du style MessageBox de Windows.
|
|
vendredi 22 février 2008 à 16:25:36 |
Re : Petit problème pour comparer (cmp)

_dune2_
|
Salut Nasman, pour les "api" du style MessageBox sous linux, il faut bien assimiler que sous unix, l'interface graphique est une surcouche à l'OS. Il ne fait donc pas parti des appels systèmes standards. Pour pouvoir créer et gérer une application graphique, il te faudra utiliser un "toolkit" graphique. Sous linux 2 toolkits sont plutôt bien intégré : gnome et kde.
Tu devras donc passer par une de ces 2 API pour réaliser une interface graphique, et donc te réferer vers leurs documentations respectives : http://api.kde.org/ ou http://library.gnome.org/devel/gtk/stable/
++dune2
Gentoo... que du bonheur ...
|
|
vendredi 22 février 2008 à 17:16:14 |
Re : Petit problème pour comparer (cmp)

smok1360
|
Merci à vous deux d'avoir pris la peine de répondre, parce que à ce que je vois y'as pas grand monde en assembleur sous linux ici... @ _dune2_ : Merci, c'est clair qu'aprés avoir pris le temps de commenter j'aurais pu voir mon erreur(  ou pas...). @ Nasman : J'avais déjà vu qu'on pouvait comparer par octet ou dword etc... Mais bon dans les docs en anglais c'est un peu dur à extraire  Si vous avez des cours, ou docs sous linux en francais, anglais, espagnol ou italien je prends (quoique je sais pas si y'en as beaucoup pour linux ^^) Bonne journée à vous 
|
|
vendredi 22 février 2008 à 17:25:16 |
Re : Petit problème pour comparer (cmp)
|
vendredi 22 février 2008 à 17:31:14 |
Re : Petit problème pour comparer (cmp)

smok1360
|
Merci pour les liens je vais aller voir ça de plus prés... 
|
|
vendredi 22 février 2008 à 17:42:11 |
Re : Petit problème pour comparer (cmp)

_dune2_
|
Ensuite, en ce qui concerne l'asm intel à proprement parler, il faut se diriger vers les datasheets intel. Ces documents de références sont gros et sembles confus, mais ce sont des documents de références sur lesquels on se refère pour une instruction en particulier par exemple. C'est notre sacro-sainte bible du programmeur asm ;) [ Lien ]Gentoo... que du bonheur ...
|
|
vendredi 22 février 2008 à 21:56:50 |
Re : Petit problème pour comparer (cmp)

Nasman
|
>_dune2_ Merci pour ces infos, j'ai la distribution ubuntu (donc gnome) et malgré mes recherches sur le net, je n'ai pas trouvé grand chose sur l'interface graphique. Je comprend mieux maintenant et je vais regarder la doc sur gnome.
>smok1360 Personnellement j'utilise la documentation fournie avec Nasm et pour la programmation sous windows j'utilisais un fichier win32.hlp (plus trop à jour mais plus commode que msdn).
A+
|
|
samedi 23 février 2008 à 20:05:24 |
Re : Petit problème pour comparer (cmp)

BruNews
|
La version MSDN qu'on installe en local est infiniment plus confortable que sur le net.
ciao... BruNews, MVP VC++
|
|
Cette discussion est classée dans : int, db, mov, eax, ebx
Répondre à ce message
Sujets en rapport avec ce message
Différences ??? [ par Arecibo ]
Voila je debute en assembleur et j'aimerais savoir quelles sont les différences entre :-> mov eax, ebx et mov eax, [ebx]-> mov esi, eax et mov [esi],
FPU et puissance d'un nombre [ par AlexMAN ]
Bonjour, Voila, j'ai 'codé' 2 fonctions permettant de calculer un nombre n a une puissance exp (la fonction est bourrin, cad pas de decoupages de la f
j'ai un prob avec mon buffer ; ya pas d'amuses gueules (masm32) [ par papiboff ]
bj si je mets le buffer "somme " en dd avec charge eax et que j'ajoute deux 'dec ebx ' , ben , marche pas correctement ; (pêrqué ???? = en french) sv
inverser une chaine [ par MrdJack ]
salut, je suis sur un projet de calculatrice me permettant de faire des calculs avec des nombres tres grands. chaque nombre est stocké dans la memoire
[linux] read and open [ par sheorogath ]
Bonjour,je débute un peu en assembleur et j'essaie de faire un programme qui lit le début d'un fichier dont le nom est entré par l'utilisateur.Voici l
AT&T erreur de compilation etc... [ par maminovadu75 ]
Bonjour, j'aimerais me mettre a l'assembleur mais j'ai quelque problème.voici mon code morceau de code pour trier un tableau de int : ( mélange de C/C
Mini OS !! debut [ par Hardouz ]
salut a tous ! je debut en ASM je vx bosser un px en ASM je connais l'architechture ect !!! j'ai fais un pti programme mais il ya un probléme 1/ lors
Aligner des données pour le SSE [ par epineurien ]
Bonjour à tous !J'ai un petit problème avec du code dont je mesure la vitesse: suivant la compilation, la vitesse varie du simple au double .J'expliqu
assembleur/ patronyme [ par maxverypainful ]
Bonjour, je suis nouveau en tant qu'étudiant en informatique de gestion et j'ai une question concernant un code que nous devons créer.Il a pour but de
probleme d'affichage d'une soustraction [ par calimerros ]
[u]Bonjour à tous et à toutes.[/u] Voici un programme que je réalise et je bloque au niveau de l'affichage d'une soustraction (SUB). Pour moi mon pr
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice CRéATION D'UNE BASE DE DONNéE SOUS SQL AZURECRéATION D'UNE BASE DE DONNéE SOUS SQL AZURE par junarnoalg
Sans rentrer dans les détails, je me propose ici de faire un rapide tour de ce que propose SQL Azure.
SQL Azure est avant tout un service d'hébergement de base de données relationnelles construit sur SQL Server. Il permet aux entreprises d...
Cliquez pour lire la suite de l'article par junarnoalg TECHDAYS PARIS 2010 : LES SERVICES D'APPLICATIONS DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LES SERVICES D'APPLICATIONS DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Xavier Moreels et Julien Bakmezdjian Ce sujet est lié au partage des applications comme services dans SharePoint 2010, ceci représente la possibilité de créer sa propre application qui sera utilisable comme ceux en standard : Search...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : PIC 16F84RE : PIC 16F84 par belounis
Cliquez pour lire la suite par belounis RE : PIC 16F84RE : PIC 16F84 par pont
Cliquez pour lire la suite par pont
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|