Article View: pl.comp.programming
Article #205619Re: Jak działa debugger? ramki stosu
From: firr kenobi
Date: Wed, 01 May 2013 20:32
Date: Wed, 01 May 2013 20:32
39 lines
2734 bytes
2734 bytes
W dniu środa, 1 maja 2013 21:48:39 UTC+2 użytkownik Borneq napisał: > Mam opis pod Windows (a jak będzie pod Linuksem?) > > http://www.codeproject.com/Articles/189711/Write-your-own-Debugger-to-handle-Breakpoints > > http://www.codeproject.com/Articles/43682/Writing-a-basic-Windows-debugger > > > > Tam jest nietypowo, bo pułapkę ustawia proces śledzony, ale doszedłem że > > można użyć WriteProcessMemory. Nawet gdy nie ustawię pułapki, debugger > > zatrzymuje się na samym początku wykonywania programu w > > ntdll.DbgBreakPoint (czy zawsze tak jest)? > > Aby otrzymac adres początku programu muszę znać ramki stosu, jak można > > wylistować je? dobre pytanie, nie wiem dokladnie, ale prawdopodobnie (w 32bitowej wersji) jest tak ze w ebp masz wskaznik na poczatek tramki stosu danej funkcji, pod ktorym to adresem jest zapisany poprzedni ebp w ten sposob przez wyluskiwanie mozna sie cofnac, jesli main by nadal ebp wartosc 0 to mozna sprawdzic kiedy koniec cofania (ale nie wiem czy tak jest) Przed kazdym z tych adresow na stosie sa adresy powrotów dla ret - nie sa top adresy poczatku funkcji w sekcji .code tylko adresy tuz za call (o ile dobrze to rozumiem) ale cofajac sie z nich 4 bajty dostaniesz prawdopodobnie adresy poczatkow procedur kolejnych poziomów - jest to ew przyblizony obraz ale tak to mw chyba jest - bo tak sobie to wyobrazam, czyli nie jest to takie skomplikowane
Technical Details
Message-ID:
<44c0cefb-1b95-4137-afc7-d9deb0cd528e@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.glorb.com!s14no1757317qam.0!news-out.google.com!ef9ni40844qab.0!nntp.google.com!s14no1757313qam.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<klrrio$821$1@node2.news.atman.pl>Show Full Headers
Complete Article Headers
X-Received: by 10.224.130.195 with SMTP id u3mr6964136qas.1.1367440322638; Wed, 01 May 2013 13:32:02 -0700 (PDT) X-Received: by 10.49.37.39 with SMTP id v7mr374018qej.27.1367440322612; Wed, 01 May 2013 13:32:02 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.glorb.com!s14no1757317qam.0!news-out.google.com!ef9ni40844qab.0!nntp.google.com!s14no1757313qam.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.programming Date: Wed, 1 May 2013 13:32:02 -0700 (PDT) In-Reply-To: <klrrio$821$1@node2.news.atman.pl> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=31.61.131.189; posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN NNTP-Posting-Host: 31.61.131.189 References: <klrrio$821$1@node2.news.atman.pl> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <44c0cefb-1b95-4137-afc7-d9deb0cd528e@googlegroups.com> Subject: Re: Jak działa debugger? ramki stosu From: firr kenobi <profesor.fir@gmail.com> Injection-Date: Wed, 01 May 2013 20:32:02 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit