Forkbomb ASM-ben

Unatkoztam, így írtam egy kis forkbombot ASM-ben. Linuxok alatt biztos müxik, talán BSD-k alatt is (nem tudom, hogy ez a része az ABInak POSIX vagy Linux függő-e, de majd kiokosítotok). Elég hatékony, persze ulimit. :)


section .text
    global _start

_start:
    ; brk(2) megfeleloje, lekerdezzuk a .bss szekcio top-cimet (tovabbi
    ; dinamikus allokaciokhoz kell)
    mov eax, 45
    xor ebx, ebx
    int 0x80
    mov [alloc], eax
    mov [end], eax

_loop:
    ; Kiterjesztjuk az allokalt teruletet a megadott merettel (size)
    mov eax, 45
    mov ebx, [end]
    add ebx, [size]
    int 0x80
    mov [end], eax

    ; Feltoltjuk a lefoglalt memoriat (lapozas miatt kell, a sima allokalas,
    ; ha jol tudom nem eleg (sima forkolas vegkepp nem))
    mov ecx, [end]
    sub ecx, [alloc]
    mov edi, [alloc]
    mov al, 1
    rep stosb

    ; fork(2) megfeleloje
    mov eax, 2
    int 0x80
    jmp _loop

    mov eax, 1
    mov ebx, 0
    int 0x80

section .data
    size: ; 64 kb
        dd 0x00010000

section .bss
    alloc:  resb 4
    end:    resb 4

Fordítása: nasm -f elf fb.asm && ld -o fb fb.asm

Nem valami vészes, éppen IRT labor pótzh-n voltam, és egy kicsit unatkoztam, ezért amolyan ébresztő gyakorlatként. Valamint jó lenne a múltkori tutorialokból és referenciákból lefordítani egy keveset magyarra. Majd megpróbálkozom vele.

Remélem, volt aki egy kicsit kedvet kapott az assemblyhez, persze nem a blogjaim miatt, hanem csak úgy, poénból.

Hozzászólások

Latom tenyleg unatkozol... :) Egyebkent sztem pont ezert nincs ertelme az asmnak magasszintu OS alatt, OS hivogatashoz, meg ahhoz minek hogy a compiler altal generalt ABI-t "emulald" kezzel... Mert ha egy erdekes algoritmust kell minel gyorsabbra megirni az mas, de OS-t hivogatni asmbol a legundoritobb dolog ami csak letezik, IMHO. :)

Egyebkent a mov al,1; rep stosb-tol feljajdultam. :P Nem, lehet valahogy osztani 4-el a meretet, hogy dwordoket fillezz..? :) Vagy alignolni elotte ha nagyobb teruletrol van szo? :P Ha mar assembly, adjunk az ilyenekre, mert pont ez lenne a lenyege, IMHO. :D

Mellesleg most komolyan fanyalgasnak tunik az egesz, meg hogy folyton csak szarbeszolok, de kerlek vedd inkabb ugy, hogy ha mar beszolok, akkor legalabb erdekel a dolog. :) Masok blogjaiba alig szoktam bevonyitani, a tied legalabb erdekes dolgokkal foglalkozik neha, es ez jo.

Hali!

Eloszor is: nem vagyok sertodekeny, nyugodtan szolj be, az csak jo lehet, ha keletkezik nemi plussz info is.

Egyebkent a mov al,1; rep stosb-tol feljajdultam. :P Nem, lehet valahogy osztani 4-el a meretet, hogy dwordoket fillezz..? :)

Itt most direkt kellett a ciklusido. Eleg lett volna minden lapba (4k) egy biteot irni, az is megtette volna. Csak most erre volt kedvem :)

Vagy alignolni elotte ha nagyobb teruletrol van szo? :P Ha mar assembly, adjunk az ilyenekre, mert pont ez lenne a lenyege, IMHO. :D

Ja, xor eax,eax es test eax,eax szinten figyelek azert ra :)
Meg a kettovel osztast sem divvel csinalom :)

Latom tenyleg unatkozol... :)

IRT zeha volt, reggel nyolc, kreativabb dolog nem jutott eszembe.

Magasszintu OS: tenyleg nincs annyi ertelme, de ffmpeg is tele van ASM-es optimalizalt reszekkel, ha jol emlexem. Ki tudja, mikor kell majd gyorsasagra optimalizalnom, akkor jol johet. Meg a C ezeket libbol hivja, a platformfuggetlenseg jegyeben.

...a tied legalabb erdekes dolgokkal foglalkozik neha, es ez jo.

Tenkju, pozitiv visszajelzeseknek mindig orulok. :)

"No boom today. Boom tomorrow. There's always a boom tomorrow. What? Look, somebody's got to have some damn perspective around here. Boom, sooner or later. BOOM!" -- Lt. Cmd. Ivanova