Article View: pl.comp.lang.asm
Article #267Re: pobieranie danych z stosu
From: Bogdan (bogdro)
Date: Sun, 21 May 2006 08:22
Date: Sun, 21 May 2006 08:22
59 lines
2662 bytes
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-mailReferences:
<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