🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#790
Author: Johnny
Date: Fri, 03 Nov 2006 10:00
21 lines
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
#792
Author: Bogdan (bogdro)
Date: Fri, 03 Nov 2006 10:22
28 lines
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
#791
Author: Matuzalem
Date: Fri, 03 Nov 2006 16:15
43 lines
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
#793
Author: Wiktor S.
Date: Tue, 07 Nov 2006 01:31
10 lines
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