Autor: Gregorio Kus (Grego_at_RMnet.it)
Data: Sat 08 Mar 1997 - 02:02:56 MET
On Fri, 7 Mar 1997 21:17:15 +0100 (CET), Radoslaw Poplawski wrote:
>/>Radoslaw Poplawski <radekp_at_usa.net> wrote:
>/>: />> Program typu:
>/>: />> LDA #$77
>/>: />> STA adres+1
>/>: />> adres JMP $E4xx (oryg. xx=00)
>/>: />>
>/>Niekoniecznie :-). Bo ten program generalnie to wcale nie jest taki
>/>prawidlowy - jesli w momencie wykonywania rozkazu STA przyjdzie przerwanie,
>/>to jego obsluga moze akurat wywolywac ta procedure, tylko pod adres+1
>/>wpisac cos innego. Po powrocie z przerwania wykona sie skok pod $E4yy,
>/>gdzie yy niekoniecznie musi byc 77.
>
>A czemu? W systemie nie ma cache'u, a wiec gdy przyjdzie czas
>wykonania rozkazu JMP w komorkach adres+1 i adres+2 _zawsze_ bedzie
>juz fizycznie wpisane $77 i $E4. Moment przyjscia przerwania (jak i
>cale przerwanie) nie ma zadnego znaczenia.
ejze Radku!
jesli przerwanie przyjdzie w momencie wykonywania instrukcji STA
to po jej wykonaniu owszem w yy bedzie 77, ale w tym momencie
wskakuje obsluga przerwania ktora moze naprzyklad zmodyfikowac yy
kiedy ISR sie skonczy, nastepna~ instrukcja~ do wykonania bedzie
JMP E4yy z tym ZMIENIONYM yy
aczkolwiek - dyskusja zaczyna byc cokolwiek akademicka.
dfzis juz samomodyfikujacy sie kod mozna spotkac praktycznie
wylacznie w wirusach. A to z nastepujacych powodow:
1. Modyfikacja wlasnego kodu przez program jest "wykleta" przez
informatyke, ze wzgledu na klopoty z modyfikacja/uruchomieniem
takiego programu. Osiagniete korzysci rzadko sa warte dodatkowego
wysilku, nie mowiac o tym ze tego typu sztuczki nie maja zadnej
gwarancji dzialania na nowszym procesorze czy przy zmianie
architektury (cache etc)
2. W zwiazku ze wzrostem mocy procesorow znacznie zmniejszyl sie
obszar zastosowania takich udziwnien,
3. Wszystkie prawdziwe systemy operacyjne traktuja obszar danych
calkowicie rozdzielnie od obszaru rozkazow i z reguly nie
pozwalaja nawet CZYTAC z obszaru rozkazow a co dopiero ZAPISYWAC.
Grego
-- /----------------------------------------------------------------- Gregorio Kus Grego_at_RMnet.it Grego_at_cyberspace.org ROMA, Italy 2ndAdmin_at_iName.com Grego_at_FreeNet.hut.fi Anonymous Mail Service - http://free.rmnet.it/~grego/AnonMail.html
To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 15:57:59 MET DST