Tout d'abord, toute la Team Hackademy vous souhaite une année 2008 pleine de bonnes choses !

Pour débuter cette année, nous sommes heureux de vous annoncer que le Ezine commence à prendre forme (surtout l'équipe qui dirigera celui-ci) et devrait apparaitre sur le Web début Avril. Cela peut paraitre loin mais nous voulons vraiment faire un Ezine de qualité, cela demande donc beaucoup de préparation.

Pour ceux qui aimeraient publier dans le premier numéro il est encore temps d'envoyer vos articles (au pire il seront pour le prochain numéro) directement à redaction@thehackademy.net.

Autre annonce importante, le premier meeting HZV aura lieu le 16 Février 2008 sur Paris (dans les locaux de Sysdream). Celui-ci sera mensuel et aura pour concept de dispenser une formation d'environ 4h sur divers thèmes choisi par la communauté. Le premier thème abordé sera la sécurité VoIP et sera dispensé par CrashFr. Il vous est possible de réserver vos places en formulant votre demande sur meeting@thehackademy.net. Les meeting sont aussi l'occassion pour ceux qui n'auront pas la chance d'assister à la formation de faire des rencontres avec les autres membres de la communauté. Biensur ce meeting est ouvert à tous et gratuit (seul la limite de place disponible peut vous empecher l'accès; alors faites vite !).

Bonne année et n'oubliez pas: HZV will never die !

 FAQ - Rechercher  

[ASM] Problème de buffer avec appel linux

 
The Hackademy Forum Index du Forum -> Programmation Poster un nouveau sujet   Répondre au sujet
Page 1 sur 1
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
HacKSpideR



Inscrit le: 19 Juin 2007
Messages: 37

Message Posté le: Jeu Mar 06, 2008 10:48 pm  |   Sujet du message: [ASM] Problème de buffer avec appel linux Répondre en citant
Bonjour à tous,

Je me suis remie à la programmation bas niveau mais sous linux et j'ai essayer de faire un programme simple écrivant dans un fichier.
Mais je n'arrive pas à utilisé le nom du fichier rentré par l'utilisateur et stocké dans un buffer.

Voici le morceau de code (syntaxe Intel avec nasm) :

Code:
BITS 32
 
   SECTION .data
      message     db "Fichier : ",10
      
   SECTION .bss
      buffer   resb 1024
      buffer_len equ $-buffer
      
   SECTION .code
      GLOBAL _start
      
      _start:
      
      mov eax, 4 ; Fonction WRITE
      mov ebx, 1
      mov ecx, message
      mov edx, 10
      int 0x80

      mov eax, 3 ; Fonction READ
      mov ebx, 0
      mov ecx, buffer ; Buffer
      mov edx, buffer_len ; Taille buffer
      int 0x80

      mov eax, 5 ; Fonction OPEN
      mov ebx, buffer
      mov ecx, 10 ; Flag
      mov edx, 0 ; Mode
      int 0x80
      test eax, eax   
      js error
      push eax


Donc le premier appel affiche le message "fichier :" ensuite, l'utilisateur doit entrer le nom du fichier et là impossible d'ouvrire le fichier, je prend le jump error.

J'ai entendu parler qu'il y'avait un caractére ( peut-etre un "\n" ) à la fin de la saisie dans le buffer.
Auriez vous une idée ?


Dernière édition par HacKSpideR le Dim Mar 09, 2008 6:23 pm; édité 1 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
Celelibi



Inscrit le: 29 Mar 2006
Messages: 770

Message Posté le: Ven Mar 07, 2008 5:16 pm  |   Sujet du message: Répondre en citant
À priori je dirais que tu as le même problème que tu aurait en C avec la fonction read.

en gros en C ton code donne un truc genre :
Code:
char *message = "Fichier : "; /* Ici un \0 final est rajouté par le compilateur */
char buffer[1024];
int buffer_len = 1024;

write(1, message, 10);
read(0, buffer, buffer_len);

if (open(buffer, 10, 0) == 0)
    /* Erreur */

Y'a des tas de trucs qui me dérangent là dedans.
Tu ne vérifie pas le retour de tes appels système.
Par conséquent tu n'as aucune idée de la taille des données lues. La fonction open ne pourra pas deviner que dans la chaîne "blahʱæzåʱ" le nom du fichier que tu voulais désigner c'est blah.
Ensuite, j'ai pas trouvé de combinaison de modes qui donne 10.

Commence par résoudre ton problème de chaîne de caractère en rajoutant un caractère nul à la fin de la chaîne lue.


Sinon, pourquoi coder en assembleur ? Tu en as que rarement besoin, la plus part du temps du C bas niveau suffit.

Et puis y'a pas de "h" dans syntaxe.
_________________
Il y a un boulet qui sommeille en chacun de nous. (enfin, surtout vous...)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
HacKSpideR



Inscrit le: 19 Juin 2007
Messages: 37

Message Posté le: Ven Mar 07, 2008 6:32 pm  |   Sujet du message: Répondre en citant
D'accord, je vais ajouter un caractère nul et vérifier le retour des appels systèmes.

J'ai fait ce code en assembleur pour m'amuser, j'écrit rarement en asm.

Mais merci pour l'aide je vais voir ce que sa donne. Very Happy

et désolé pour la faute d'orthographe.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
Apophis1988



Inscrit le: 05 Aoû 2007
Messages: 69

Message Posté le: Sam Mar 08, 2008 8:22 pm  |   Sujet du message: Répondre en citant
Celelibi a écrit:

Sinon, pourquoi coder en assembleur ? Tu en as que rarement besoin, la plus part du temps du C bas niveau suffit.


En effet, et si du C bas niveau ne suffit pas, on préfère généralement interfacer l'asm avec le C pour pouvoir bénéficier de certaines bibliothèques (faut pas aimer tout réécrire quand on l'a déjà sous la main). Au grand jamais on ne se risque de nos jours (sauf quand on a (très) peu de jugeote) à coder uniquement en assembleur même pour le plaisir.
Il te sera bien plus utile d'apprendre à placer ces instructions machines dans ton code en C (et même là, si ce n'est pas pour une opération critique ou pour gagner considérablement en temps de calcul, laisse tomber).
Il faut bannir le culte du "j'apprends à faire comme h4x0r simplement pour être comme lui"! Le temps que tu perds aujourd'hui à apprendre l'asm tu peux l'utiliser pour assimiler des langages qui seront très utilisés dans les années à venir: là tu auras vraiment une longueur d'avance sur les autres.

A bon entendeur...


Dernière édition par Apophis1988 le Dim Mar 09, 2008 6:07 am; édité 1 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
toto



Inscrit le: 26 Mar 2007
Messages: 227

Message Posté le: Sam Mar 08, 2008 9:54 pm  |   Sujet du message: Répondre en citant
on utilise surtout l'ASM intelligemment quand il s'agit de réaliser des instructions qui "consomment" très peu d'octets (notamment pour l'exploitation de failles applicatives)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
HacKSpideR



Inscrit le: 19 Juin 2007
Messages: 37

Message Posté le: Dim Mar 09, 2008 6:22 pm  |   Sujet du message: Répondre en citant
Citation:
Il faut bannir le culte du "j'apprends à faire comme h4x0r simplement pour être comme lui"! Le temps que tu perds aujourd'hui à apprendre l'asm tu peux l'utiliser pour assimiler des langages qui seront très utilisés dans les années à venir: là tu auras vraiment une longueur d'avance sur les autres.


Je n'ai pas appris l'ASM pour faire comme les "haxors" mais pour m'essayer à la rétro-ingénierie sous windows
et je sais qu'il est inutile de coder avec ce language alors qu'il existe le java, le perl et bien d'autre mais je voulais essayer sous linux l'histoire de dire j'y arrive.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
Celelibi



Inscrit le: 29 Mar 2006
Messages: 770

Message Posté le: Dim Mar 09, 2008 7:38 pm  |   Sujet du message: Répondre en citant
Apophis1988, je ne suis pas vraiment d'accord avec toi. Toute connaissance acquise pourra un jour être utile. (Pourra, et le sera.)
Selon moi on peut coder en assembleur juste "pour le fun", ou pour le défi intellectuel.
Tout dépend de l'objectif à atteindre.

L'important c'est avant tout de se faire plaisir.
_________________
Il y a un boulet qui sommeille en chacun de nous. (enfin, surtout vous...)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Apophis1988



Inscrit le: 05 Aoû 2007
Messages: 69

Message Posté le: Dim Mar 09, 2008 10:39 pm  |   Sujet du message: Répondre en citant
Bien vrai Celelibi. Comme il est tout aussi vrai qu'on apprend beaucoup plus sur les fondements même de l'informatique de base en apprenant l'assembleur que d'autres langages de plus haut niveau, mais hélas aujourd'hui la demande est beaucoup plus poussée vers certains de ces derniers langages tels le java ou le C++ (et C#).
La raison est je pense, que les gros portefeuilles considèrent aujourd'hui (en gros) les langages de bas niveau comme des acquis dans le domaine, un peu à l'image de certains axiomes en mathématiques qu'on ne remet plus en cause, mais qui sont implicitement utilisés dans des grandes formules toutes faites, toutes génériques, qu'on utilise bêtement sans se soucier de ce qu'il y'a derrière.

La métaphore sur les "h4x0rs" n'étaient pas pour vous HacKSpideR, mais uniquement pour le cas générale où au début, nous voulons tous découvrir ce qu'il réellement derrière. C'est bien beau quand on commence à le connaitre, puis après on se rend compte qu'on n'est pas vraiment plus avancé que quand on ne le savait pas.
Ceux qui savent réellement ce qu'il y'a derrière le mot informatique, qui sont généralement des passionnés comme vous et moi, se retrouvent généralement dans des laboratoires à faire de la recherche et à être payés pour 3 fois rien. Tandis que ceux qui ont la pratique et qui sont à jour des nouveaux "pseudos langages" se retrouvent ingénieurs avec des salaires de plus de 85000 euros net par an.
Je n'ai pas vraiment envie que nous finissions comme les dinosaures...
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
HacKSpideR



Inscrit le: 19 Juin 2007
Messages: 37

Message Posté le: Lun Mar 10, 2008 6:10 pm  |   Sujet du message: Répondre en citant
Je suis d'accord avec Apophis meme si je ne connais pas trop le monde du travail.

Et je croie avoir resolue mon problème, merci Celelibi
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
solo



Inscrit le: 14 Oct 2005
Messages: 958

Message Posté le: Mar Mar 11, 2008 11:57 am  |   Sujet du message: Répondre en citant
Citation:
Je n'ai pas appris l'ASM pour faire comme les "haxors" mais pour m'essayer à la rétro-ingénierie sous windows
alors le guide de goppit aurait suffit : win32 assembleur coding for crackers Wink
_________________
malware
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Montrer les messages depuis:   
The Hackademy Forum Index du Forum -> Programmation Poster un nouveau sujet   Répondre au sujet

 
Sauter vers:  

Powered by phpBB
Theme modified by mOg & CrashFr
Traduction par : phpBB-fr.com