Thread View: pl.comp.lang.asm
4 messages
4 total messages
Started by Johnny
Fri, 03 Nov 2006 10:00
ecx raz zerowe a raz nie
Author: Johnny
Date: Fri, 03 Nov 2006 10:00
Date: Fri, 03 Nov 2006 10:00
21 lines
1347 bytes
1347 bytes
Mam coś takiego title 6_12 .model tiny .stack 100h .386 .code org 100h main proc (...) no i zauważyłem, że uruchamiając program pod debuggerem w ecx "na starcie" jest 0 (zero), natomiast uruchamiając program "normalnie" w ecx siedzi 255. Jest jakaś teoria do tego? -- Pozdrawiam Johnny "Zauważyłem że ci wszyscy, którzy opowiadają się za aborcją, zdążyli się urodzić". R. Reagan
Re: ecx raz zerowe a raz nie
Author: Bogdan (bogdro)
Date: Fri, 03 Nov 2006 10:22
Date: Fri, 03 Nov 2006 10:22
28 lines
1941 bytes
1941 bytes
Johnny napisał(a): > Mam coś takiego > > title 6_12 > ..model tiny > ..stack 100h > ..386 > ..code > org 100h > main proc > (...) > > no i zauważyłem, że uruchamiając program pod debuggerem w ecx "na > starcie" jest 0 (zero), natomiast uruchamiając program "normalnie" w ecx > siedzi 255. Jest jakaś teoria do tego? Też to kiedyś zauważyłem. Według mnie po prostu system uruchamia program inaczej niż debugger. W szczególności, debugger najpierw ładuje program do pamięci, a potem go uruchamia (a system to nie wiem). W międzyczasie może robić różne bajery. Takie sytuacje uczą tylko, by nie używać niczego (co nie jest ustawiane automatycznie, jak CS:IP, SS:SP) przed zainicjowaniem. -- Pozdrawiam, Bogdan (Linux i FreeDOS) Kurs assemblera x86 (DOS i Linuks): http://rudy.mif.pg.gda.pl/~bogdro Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32 Rozmawiaj bezpiecznie: www.JabberPL.org Surfuj anonimowo: tor.eff.org
Re: ecx raz zerowe a raz nie
Author: Matuzalem
Date: Fri, 03 Nov 2006 16:15
Date: Fri, 03 Nov 2006 16:15
43 lines
2547 bytes
2547 bytes
Johnny napisał(a): > Mam coś takiego > > title 6_12 > .model tiny > .stack 100h > .386 > .code > org 100h > main proc > (...) > > no i zauważyłem, że uruchamiając program pod debuggerem w ecx "na > starcie" jest 0 (zero), natomiast uruchamiając program "normalnie" w ecx > siedzi 255. Jest jakaś teoria do tego? > > -- > Pozdrawiam > Johnny > > "Zauważyłem że ci wszyscy, którzy opowiadają się za aborcją, zdążyli się > urodzić". R. Reagan Witam dbg zanim załaduje program do pamięci, wszystko skrzętnie czyści - w szczególności rejestry - a ponieważ nie jest to program uruchamiający, może śmiało w ten sposób zrobić - w końcu analizujemy program, a nie jego zewnętrzne środowisko. Gdy system ładuje program, z powodów "pewnego" bezpieczeństwa zeruje tylko to co musi być z zerowane (bo np. nowsza wersja systemu mogła by coś nadpisać w programie ze starszej wersji, więc nie ryzykuje wstecznej kompatybilności), całą resztę np. pamięć zostawia, czy rejestry. Np. MS deklaruje, że po powrocie z wszystkich funkcji API niezmienione pozostaną wartości rejestrów EBX, EBP, ESP, ESI i EDI. Wartość zwrotna (return) funkcji przekazywana jest przez EAX. Nie ma natomiast żadnej gwarancji, że zachowane będą wartości pozostałych rejestrów. Tu sytuacja wygląda podobnie, tyle, że przy "startowaniu" programu. Pozdrawiam
Re: ecx raz zerowe a raz nie
Author: Wiktor S.
Date: Tue, 07 Nov 2006 01:31
Date: Tue, 07 Nov 2006 01:31
10 lines
1178 bytes
1178 bytes
> no i zauważyłem, że uruchamiając program pod debuggerem w ecx "na > starcie" jest 0 (zero), natomiast uruchamiając program "normalnie" w > ecx siedzi 255. Jest jakaś teoria do tego? wartości rejestrów na starcie programu należy uważać za nieokreślone. I nagle wszystko się zgadza.. :-) -- Azarien
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads