🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: pobieranie danych z stosu

#267
From: Bogdan (bogdro)
Date: Sun, 21 May 2006 08:22
59 lines
2662 bytes
lemkat napisał(a):
> witam, mam funkcje ktora pobiera dane ze stosu, niestety jak aplikacja
> ja wywyoluje to sie wyklada, co jest nie tak ????? wydaje mi sie ze cos
> z wielkoscia danych
> 
> void __declspec(naked) custom_send(void)
> {
> SOCKET  s;
> char*   buf;
> int     len;
> int     flags;
> 
> 
> _asm
>     {
>     push  ebp
>     mov   ebp, esp
>     sub   esp, 0x16
> 
>     mov   eax, [ebp+8]
>     mov   s, eax
>     mov   eax, [ebp+8+4]
>     mov   buf, eax
>     mov   eax, [ebp+8+8]
>     mov   len, eax
>     mov   eax, [ebp+8+12]
>     mov   flags, eax
>     }

 Jeśli kompilator układa na stosie zmienne tak, jak są powyżej
zadeklarowane (nie ma na to gwarancji), to kopiujesz nie te co trzeba.
Najgłębiej na stosie, czyli [ebp+8], są "int flags", najpłyciej -
"SOCKET s", w [ebp+8+12]. Jeśli kompilator dodatkowo wyrównuje stos,
to już wszystko jest nieprzewidywalne.
 Swoją drogą, po co takie kopiowanie?

> char*       text="MyInject: wykryto custom_send";
> ATOM Atom = ::GlobalAddAtom( text );
> UINT uiMyMessage = ::RegisterWindowMessage("InetMessage");
> ::SendMessage( HWND_BROADCAST  , uiMyMessage , (WPARAM)Atom , 0 );
> 
> _asm
>     {
>     mov eax,len
>     mov     esp, ebp
>     pop     ebp
>     ret      16
>     }
> }

 Raczej nie z tym "ret 16". Daj "ret". Nie wiem dokładnie co robi
"naked", ale w CDECL argumenty ze stosu zdejmuje wywołujący, nie
wywoływany.

-- 
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
Prawdziwy, bezpieczny komunikator:                   www.JabberPL.org
Technical Details
Message-ID: <e4p81g$o5m$1@atlantis.news.tpi.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
References: <e4nh3a$lss$1@atlantis.news.tpi.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
From: "Bogdan (bogdro)" <bogdan@bogdan.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: pobieranie danych z stosu
Date: Sun, 21 May 2006 10:22:45 +0200
Organization: tp.internet - http://www.tpi.pl/
Lines: 59
Message-ID: <e4p81g$o5m$1@atlantis.news.tpi.pl>
References: <e4nh3a$lss$1@atlantis.news.tpi.pl>
NNTP-Posting-Host: actu177.neoplus.adsl.tpnet.pl
Mime-Version: 1.0
X-Trace: atlantis.news.tpi.pl 1148199792 24758 83.11.74.177 (21 May 2006 08:23:12 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Sun, 21 May 2006 08:23:12 +0000 (UTC)
User-Agent: Thunderbird 1.5.0.2 (X11/20060420)
In-Reply-To: <e4nh3a$lss$1@atlantis.news.tpi.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit