🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Wywołania funkcji...

#602
From: Matuzalem
Date: Wed, 06 Sep 2006 10:34
62 lines
3191 bytes
Franek B napisał(a):
> > W jaki sposób wykryć, czy program wywołał jakąś funkcję ...
>
> Podam przykład w C (Borland C++ 5.5.1). Przetłumacz to sobie na ASM.
>
> 1) Utwórz plik definicyjny zawierający funkcje WinAPI,
>    które chcesz podglądać, np:
>
>    ; MYIMPORT.DEF
>    ;
>    LIBRARY kernel32.dll
>    EXPORTS
>       MyExitProcess      = ExitProcess
>       MyTerminateProcess = TerminateProcess
>
> 2) Utwórz blbliotekę tak przedefiniowanych funkcji:
>
>    implib.exe myimport.lib myimport.def
>
> Biblioteka MYIMPORT.LIB zawiera moduły My... udostępniające
> publiczne funkcje o takich samych nazwach My...
> Moduły zawierają rekordy COMMENT (0x88) Class IMPDEF (0xa0).
> Można je utworzyć też innymi metodami, ale wydaje mi się,
> że przedstawiony sposób jest najprostszy.
> Dołącz bibliotekę jako pierwszą na liście konsolidacji.
>
> 3) Podglądaj do woli, np:
>
> #include <windows.h>
>
> // ...
> ExitProcess(0);
> // ...
>
> WINBASEAPI DECLSPEC_NORETURN VOID WINAPI ExitProcess(IN UINT uExitCode)
> {
>    extern WINBASEAPI DECLSPEC_NORETURN VOID WINAPI
>       MyExitProcess(IN UINT uExitCode);
>
>    MessageBox(NULL, "A kuku !", "", MB_OK);
>    MyExitProcess(uExitCode);
> }
>
> BTW  Próba bezpośredniego użycia pliku MYIMPORT.DEF jako parametru
>      ilink32 okazała się nieskuteczna (może ktoś wie dlaczego ?)
>
> Pozdrawiam
> --
>    Franciszek Bałaban

Tak też można, tylko to ma jedną wade... programów już
skompilowanych (do których nie posiada się źrudeł, ta metoda nie
zadziała)
Tak wiem, napisałem: "w naszym programie", czyli, że posiadam
źrudła, no więc ok.
Jest jeszcze jedna wada (właściwie to dwie): program musiałby
jawnie/niejawnie importować bibliotekę - druga - funkcje pozmieniały
by nazwy np. tak jak podałeś na My... (choć to znowu nie taka wada,
ale...)

Pozdrawiam
Technical Details
Message-ID: <1157538872.050975.16040@m79g2000cwm.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!news.germany.com!postnews.google.com!m79g2000cwm.googlegroups.com!not-for-mail
References: <1157021263.450592.112950@m79g2000cwm.googlegroups.com> <edm57b$efb$1@atlantis.news.tpi.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!news.germany.com!postnews.google.com!m79g2000cwm.googlegroups.com!not-for-mail
From: "Matuzalem" <codemaster_@op.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: Wywołania funkcji...
Date: 6 Sep 2006 03:34:32 -0700
Organization: http://groups.google.com
Lines: 64
Message-ID: <1157538872.050975.16040@m79g2000cwm.googlegroups.com>
References: <1157021263.450592.112950@m79g2000cwm.googlegroups.com>   <edm57b$efb$1@atlantis.news.tpi.pl>
NNTP-Posting-Host: 212.244.115.33
Mime-Version: 1.0
X-Trace: posting.google.com 1157538877 6649 127.0.0.1 (6 Sep 2006 10:34:37 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Wed, 6 Sep 2006 10:34:37 +0000 (UTC)
In-Reply-To: <edm57b$efb$1@atlantis.news.tpi.pl>
User-Agent: G2/0.2
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6,gzip(gfe),gzip(gfe)
Complaints-To: groups-abuse@google.com
Injection-Info: m79g2000cwm.googlegroups.com; posting-host=212.244.115.33;   posting-account=HFFdEQ0AAACI08bdAnMScVqwVEj2ucOg
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit