• STATISTIQUES
  • Il y a eu un total de 0 membres et 8131 visiteurs sur le site dans les dernières 24h pour un total de 8 131 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges
    [EN] xda-developers
    Très bon site pour les gros bidouilleurs de smartphone de windows à androïd et de Apple jusqu'...
    Phreaking
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking
    [FR] apprendre-a-manipuler
    Site d'apprentissage de la manipulation d'autrui.
    Hacking
    [FR] Hackfest
    Le Hackfest est un évènement de sécurité et de piratage informatique au Québec reg...
    Hacking
    [EN] Rankk
    Site de challenge construit sur le principe d'une pyramide à 9 level. Level 1: 60,Level 2: 72,Level 3: 68,Lev...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 5 (1 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Le mystère de GNU yes
26-11-2012, 20h34 (Modification du message : 08-12-2012, 18h18 par gruik.)
Message : #8
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: Le mystère de GNU yes
yep, j'ai fait quelques tests aussi de mon coté, au temps pour moi ce n'est pas int 80h VS sysenter/syscall qui est en cause, c'est write()...

si on fait un test :

gruik-write.c :
Code C :

#include <unistd.h>

int main (void)
{
        while (1) write(STDOUT_FILENO, "y\n", 2);
        return 0;
}
 


gruik-fwrite.c :
Code C :

#include <stdio.h>

int main (void)
{
        while (1) fwrite ("y\n", 2, 1, stdout);
        return 0;
}
 


et la diff entre les deux :
Code BASH :

$ timeout 3s ./gruik-write > log-write
$ timeout 3s ./gruik-fwrite > log-fwrite
$ wc -l log-*
164644864 log-fwrite
  3200165 log-write
 


bingo Wink
les miracles de la bufferisation

en bonus gruik-fwrite.asm pour la peine :
Code ASM :

; nasm -f elf gruik-fwrite.asm
; gcc gruik-fwrite.o -o gruik-fwrite

        extern fwrite
        extern stdout

        section .data
msg:    db "y", 10              ; 79h,0ah
len:    equ $ - msg

        section .text
        global main

main:
        ; fwrite (msg,len,1,stdout)
        mov eax, stdout
        mov eax, [eax]
        push eax
        push len
        push 1
        push msg
.loop:
        call fwrite
        jmp .loop       ; les parametres sont toujours là, on boucle directement
 
+1 (1) -1 (0) Répondre


Messages dans ce sujet
Le mystère de GNU yes - par spin - 05-07-2012, 14h32
RE: Le mystère de GNU yes - par Ark - 05-07-2012, 16h52
RE: Le mystère de GNU yes - par spin - 05-07-2012, 19h31
RE: Le mystère de GNU yes - par Ark - 06-07-2012, 10h56
RE: Le mystère de GNU yes - par gruik - 24-11-2012, 18h42
RE: Le mystère de GNU yes - par spin - 25-11-2012, 15h33
RE: Le mystère de GNU yes - par spin - 26-11-2012, 20h07
RE: Le mystère de GNU yes - par gruik - 26-11-2012, 20h34

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut