🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: naruszenie ochrony pamieci - dlaczego

#2478
From: Bogdan (bogdro)
Date: Sun, 12 Jun 2011 10:06
86 lines
3206 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==2bajty
>>
>>
>>
>>
>>
>>
>>
>>>    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
Technical Details
Message-ID: <it233s$dc3$1@inews.gazeta.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.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>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: "Bogdan (bogdro)" <bogdan@poczta.gazeta.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: naruszenie ochrony pamieci - dlaczego
Date: Sun, 12 Jun 2011 12:06:48 +0200
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 86
Message-ID: <it233s$dc3$1@inews.gazeta.pl>
References: <9b70ec81-f1ce-4857-b679-c0d1498ae9ee@v8g2000yqb.googlegroups.com> <it0bs2$h1j$1@inews.gazeta.pl> <f34d6a50-7fe4-4e64-9d97-f3fad727ccd0@g12g2000yqd.googlegroups.com>
NNTP-Posting-Host: rudy.mif.pg.gda.pl
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1307873212 13699 153.19.42.16 (12 Jun 2011 10:06:52 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Sun, 12 Jun 2011 10:06:52 +0000 (UTC)
X-User: bog.d
In-Reply-To: <f34d6a50-7fe4-4e64-9d97-f3fad727ccd0@g12g2000yqd.googlegroups.com>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit