🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #2427

Re: naruszenie ochrony pamieci - dlaczego

#2427
From: "Bogdan (bogdro)
Date: Sun, 12 Jun 2011 12:06
87 lines
2119 bytes
W dniu 12.06.2011 09:37, panki pisze:
> On 11 Cze, 20:19, yesma <ye...@false.pl> wrote:
>> panki pisze:> witam - probuje troche oswoic sobie assemblera i nie zabardzo wiem
>>> gdzie popelnilem b��d w przykladowym kodzie. Bo po uruchomieniu tego
>>> programu wypisuje ten napis i potem pisze naruszenie ochryny pamieci.
>>
>> [...]
>>
>>> [code]
>>> section .text
>>
>>> global _start
>>
>>> _start:
>>
>>>    call pisz
>>
>> jmp short .end
>> ;program sie wykladal bo to ponizej wykonywal jako kod>    db "qwerty",0; wypisz zmienna
>>
>> .end:
>>>    mov eax,1
>>>    int 80h
>>
>>> pisz:
>>>    push ebp;ebp na stos
>>>    mov ebp,esp
>>>    pushfd
>>>    push esi
>>>    push eax
>>
>>>    mov esi,[ebp+4]
>>
>> add esi,2       ;w esi adres napisu. jmp short=+ajty
>>
>>
>>
>>
>>
>>
>>
>>>    mov [tmp],esi
>>
>>>    mov eax, 4
>>>    mov ebx,1
>>>    mov ecx, [tmp]
>>>    mov edx,6
>>>    int 80h
>>
>>>    pop eax
>>>    pop esi
>>>    popfd
>>>    pop ebp
>>
>>>    ret
>>
>>> section .data
>>
>>   tmp dd 0
>>
>> --
>> Pozdrawiam - Grzechu
>> Linux x86_64
>
> dzieki zapodpowiedz podzialalo - tylko nie zabardzo rozumiem czemu
> tego skoku nie ma w tym przykladzie :http://www.google.com/url?
> sa=D&q=http://rudy.mif.pg.gda.pl/~bogdro/linux/linux08.html

 Bo nie taki by� zamiar. To procedura "pisz" ma sama "przeskoczy�"
sobie o tyle bajt�w w prz�d w kodzie programu, ile wynosi�a d�ugo��
napisu (i tak te� robi w oryginale biblioteki). Tak wi�c kod

	call pisz
	db "qwerty",0; wypisz zmienna

jest, przy tych za�o�eniach, jak najbardziej prawid�owy. Jedynym
minusem mo�e by� to, �e czasem pr�ba nawet odczytania danych z sekcji
kodu mo�e spowodowa� zamkni�cie programu.
 Podane przez Ciebie rejestry k�adzie si� na stos, gdy� s� one
modyfikowane wewn�trz procedury.

--
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org   www.TorProject.org   Soft (EN): miniurl.pl/bogdro-soft

Message-ID: <it233s$dc3$1@inews.gazeta.pl>
Path: polish.pugleaf.net!archive.newsdeef.eu!mbox2nntp-pl.comp.lang.asm.mbox.zip!g2news2.google.com!news2.google.com!goblin2!goblin1!goblin.stu.neva.ru!newsfeed.pionier.net.pl!news.gazeta.pl!not-for-mail
References: <9b70ec81-f1ce-4857-b679-c0d1498ae9ee@v8g2000yqb.googlegroups.com> <it0bs2$h1j$1@inews.gazeta.pl> <f34d6a50-7fe4-4e64-9d97-f3fad727ccd0@g12g2000yqd.googlegroups.com>