<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Grzonu Blog</title>
	<atom:link href="http://grzonu.com.pl/feed/" rel="self" type="application/rss+xml" />
	<link>http://grzonu.com.pl</link>
	<description>C++ Programmer Blog</description>
	<lastBuildDate>Tue, 17 Aug 2010 19:31:28 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>OllyAdvanced Bypass</title>
		<link>http://grzonu.com.pl/2010/08/17/ollyadvanced-bypass/</link>
		<comments>http://grzonu.com.pl/2010/08/17/ollyadvanced-bypass/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 19:31:28 +0000</pubDate>
		<dc:creator>Grzonu</dc:creator>
				<category><![CDATA[Inne]]></category>
		<category><![CDATA[assembler]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[debugger]]></category>
		<category><![CDATA[int 2e]]></category>
		<category><![CDATA[OllyAdvanced]]></category>
		<category><![CDATA[syscall]]></category>
		<category><![CDATA[systenter]]></category>

		<guid isPermaLink="false">http://grzonu.com.pl/?p=513</guid>
		<description><![CDATA[Ostatnio zajmowałem się w dalszym ciągu metodom wykrywania debuggera i odłączenia go. Przykładowo stosowalem metode o ktorej pisałem 2 posty temu. Kozystala ona z NtQuerySystemInformation z parametrem SystemHandleInformation. Lecz jesli ktos uzywal Ollyego z pluginem OllyAdvanced metoda ta nie sprawdzała się. Sprobowałem wywolac ta funkcje poprzed syscall. Lecz nadal OllyOdvanced modyfikował wyniki. Podobnie rzecz się [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio zajmowałem się w dalszym ciągu metodom wykrywania debuggera i odłączenia go.<br />
Przykładowo stosowalem metode o ktorej pisałem 2 posty temu. Kozystala ona z NtQuerySystemInformation z parametrem SystemHandleInformation. Lecz jesli ktos uzywal Ollyego z pluginem OllyAdvanced metoda ta nie sprawdzała się. Sprobowałem wywolac ta funkcje poprzed syscall. Lecz nadal OllyOdvanced modyfikował wyniki.<br />
Podobnie rzecz się miała w przypadku funkcji NtOpenProcess tak ze nie moglem otworzyc procesu debuggera aby pobrac uchwyty, ani znalesc PID procesu rodzica gdyz OllyAdvanced tak zmienial wyniki ze PID procesu rodzica == PID mojego procesu. Jako ze kozystalem z własnej procedury wywolujacej syscall OllyAdvanced musiał albo zakładać hooki w kernelu ale tą metode narazie odrzuciłem wiec jedyna opcja mogl byc sysexit.<br />
Ale jak wiadomo w systemie Windows mamy 2 mechanizmy wywolywania syscalla(sysenter i INT 2E)<br />
sysenter po powrocie do user mode wraca pod KiFastSystemCallRet a INT 2E wraca za instrukcje.<br />
Wystarczy wywolywac te funkcje nie poprzez sysenter a wlasnie przez INT 2E aby OllyAdvanced nie modyfikował wynikow i co za tym idzie aby dało się łatwo wykryć debugger.</p>
<p><map name='google_ad_map_513_c53810e424aa3280'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/513?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_513_c53810e424aa3280' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=513&amp;url=http%3A%2F%2Fgrzonu.com.pl%2F2010%2F08%2F17%2Follyadvanced-bypass%2F' title="OllyAdvanced Bypass" alt=" OllyAdvanced Bypass" /></p>]]></content:encoded>
			<wfw:commentRss>http://grzonu.com.pl/2010/08/17/ollyadvanced-bypass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wrzuta downloader</title>
		<link>http://grzonu.com.pl/2010/07/23/wrzuta-downloader/</link>
		<comments>http://grzonu.com.pl/2010/07/23/wrzuta-downloader/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 14:45:46 +0000</pubDate>
		<dc:creator>Grzonu</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Newsy]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[muzyka]]></category>
		<category><![CDATA[pobieranie]]></category>
		<category><![CDATA[wrzuta]]></category>

		<guid isPermaLink="false">http://grzonu.com.pl/?p=508</guid>
		<description><![CDATA[Bardzo lubie sciagnac zasłyszana piosenke do siebie jako mp3 (oczywiscie na 24h ) Czesto uzywam do tego z wrzuty i serwisow ktore umozliwiaja pobranie utworu z tego serwisu. Niestety ostatnio wrzuta zmienila sposob pobierania plikow upodobnila go do sposobu megavideo ktory dosc mocno utrudnia pobieranie(do pobrania trzeba otworzyc plik XML a w nim jest link [...]]]></description>
			<content:encoded><![CDATA[<p>Bardzo lubie sciagnac zasłyszana piosenke do siebie jako mp3 (oczywiscie na 24h <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' title="Wrzuta downloader" />  )<br />
Czesto uzywam do tego z wrzuty i serwisow ktore umozliwiaja pobranie utworu z tego serwisu.<br />
Niestety ostatnio wrzuta zmienila sposob pobierania plikow upodobnila go do sposobu megavideo ktory dosc mocno utrudnia pobieranie(do pobrania trzeba otworzyc plik XML a w nim jest link ale skozystac z niego mozna tylko z tego IP z ktorego zostal pobrany XML) </p>
<p>Czesc serwisow ktore umozliwiaja pobierania przestała dzialac a czesc wprowadzila skrypt Java ktory pobierze nam utwor. Jako ze Javy nie mam zainstalowanej i nie zamierzam instalowac tak wiec napisalem sobie programik w C++ ktory pobierze utwor z wrzuty.<br />
Programik pisalem dla siebie no ale postanowilem udostepnic go szerszemu gronu. Wiec jakby komuś się przydał to zapraszam do sciagania <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' title="Wrzuta downloader" /> </p>
<p><a href="http://grzonu.com.pl/download/Wrzuta.rar">DOWNLOAD</a></p>
<p><map name='google_ad_map_508_c53810e424aa3280'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/508?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_508_c53810e424aa3280' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=508&amp;url=http%3A%2F%2Fgrzonu.com.pl%2F2010%2F07%2F23%2Fwrzuta-downloader%2F' title="Wrzuta downloader" alt=" Wrzuta downloader" /></p>]]></content:encoded>
			<wfw:commentRss>http://grzonu.com.pl/2010/07/23/wrzuta-downloader/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Kolejna metoda detekcji debuggera</title>
		<link>http://grzonu.com.pl/2010/07/06/kolejna-metoda-detekcji-debuggera/</link>
		<comments>http://grzonu.com.pl/2010/07/06/kolejna-metoda-detekcji-debuggera/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 19:59:47 +0000</pubDate>
		<dc:creator>Grzonu</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[debugger]]></category>
		<category><![CDATA[NtQuerySystemInformation]]></category>
		<category><![CDATA[SYSTEM_HANDLE_INFORMATION]]></category>

		<guid isPermaLink="false">http://grzonu.com.pl/?p=503</guid>
		<description><![CDATA[Ostatnimi czasy wrocilem do badania metod wykrywania debuggerow i wymyslilem metode oparta o funkcje NtQuerySystemInformation mozliwe ze ktos wpadł juz na to wczesniej lecz nie moglem nic znalesc na ten temat. Metoda jest bardzo prosta za pomoca funkcji NtQuerySystemInformation z parametrem SystemHandleInformation pobieramy uchwyty otwarte przez wszystkie aplikacje. Poszukujemy uchwytow do procesow ktore sa uchwytami [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnimi czasy wrocilem do badania metod wykrywania debuggerow i wymyslilem metode oparta o funkcje NtQuerySystemInformation mozliwe ze ktos wpadł juz na to wczesniej lecz nie moglem nic znalesc na ten temat.</p>
<p>Metoda jest bardzo prosta za pomoca funkcji NtQuerySystemInformation z parametrem SystemHandleInformation<br />
pobieramy uchwyty otwarte przez wszystkie aplikacje. Poszukujemy uchwytow do procesow ktore sa uchwytami do naszego procesu i sprawdzamy czy wsrod uchwytow tego procesu nie znajduje sie uchwyt o typie 0xb czyli DebugObject jesli znajduje sie to moze byc znak ze jestesmy debuggowani(choc nie ma 100% pewnosci)</p>
<p>Czas na troche kodu <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' title="Kolejna metoda detekcji debuggera" /> </p>
<p>potrzebne nam zmienne i funkcja:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;">NTSTATUS                        ntStatus<span style="color: #008080;">;</span>
DWORD                           dwParentPID <span style="color: #000080;">=</span>   <span style="color: #208080;">0xffffffff</span><span style="color: #008080;">;</span>
HANDLE							h_proc,h<span style="color: #008080;">;</span>
ULONG                           need<span style="color: #008080;">;</span>	
BOOL							isDebug<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
&nbsp;
&nbsp;
HMODULE ntdll <span style="color: #000080;">=</span> GetModuleHandle<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;ntdll&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
NTQSI NtQuerySystemInformation <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>NTQSI<span style="color: #008000;">&#41;</span>GetProcAddress<span style="color: #008000;">&#40;</span>ntdll, <span style="color: #FF0000;">&quot;NtQuerySystemInformation&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></pre></td></tr></table></div>

<p>Wywolajmy teraz funkcje NtQuerySystemInformation</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;">ULONG size <span style="color: #000080;">=</span> <span style="color: #208080;">0x1000</span><span style="color: #008080;">;</span>
SYSTEM_HANDLE_INFORMATION <span style="color: #000040;">*</span>handles <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>SYSTEM_HANDLE_INFORMATION<span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span><span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span>size<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
ntStatus <span style="color: #000080;">=</span> NtQuerySystemInformation<span style="color: #008000;">&#40;</span>SystemHandleInformation, handles, size, <span style="color: #000040;">&amp;</span>need<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>ntStatus<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #666666;">//jesli za maly bufor alokujemy wiekszy</span>
					   <span style="color: #008000;">&#123;</span>
                        <span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>handles<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                        size <span style="color: #000080;">=</span>need<span style="color: #008080;">;</span>
                        handles <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>SYSTEM_HANDLE_INFORMATION<span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span><span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span>size<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		NtQuerySystemInformation<span style="color: #008000;">&#40;</span>SystemHandleInformation, handles, size, <span style="color: #000040;">&amp;</span>need<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
						<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>w tym momecie w w strukturze handles mamy wszystkie uchwyty dostepne w systemie.<br />
Musimy przeszukac czy wsrod nich nie ma uchwytow o typie 0&#215;7 czyli proces.<br />
Jesli taki znajdziemy to musimy otworzyc ten proces z prawami PROCESS_DUP_HANDLE<br />
i zduplikowac ten uchwyt ale w naszym procesie. Nastepnie sprawdzic czy jest to uchwyt do naszego procesu a jesli tak to sprawdzic czy wsrod uchwytow tego procesu nie ma uchwytow typu DebugObject</p>
<p>A teraz praktyka:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i<span style="color: #000080;">&lt;</span>handles<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>HandleCount<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>handles<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Handles<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">ObjectType</span><span style="color: #000080;">==</span><span style="color: #0000dd;">7</span><span style="color: #008000;">&#41;</span><span style="color: #666666;">//Process</span>
	<span style="color: #008000;">&#123;</span>
		h<span style="color: #000080;">=</span>OpenProcess<span style="color: #008000;">&#40;</span>PROCESS_DUP_HANDLE, FALSE,handles<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Handles<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">OwnerPid</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>h<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>DuplicateHandle<span style="color: #008000;">&#40;</span>h, <span style="color: #008000;">&#40;</span>HANDLE<span style="color: #008000;">&#41;</span>handles<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Handles<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">HandleValue</span>, GetCurrentProcess<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>,<span style="color: #000040;">&amp;</span>h_proc, <span style="color: #0000dd;">0</span>, FALSE, DUPLICATE_SAME_ACCESS<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>GetProcessId<span style="color: #008000;">&#40;</span>h_proc<span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span>GetCurrentProcessId<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
				<span style="color: #008000;">&#123;</span>
					j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
					<span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">&lt;</span>handles<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>HandleCount<span style="color: #008000;">&#41;</span>
					<span style="color: #008000;">&#123;</span>
						<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>handles<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Handles<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">OwnerPid</span><span style="color: #000080;">==</span>handles<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Handles<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">OwnerPid</span> <span style="color: #000040;">&amp;&amp;</span> handles<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Handles<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">ObjectType</span><span style="color: #000080;">==</span><span style="color: #208080;">0xb</span><span style="color: #008000;">&#41;</span>
						<span style="color: #008000;">&#123;</span>
						isDebug<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
						<span style="color: #008000;">&#125;</span>
					j<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
					<span style="color: #008000;">&#125;</span>
				<span style="color: #008000;">&#125;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>Na koniec printfujemy wyniki przeszukiwania i zwalniamy bufor</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>isDebug<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Debugger wykryty<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">else</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Nie wykryto debuggera<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>handles<span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>handles<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></pre></td></tr></table></div>

<p>Caly kod programu mozna sciagnac <a href="http://grzonu.com.pl/download/DbgTest.cpp">TU</a></p>
<p>PS.<br />
Czysty olly jest ta metoda bez problemu wykrywany ale np. Olly z pluginem StrongOD juz nie.<br />
Plugin ten m.in powoduje ze lista uchwytow dla tego procesu jest pusta. Jest to tez dosc charakterystyczne bo kazdy program ma jakies uchwyty. Dodatkowo mozemy sprawdzac nasz proces rodzica jakie uchwyty posiada(albo nie posiada wcale)</p>
<p><map name='google_ad_map_503_c53810e424aa3280'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/503?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_503_c53810e424aa3280' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=503&amp;url=http%3A%2F%2Fgrzonu.com.pl%2F2010%2F07%2F06%2Fkolejna-metoda-detekcji-debuggera%2F' title="Kolejna metoda detekcji debuggera" alt=" Kolejna metoda detekcji debuggera" /></p>]]></content:encoded>
			<wfw:commentRss>http://grzonu.com.pl/2010/07/06/kolejna-metoda-detekcji-debuggera/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wykrywanie IAT hookingu</title>
		<link>http://grzonu.com.pl/2010/06/25/wykrywanie-iat-hookingu/</link>
		<comments>http://grzonu.com.pl/2010/06/25/wykrywanie-iat-hookingu/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 19:45:38 +0000</pubDate>
		<dc:creator>Grzonu</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[hook]]></category>
		<category><![CDATA[IAT]]></category>
		<category><![CDATA[wykrywanie]]></category>

		<guid isPermaLink="false">http://grzonu.com.pl/?p=500</guid>
		<description><![CDATA[Jak obiecalem tak zrobilem. Dzis chciałbym omowic IAT hooking i sposoby ich wykrywania. Za jakis czas postaram sie napisac cos o hookach EAT i modyfikacjach kodu. No wiec zaczynamy. Najpierw kilka słow czym jest sam IAT hooking &#8211; jest to technika hookowania funkcji poprzez zamiane adresu funkcji umieszczonego w IAT na adres funkcji umieszczonej w [...]]]></description>
			<content:encoded><![CDATA[<p>Jak obiecalem tak zrobilem. Dzis chciałbym omowic IAT hooking i sposoby ich wykrywania.<br />
Za jakis czas postaram sie napisac cos o hookach EAT i modyfikacjach kodu.</p>
<p>No wiec zaczynamy.<br />
Najpierw kilka słow czym jest sam IAT hooking  &#8211; jest to technika hookowania funkcji poprzez zamiane adresu funkcji umieszczonego w IAT na adres<br />
funkcji umieszczonej w innej bibliotece dll albo poprostu gdzies w pamieci. O samym zakładaniu hookow pisal nie bede sa do tego dziesiatki gotowych<br />
bibliotek, setki przykładowych kodów wiec mysle ze ci ktorzy jeszcze tego nie opanowali powinni jak najszybciej uzupełnic braki kozystajac z google.</p>
<p>Teraz cos na temat wykrywania tych hookow &#8211; Opisze w punktach co musimy zrobic:<br />
1. Znajdujemy plik exe procesu w ktorym chcemy hookow poszukac.<br />
2. Znajdujemy w tym pliku tablice IAT i sprawdzamy wszystkie funkcje znajdujace sie w IAT<br />
3. Sprawdzamy w jakim module wg. IAT powinna znajdowac sie dana funkcja.<br />
4. Sprawdzamy ImageBase i Size tego modułu i sprawdzamy czy adres w IAT miesci sie w przedziale <ImageBase ; ImageBase+Size><br />
Jesli tak to wszystko OK jesli nie to sprawdzamy na jaki moduł wskazuje dany adres</p>
<p>To tyle teori.<br />
Czas na praktyke.</p>
<p>Potrzebne naglowki:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;windows.h&gt;</span>
<span style="color: #339900;">#include &lt;stdio.h&gt;</span>
<span style="color: #339900;">#include &lt;string&gt;</span>
<span style="color: #339900;">#include &lt;Tlhelp32.h&gt;</span>
<span style="color: #339900;">#include &lt;vector&gt;</span>
<span style="color: #339900;">#include &lt;Psapi.h&gt;</span>
<span style="color: #339900;">#include &lt;fstream&gt;</span>
<span style="color: #339900;">#include &quot;PE_class.h&quot; //moja klasa do obslugi plikow PE(udostepnie razem z reszta kodu)</span>
<span style="color: #339900;">#pragma comment (lib,&quot;psapi.lib&quot;);</span></pre></td></tr></table></div>

<p>Zmienne globalne:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;">HANDLE hProc<span style="color: #008080;">;</span><span style="color: #666666;">//uchwyt procesu</span>
DWORD pid<span style="color: #008080;">;</span><span style="color: #666666;">//ProcessID</span>
DWORD MainImageBase<span style="color: #008080;">;</span><span style="color: #666666;">//ImageBase procesu</span></pre></td></tr></table></div>

<p>Main:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, CHAR<span style="color: #000040;">*</span> argv<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>IAT Hook detector v. 1.0 by Grzonu<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>argc<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #666666;">//sprawdzamy czy podano parametr jesli nie to wychodzimy</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;usage: %s &lt;pid&gt;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,argv<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
pid<span style="color: #000080;">=</span><span style="color: #0000dd;">atoi</span><span style="color: #008000;">&#40;</span>argv<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//pobieramy PID</span>
DWORD IB<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
DWORD ImgSize<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
FindImageBase<span style="color: #008000;">&#40;</span>pid,<span style="color: #000040;">&amp;</span>IB,<span style="color: #000040;">&amp;</span>ImgSize<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//Znajdujemy ImageBase i Size procesu</span>
<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;ImageBase: 0x%.8x<span style="color: #000099; font-weight: bold;">\n</span>ImageSize: 0x%.8x<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,IB,ImgSize<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
hProc<span style="color: #000080;">=</span>OpenProcess<span style="color: #008000;">&#40;</span>PROCESS_VM_READ<span style="color: #000040;">|</span>PROCESS_QUERY_INFORMATION,FALSE,pid<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//otwieramy go</span>
<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>hProc<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #666666;">//jesli sie nie udalo to wychodzimy</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;can`t open process<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">char</span><span style="color: #000040;">*</span> buf<span style="color: #000080;">=</span>LoadMod<span style="color: #008000;">&#40;</span>IB<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//ladujemy plik</span>
MainImageBase<span style="color: #000080;">=</span>IB<span style="color: #008080;">;</span>
PE_file PE<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>HMODULE<span style="color: #008000;">&#41;</span>buf<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
IAT<span style="color: #008000;">&#40;</span><span style="color: #000040;">&amp;</span>PE<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//szukamy hookow</span>
<span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>buf<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//zwalniamy bufor zaalokowany w funkcji LoadMod</span>
&nbsp;
&nbsp;
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>Teraz postaram sie omowic kazda z funkcji na poczatek FindImageBase() czyli funkcja szukajaca ImageBase i Size procesu</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;">DWORD FindImageBase<span style="color: #008000;">&#40;</span>DWORD pid,DWORD<span style="color: #000040;">*</span> IB,DWORD<span style="color: #000040;">*</span> ImgSize<span style="color: #008000;">&#41;</span><span style="color: #666666;">//funkcja przyjmuje processID, wskazniki na bufory na dane</span>
<span style="color: #008000;">&#123;</span>
PROCESSENTRY32 lppe32<span style="color: #008080;">;</span>
<span style="color: #0000ff;">char</span> buf<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">260</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">memset</span><span style="color: #008000;">&#40;</span>buf,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">260</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    HANDLE hSnapshot<span style="color: #008080;">;</span>
   hSnapshot <span style="color: #000080;">=</span> CreateToolhelp32Snapshot<span style="color: #008000;">&#40;</span>TH32CS_SNAPPROCESS, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//robimy snapshot listy procesow</span>
    lppe32.<span style="color: #007788;">dwSize</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>PROCESSENTRY32<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
    Process32First<span style="color: #008000;">&#40;</span>hSnapshot, <span style="color: #000040;">&amp;</span>lppe32<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	    <span style="color: #0000ff;">do</span>
        <span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>lppe32.<span style="color: #007788;">th32ProcessID</span><span style="color: #000080;">==</span>pid<span style="color: #008000;">&#41;</span><span style="color: #666666;">//szukamy naszego procesu</span>
		<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>buf,lppe32.<span style="color: #007788;">szExeFile</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
&nbsp;
		<span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>Process32Next<span style="color: #008000;">&#40;</span>hSnapshot, <span style="color: #000040;">&amp;</span>lppe32<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        CloseHandle<span style="color: #008000;">&#40;</span>hSnapshot<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>buf<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #666666;">//jesli nie udalo sie znalesc zwracamy 0;</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
MODULEENTRY32 mod32<span style="color: #008080;">;</span>
std<span style="color: #008080;">::</span><span style="color: #007788;">string</span> x<span style="color: #008080;">;</span>
&nbsp;
   hSnapshot <span style="color: #000080;">=</span> CreateToolhelp32Snapshot<span style="color: #008000;">&#40;</span>TH32CS_SNAPMODULE, pid<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//robimy snapshot listy modolow znalezionego procesu</span>
   mod32.<span style="color: #007788;">dwSize</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>MODULEENTRY32<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
    Module32First<span style="color: #008000;">&#40;</span>hSnapshot, <span style="color: #000040;">&amp;</span>mod32<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	     <span style="color: #0000ff;">do</span>
        <span style="color: #008000;">&#123;</span>
		x<span style="color: #000080;">=</span>mod32.<span style="color: #007788;">szExePath</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>x.<span style="color: #007788;">find</span><span style="color: #008000;">&#40;</span>buf<span style="color: #008000;">&#41;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #208080;">0xFFFFFFFF</span><span style="color: #008000;">&#41;</span><span style="color: #666666;">//sprawdzamy czy to główna czesc programu</span>
		<span style="color: #008000;">&#123;</span><span style="color: #666666;">//jesli tak to wypelniamy odpowiednie zmienne</span>
			<span style="color: #000040;">*</span>IB<span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>mod32.<span style="color: #007788;">modBaseAddr</span><span style="color: #008080;">;</span>
			<span style="color: #000040;">*</span>ImgSize<span style="color: #000080;">=</span>mod32.<span style="color: #007788;">modBaseSize</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
&nbsp;
&nbsp;
		<span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>Module32Next<span style="color: #008000;">&#40;</span>hSnapshot, <span style="color: #000040;">&amp;</span>mod32<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        CloseHandle<span style="color: #008000;">&#40;</span>hSnapshot<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>Mamy wiec juz potrzebne ImageBase i ImageSize procesu. Teraz zajmiemy sie funkcja ladujaca kod modulu z pliku na ktory wskazuje ImageBase.<br />
Dotyczyc to bedzie nie tylko glownego kodu programu ale i wszystkich bibliotek. Musimy pobrac ImageSize z pliku poniewaz ImageSize modulu<br />
w pamieci bardzo latwo zmienic tak aby wygladalo ze kod jednej biblioteki pokrywa sie z druga poprzez zmiane ImageSize modulu w pamieci.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">char</span><span style="color: #000040;">*</span> LoadMod<span style="color: #008000;">&#40;</span>DWORD IB<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">char</span> ProcName<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">260</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
GetModuleFileNameEx<span style="color: #008000;">&#40;</span>hProc,<span style="color: #008000;">&#40;</span>HMODULE<span style="color: #008000;">&#41;</span>IB,ProcName,<span style="color: #0000dd;">260</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//pobieramy pelna sciezke do binarki modulu</span>
std<span style="color: #008080;">::</span><span style="color: #007788;">ifstream</span> f<span style="color: #008000;">&#40;</span>ProcName,std<span style="color: #008080;">::</span><span style="color: #007788;">ios</span><span style="color: #008080;">::</span><span style="color: #007788;">binary</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//otwieramy plik</span>
<span style="color: #0000ff;">char</span><span style="color: #000040;">*</span> buf<span style="color: #008080;">;</span>
f.<span style="color: #007788;">seekg</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span>,std<span style="color: #008080;">::</span><span style="color: #007788;">ios</span><span style="color: #008080;">::</span><span style="color: #007788;">end</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> size<span style="color: #000080;">=</span>f.<span style="color: #007788;">tellg</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
f.<span style="color: #007788;">seekg</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span>,std<span style="color: #008080;">::</span><span style="color: #007788;">ios</span><span style="color: #008080;">::</span><span style="color: #007788;">beg</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
buf<span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span><span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span><span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span>size<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//alokujemy bufor(pamietajmy go pozniej zwolnic)</span>
<span style="color: #0000dd;">memset</span><span style="color: #008000;">&#40;</span>buf,<span style="color: #0000dd;">0</span>,size<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">char</span> ch<span style="color: #008080;">;</span>
<span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">&lt;</span>size<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
f.<span style="color: #007788;">get</span><span style="color: #008000;">&#40;</span>ch<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//wczytujemy</span>
buf<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>ch<span style="color: #008080;">;</span>
i<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
f.<span style="color: #007788;">close</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">return</span> buf<span style="color: #008080;">;</span><span style="color: #666666;">//zwracamy bufor</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>Teraz czas na glowna funkcje IAT() ktora ma za zadanie znalesc wszystkie funkcje importowane przez aplikacje i sprawdzic czy nie sa hookowane.<br />
Funkcja ta kozysta z kilku innych funkcji ktore tez po drodze omowie.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">void</span> IAT<span style="color: #008000;">&#40;</span>PE_file<span style="color: #000040;">*</span> PE<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
HINSTANCE hInstance <span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span>HINSTANCE<span style="color: #008000;">&#41;</span>PE<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>buf<span style="color: #008080;">;</span>
PIMAGE_DOS_HEADER pdosheader <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>PIMAGE_DOS_HEADER<span style="color: #008000;">&#41;</span>hInstance<span style="color: #008080;">;</span><span style="color: #666666;">//pobieramy naglowki</span>
PIMAGE_NT_HEADERS pntheaders <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>PIMAGE_NT_HEADERS<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>hInstance <span style="color: #000040;">+</span> pdosheader<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>e_lfanew<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//i dalej...</span>
PIMAGE_SECTION_HEADER psectionheader <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>PIMAGE_SECTION_HEADER<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>pntheaders <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
PIMAGE_IMPORT_DESCRIPTOR pimportdescriptor <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>PIMAGE_IMPORT_DESCRIPTOR<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>hInstance <span style="color: #000040;">+</span> PE<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>RVA_to_RAW<span style="color: #008000;">&#40;</span>pntheaders<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>OptionalHeader.<span style="color: #007788;">DataDirectory</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">VirtualAddress</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//znajdujemy adres IAT w naglowku PE ale jako ze szukamy w pliku a nie w procesie pamietamy o zamianie adresu z RVA na RAW</span>
PIMAGE_THUNK_DATA pthunkdatain, pthunkdataout<span style="color: #008080;">;</span>
PIMAGE_IMPORT_BY_NAME pimportbyname<span style="color: #008080;">;</span>
DWORD dw<span style="color: #008080;">;</span>
PCHAR ptr<span style="color: #008080;">;</span>
DWORD IB<span style="color: #008080;">;</span>
<span style="color: #0000ff;">char</span><span style="color: #000040;">*</span> buf<span style="color: #008080;">;</span>
DWORD ImgSize<span style="color: #008080;">;</span>
PIMAGE_OPTIONAL_HEADER32 opt<span style="color: #008080;">;</span>
DWORD address<span style="color: #008080;">;</span>
DWORD IAT_adr<span style="color: #008080;">;</span>
DWORD read<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> pimportdescriptor<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>TimeDateStamp <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span> <span style="color: #000040;">||</span>pimportdescriptor<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Name <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #666666;">//pobieramy tak dlugo importy az sie skoncza :)</span>
<span style="color: #008000;">&#123;</span>
	ptr <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>PCHAR<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>hInstance<span style="color: #000040;">+</span> PE<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>RVA_to_RAW<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>pimportdescriptor<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Name<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//Nazwa biblioteki Dll</span>
	i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	IB<span style="color: #000080;">=</span>FindModule<span style="color: #008000;">&#40;</span>ptr<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//Funkcja szukajaca ImageBase na podstawie nazwy biblioteki(omowie dalej)</span>
	buf<span style="color: #000080;">=</span>LoadMod<span style="color: #008000;">&#40;</span>IB<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//opisana wczesniej funkcja ladujaca kod </span>
	PE_file PE2<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>HMODULE<span style="color: #008000;">&#41;</span>buf<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//ladujemy kod do klasy</span>
	opt<span style="color: #000080;">=</span>PE2.<span style="color: #007788;">GetOptionalHeader</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//Pobieramy odpowiedni header</span>
	ImgSize<span style="color: #000080;">=</span>opt<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>SizeOfImage<span style="color: #008080;">;</span><span style="color: #666666;">//pobieramy potrzebne nam pole z tego headera czyli ImageSize</span>
	<span style="color: #0000dd;">free</span><span style="color: #008000;">&#40;</span>buf<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//zwalniamy bufor</span>
&nbsp;
		pthunkdataout <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>PIMAGE_THUNK_DATA<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>hInstance <span style="color: #000040;">+</span> PE<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>RVA_to_RAW<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>pimportdescriptor<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>FirstThunk<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//pobieramy adres gdzie zaczynaja sie adresy w IAT</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>pimportdescriptor<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Characteristics <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			pthunkdatain <span style="color: #000080;">=</span> pthunkdataout<span style="color: #008080;">;</span><span style="color: #666666;">//pobieramy adres struktury z ktorej pobierzemy nazwy funkcji</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">else</span> 
		<span style="color: #008000;">&#123;</span>
			pthunkdatain <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>PIMAGE_THUNK_DATA<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>hInstance <span style="color: #000040;">+</span>PE<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>RVA_to_RAW<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>pimportdescriptor<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Characteristics<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//to samo ;)</span>
		<span style="color: #008000;">&#125;</span>
&nbsp;
		<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> pthunkdatain<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>u1.<span style="color: #007788;">AddressOfData</span> <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span><span style="color: #666666;">//dopuki sa jeszcze jakies funkcje</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>pthunkdatain<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>u1.<span style="color: #007788;">Ordinal</span> <span style="color: #000040;">&amp;</span> IMAGE_ORDINAL_FLAG<span style="color: #008000;">&#41;</span><span style="color: #666666;">//jesli Ordinal</span>
			<span style="color: #008000;">&#123;</span>
				LPSTR x<span style="color: #000080;">=</span>MAKEINTRESOURCE<span style="color: #008000;">&#40;</span>LOWORD<span style="color: #008000;">&#40;</span>pthunkdatain<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>u1.<span style="color: #007788;">Ordinal</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//Ordinal</span>
				address<span style="color: #000080;">=</span>MainImageBase<span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>pimportdescriptor<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>FirstThunk<span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>i<span style="color: #000040;">*</span><span style="color: #0000dd;">4</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//adres bufora na adres funkcji</span>
				ReadProcessMemory<span style="color: #008000;">&#40;</span>hProc,<span style="color: #008000;">&#40;</span>LPCVOID<span style="color: #008000;">&#41;</span>address,<span style="color: #000040;">&amp;</span>IAT_adr,<span style="color: #0000dd;">4</span>,<span style="color: #000040;">&amp;</span>read<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//Odczytujemy adres funkcji znajdujacej sie pod adresem pobranym wyzej</span>
&nbsp;
				<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>IAT_adr<span style="color: #000080;">&lt;</span>IB <span style="color: #000040;">||</span> IAT_adr<span style="color: #000080;">&gt;</span><span style="color: #008000;">&#40;</span>IB<span style="color: #000040;">+</span>ImgSize<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #666666;">//sprawdzamy czy adres miesci sie w granicach swojego modułu</span>
				<span style="color: #008000;">&#123;</span><span style="color: #666666;">//jesli nie to sprawdzamy w jakim module znajduje sie funkcja</span>
				DWORD HookBase<span style="color: #000080;">=</span>FindHookModule<span style="color: #008000;">&#40;</span>IAT_adr<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//pobieramy ImageBase modułu w ktorym znajduje sie ta funkcja.(Ta funkcje omowie pozniej)</span>
				<span style="color: #0000ff;">char</span> modname<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">260</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
				<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>HookBase<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #666666;">//jesli nie ma takiego modulu oznacza ze jest to poprostu zaalokowana pamiec np. przez VirtualAllocEx</span>
				<span style="color: #008000;">&#123;</span>
				<span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>modname,<span style="color: #FF0000;">&quot;Virtual Memory&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #008000;">&#125;</span>
				<span style="color: #0000ff;">else</span><span style="color: #666666;">//jesli jest to pobieramy sciezke do tego modułu</span>
				<span style="color: #008000;">&#123;</span>
				GetModuleFileNameEx<span style="color: #008000;">&#40;</span>hProc,<span style="color: #008000;">&#40;</span>HMODULE<span style="color: #008000;">&#41;</span>HookBase,modname,<span style="color: #0000dd;">260</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #008000;">&#125;</span>
<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Ord: %x(%s) --- Hooked by %s(0x%.8x)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,x,ptr,modname,IAT_adr<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//printfujemy wynik :)</span>
				<span style="color: #008000;">&#125;</span>
&nbsp;
&nbsp;
			<span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
				pimportbyname <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>PIMAGE_IMPORT_BY_NAME<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>PE<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>RVA_to_RAW<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>pthunkdatain<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>u1.<span style="color: #007788;">AddressOfData</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">+</span> <span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>hInstance<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
					address<span style="color: #000080;">=</span>MainImageBase<span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>pimportdescriptor<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>FirstThunk<span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>i<span style="color: #000040;">*</span><span style="color: #0000dd;">4</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//tutaj to samo co wyzej </span>
				ReadProcessMemory<span style="color: #008000;">&#40;</span>hProc,<span style="color: #008000;">&#40;</span>LPCVOID<span style="color: #008000;">&#41;</span>address,<span style="color: #000040;">&amp;</span>IAT_adr,<span style="color: #0000dd;">4</span>,<span style="color: #000040;">&amp;</span>read<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
				<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>IAT_adr<span style="color: #000080;">&lt;</span>IB <span style="color: #000040;">||</span> IAT_adr<span style="color: #000080;">&gt;</span><span style="color: #008000;">&#40;</span>IB<span style="color: #000040;">+</span>ImgSize<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
				<span style="color: #008000;">&#123;</span>
				DWORD HookBase<span style="color: #000080;">=</span>FindHookModule<span style="color: #008000;">&#40;</span>IAT_adr<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #0000ff;">char</span> modname<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">260</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
				<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>HookBase<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
				<span style="color: #008000;">&#123;</span>
				<span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>modname,<span style="color: #FF0000;">&quot;Virtual Memory&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #008000;">&#125;</span>
				<span style="color: #0000ff;">else</span>
				<span style="color: #008000;">&#123;</span>
				GetModuleFileNameEx<span style="color: #008000;">&#40;</span>hProc,<span style="color: #008000;">&#40;</span>HMODULE<span style="color: #008000;">&#41;</span>HookBase,modname,<span style="color: #0000dd;">260</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #008000;">&#125;</span>
				<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s(%s) --- Hooked by %s(0x%.8x)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span><span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>pimportbyname<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Name,ptr,modname,IAT_adr<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #008000;">&#125;</span>
&nbsp;
			<span style="color: #008000;">&#125;</span>
&nbsp;
        i<span style="color: #000040;">++</span><span style="color: #008080;">;</span><span style="color: #666666;">//nastepna funkcja</span>
			pthunkdatain<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
			pthunkdataout<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
&nbsp;
	pimportdescriptor<span style="color: #000040;">++</span><span style="color: #008080;">;</span><span style="color: #666666;">//nastepna DLL`ka</span>
&nbsp;
<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>To teraz 2 funkcje ktore mialem omowic</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">void</span> str_tolower<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span><span style="color: #000040;">*</span> str<span style="color: #008000;">&#41;</span><span style="color: #666666;">//funkcja zamieniajaca string na male litery</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> size<span style="color: #000080;">=</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">&lt;</span>size<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">tolower</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
i<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
DWORD FindModule<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span><span style="color: #000040;">*</span> mod_name<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
MODULEENTRY32 mod32<span style="color: #008080;">;</span>
std<span style="color: #008080;">::</span><span style="color: #007788;">string</span> x<span style="color: #008080;">;</span>
   HANDLE hSnapshot <span style="color: #000080;">=</span> CreateToolhelp32Snapshot<span style="color: #008000;">&#40;</span>TH32CS_SNAPMODULE, pid<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//o tym juz mowilem</span>
   mod32.<span style="color: #007788;">dwSize</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>MODULEENTRY32<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
   str_tolower<span style="color: #008000;">&#40;</span>mod_name<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
    Module32First<span style="color: #008000;">&#40;</span>hSnapshot, <span style="color: #000040;">&amp;</span>mod32<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	     <span style="color: #0000ff;">do</span>
        <span style="color: #008000;">&#123;</span>
		str_tolower<span style="color: #008000;">&#40;</span>mod32.<span style="color: #007788;">szExePath</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		x<span style="color: #000080;">=</span>mod32.<span style="color: #007788;">szExePath</span><span style="color: #008080;">;</span>
&nbsp;
		<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>x.<span style="color: #007788;">find</span><span style="color: #008000;">&#40;</span>mod_name<span style="color: #008000;">&#41;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #208080;">0xFFFFFFFF</span><span style="color: #008000;">&#41;</span><span style="color: #666666;">//jesli to szukany modul to zwracamy jego ImageBase</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>mod32.<span style="color: #007788;">modBaseAddr</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
&nbsp;
&nbsp;
		<span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>Module32Next<span style="color: #008000;">&#40;</span>hSnapshot, <span style="color: #000040;">&amp;</span>mod32<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        CloseHandle<span style="color: #008000;">&#40;</span>hSnapshot<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
DWORD FindHookModule<span style="color: #008000;">&#40;</span>DWORD Address<span style="color: #008000;">&#41;</span><span style="color: #666666;">//funkcja szukajaca ImageBase modulu w ktorym znajduje sie funkcja</span>
<span style="color: #008000;">&#123;</span>
MODULEENTRY32 mod32<span style="color: #008080;">;</span>
   HANDLE hSnapshot <span style="color: #000080;">=</span> CreateToolhelp32Snapshot<span style="color: #008000;">&#40;</span>TH32CS_SNAPMODULE, pid<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
   mod32.<span style="color: #007788;">dwSize</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>MODULEENTRY32<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
    Module32First<span style="color: #008000;">&#40;</span>hSnapshot, <span style="color: #000040;">&amp;</span>mod32<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	     <span style="color: #0000ff;">do</span>
        <span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>Address<span style="color: #000080;">&gt;=</span><span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>mod32.<span style="color: #007788;">modBaseAddr</span> <span style="color: #000040;">&amp;&amp;</span> Address<span style="color: #000080;">&lt;=</span><span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>mod32.<span style="color: #007788;">modBaseAddr</span><span style="color: #000040;">+</span>mod32.<span style="color: #007788;">modBaseSize</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #666666;">//jesli adres znajduje sie w przedziale &lt;ImageBase ; ImageBase+ImageSize&gt; to zwracamy jego ImageBase</span>
		<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span>DWORD<span style="color: #008000;">&#41;</span>mod32.<span style="color: #007788;">modBaseAddr</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
&nbsp;
		<span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>Module32Next<span style="color: #008000;">&#40;</span>hSnapshot, <span style="color: #000040;">&amp;</span>mod32<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        CloseHandle<span style="color: #008000;">&#40;</span>hSnapshot<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>To chyba tyle na dzis.<br />
Przedstawiona metoda jest prosta a jednak skuteczna(choc oczywiscie ja tez mozna ominac)<br />
Jesli bym o czyms zapomnial to dopisze wkrotce <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' title="Wykrywanie IAT hookingu" /> </p>
<p>Załączam kod pod VC++ i binarke <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' title="Wykrywanie IAT hookingu" /><br />
<a href="http://grzonu.com.pl/download/IAT_hooks.rar">Link</a></p>
<p><map name='google_ad_map_500_c53810e424aa3280'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/500?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_500_c53810e424aa3280' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=500&amp;url=http%3A%2F%2Fgrzonu.com.pl%2F2010%2F06%2F25%2Fwykrywanie-iat-hookingu%2F' title="Wykrywanie IAT hookingu" alt=" Wykrywanie IAT hookingu" /></p>]]></content:encoded>
			<wfw:commentRss>http://grzonu.com.pl/2010/06/25/wykrywanie-iat-hookingu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wracam</title>
		<link>http://grzonu.com.pl/2010/06/23/wracam/</link>
		<comments>http://grzonu.com.pl/2010/06/23/wracam/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 11:11:10 +0000</pubDate>
		<dc:creator>Grzonu</dc:creator>
				<category><![CDATA[Newsy]]></category>

		<guid isPermaLink="false">http://grzonu.com.pl/?p=497</guid>
		<description><![CDATA[No to taki post oderwany od ogolnego tematu bloga ale mysle ze warto napisac Po pierwsze chcialbym zdementowac plotki jakobym zapadł w śpiączke (wtf?) i uciac dyskusje na ten temat ktore podobno toczyly sie na IRCu xD Wiec zyje i mam sie dobrze oczekuje niespokojnie na wyniki matur. W najblizszym czasie mam w planie napisać [...]]]></description>
			<content:encoded><![CDATA[<p>No to taki post oderwany od ogolnego tematu bloga ale mysle ze warto napisac <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' title="Wracam" /><br />
Po pierwsze chcialbym zdementowac plotki jakobym zapadł w śpiączke (wtf?) i uciac dyskusje na ten temat ktore podobno toczyly sie na IRCu xD<br />
Wiec zyje i mam sie dobrze <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' title="Wracam" />  oczekuje niespokojnie na wyniki matur. </p>
<p>W najblizszym czasie mam w planie napisać kilka artów bo ten blog coś ostatnio świeci pustkami a coraz wiecej osób pyta kiedy coś nowego napisze. </p>
<p>No i kozystajac z okazji to miłych wakacji <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' title="Wracam" /> </p>
<p><map name='google_ad_map_497_c53810e424aa3280'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/497?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_497_c53810e424aa3280' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=497&amp;url=http%3A%2F%2Fgrzonu.com.pl%2F2010%2F06%2F23%2Fwracam%2F' title="Wracam" alt=" Wracam" /></p>]]></content:encoded>
			<wfw:commentRss>http://grzonu.com.pl/2010/06/23/wracam/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Prima aprilis</title>
		<link>http://grzonu.com.pl/2010/04/01/prima-aprylis/</link>
		<comments>http://grzonu.com.pl/2010/04/01/prima-aprylis/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 07:16:32 +0000</pubDate>
		<dc:creator>Grzonu</dc:creator>
				<category><![CDATA[Newsy]]></category>
		<category><![CDATA[aprilis]]></category>
		<category><![CDATA[gynvael]]></category>
		<category><![CDATA[indykpol]]></category>
		<category><![CDATA[niebezpiecznik]]></category>
		<category><![CDATA[prima]]></category>

		<guid isPermaLink="false">http://grzonu.com.pl/?p=487</guid>
		<description><![CDATA[No jak wiadomo dzisiejszy dzien to dzień różnych żartów Pierwszy jaki znalazlem w sieci to rzekomo shackowana strona Gynvaela Coldwind (LINK) Strona wyglada bardzo realistycznie No to czekamy na dalsze żarty //Update No to się doczekalismy tak jak sie spodziewałem niebezpiecznik.pl też cos przygotował a mianowicie posta o tym że niebezpiecznik.pl został kupiony przez indykpol [...]]]></description>
			<content:encoded><![CDATA[<p>No jak wiadomo dzisiejszy dzien to dzień różnych żartów <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' title="Prima aprilis" /><br />
Pierwszy jaki znalazlem w sieci to rzekomo shackowana strona Gynvaela Coldwind (<a href="http://gynvael.coldwind.pl">LINK</a>) Strona wyglada bardzo realistycznie <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' title="Prima aprilis" /> </p>
<p>No to czekamy na dalsze żarty <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' title="Prima aprilis" /> </p>
<p>//Update<br />
No to się doczekalismy <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' title="Prima aprilis" /><br />
tak jak sie spodziewałem niebezpiecznik.pl też cos przygotował a mianowicie posta o tym że niebezpiecznik.pl został kupiony przez indykpol <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' title="Prima aprilis" />  Gratulacje za pomysłowość <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' title="Prima aprilis" /> </p>
<p><map name='google_ad_map_487_c53810e424aa3280'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/487?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_487_c53810e424aa3280' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=487&amp;url=http%3A%2F%2Fgrzonu.com.pl%2F2010%2F04%2F01%2Fprima-aprylis%2F' title="Prima aprilis" alt=" Prima aprilis" /></p>]]></content:encoded>
			<wfw:commentRss>http://grzonu.com.pl/2010/04/01/prima-aprylis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wyszukiwarka filmów online</title>
		<link>http://grzonu.com.pl/2010/03/16/wyszukiwarka-filmow-online/</link>
		<comments>http://grzonu.com.pl/2010/03/16/wyszukiwarka-filmow-online/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 15:29:47 +0000</pubDate>
		<dc:creator>Grzonu</dc:creator>
				<category><![CDATA[Newsy]]></category>
		<category><![CDATA[filmy]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[wyszukiwarka]]></category>

		<guid isPermaLink="false">http://grzonu.com.pl/?p=484</guid>
		<description><![CDATA[Uruchomiłem dziś wyszukiwarkę filmów online. Szukajka przeszukuje sieć w poszukiwaniu filmów o interesującym nas tytule i wyswietla wynik. Zapraszam do kozystania. WYSZUKIWARKA]]></description>
			<content:encoded><![CDATA[<p>Uruchomiłem dziś wyszukiwarkę filmów online.<br />
Szukajka przeszukuje sieć w poszukiwaniu filmów o interesującym nas tytule i wyswietla wynik.<br />
Zapraszam do kozystania.</p>
<p><a href="http://twojekino.org">WYSZUKIWARKA</a></p>
<p><map name='google_ad_map_484_c53810e424aa3280'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/484?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_484_c53810e424aa3280' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=484&amp;url=http%3A%2F%2Fgrzonu.com.pl%2F2010%2F03%2F16%2Fwyszukiwarka-filmow-online%2F' title="Wyszukiwarka filmów online" alt=" Wyszukiwarka filmów online" /></p>]]></content:encoded>
			<wfw:commentRss>http://grzonu.com.pl/2010/03/16/wyszukiwarka-filmow-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Poszukiwanie informacji o osobie</title>
		<link>http://grzonu.com.pl/2010/03/14/poszukiwanie-informacji-o-osobie/</link>
		<comments>http://grzonu.com.pl/2010/03/14/poszukiwanie-informacji-o-osobie/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 23:51:57 +0000</pubDate>
		<dc:creator>Grzonu</dc:creator>
				<category><![CDATA[Artykuły]]></category>
		<category><![CDATA[dane]]></category>
		<category><![CDATA[fotka]]></category>
		<category><![CDATA[informacje]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[nk]]></category>
		<category><![CDATA[szukanie]]></category>

		<guid isPermaLink="false">http://grzonu.com.pl/?p=481</guid>
		<description><![CDATA[Poszukiwanie informacji o osobie Czesto zdaza się, że chcemy zdobyć o pewnej osobie jak najwiecej informacji. No dobra nie zastanawiajmy się po co wam te dane zastanówmy czego możemy się dowiedzieć. Cała metoda polega na dojsciu po nitce do kłębka, czyli mając np. jedna czy dwie informacje znaleśćich dużo więcej. Bardzo przydatne są do tego [...]]]></description>
			<content:encoded><![CDATA[<p>Poszukiwanie informacji o osobie</p>
<p>Czesto zdaza się, że chcemy zdobyć o pewnej osobie jak najwiecej informacji. No dobra nie zastanawiajmy się po co wam te dane zastanówmy czego możemy się dowiedzieć.<br />
Cała metoda polega na dojsciu po nitce do kłębka, czyli mając np. jedna czy dwie informacje znaleśćich dużo więcej. Bardzo przydatne są do tego wszelkie wyszukiwarki, porównywarki i inne tego typu narzędzia.<br />
Przydatna jest w zasadzie każda najmniejsza informacja. IP,mail, zdjecia, konta w serwisach społecznościowych ,znajomi ,numer gg, avatar na forum poprostu wszystko czym dysponujemy. Co mozemy zrobić np. z adresem IP &#8230;hmmm chyba jedynie sprawdzić host i jakies info o tym IP np. kozystając np. z  <a href="http://ip.boo.pl/ip-info.php ">ip.boo.pl</a><br />
W zdecydowanej wiekszosci nie uzyskamy nic wiecej poza miejscem gdzie miesci sie serwer dostawcy internetu poszukiwanej osoby. No ale to juz coś. Na podstawie tego mozemy stwierdzić czy osoba przebywa w Polsce, w jakim zakątku kraju się znajduje.<br />
Jesli dysponujemy adresem e-mail mozemy googlowac w poszukiwaniu tego adresu, możemy dzieki temu dotrzeć do stron na ktorych jest zarejestrowana poszukiwana przez nas osoba, czym się interesuje.  Na tych stronach mozemy poszukac kolejnych rzeczy np. numeru gg, avatara z forum i innych miejsc.  Mozemy trafić na konta z profili społecznościowych takich jak nasza-klasa czy fotka. No to juz nie lada gratka dla ludzi ktorzy próbują się czegoś dowiedzieć bardzo często ludzi piszą w swoich profilach bardzo wiele danych takich jak Imie i nazwisko , adres , telefon , gg. Mozemy dowiedzieć się kogo zna, a nuż mamy wspólnych znajomych. Widzimy często zdjęcia z wakacji, z domu, z imprez i wielu innych miejsc. Czasem jest nawet możliwość dowiedzieć się gdzie dane zdjecie było zrobione, jeśli aparat wyposarzony był w GPS jak to jest np. w przypadku aparatu z iPhone`a, który pozwala zapisać dane na temat miejsca zrobienia zdjecia o czym mozemy przeczytac np. <a href="http://niebezpiecznik.pl/post/exif-iphone-gps-i-nagie-fotki/ ">na niebezpieczniku</a><br />
Zdjecia , avatary i inne graficzne pliki mogą posłużyć do tego aby dowiedzieć się czegoś o poszukiwanej osobie np. dzieki stronie <a href="http://www.tineye.com/">tineye.com</a> która pokaże nam czy gdzieś w innym miejscu nie znajduje się już ono albo jego zmodyfikowana wersja. Dzieki temu znowu możemy trafić na strony z których kozysta poszukiwana osoba.<br />
W wiekszosci przypadków jesteśmy w stanie znaleść wiele informacji o osobie. Lecz jeśli komuś będzie mocno zależało na tym aby google milczało na jego temat to uda mu się bo w 90% przypadków ludzie sami podają informacje na swoj temat które pozwalają ich znaleść.</p>
<p><map name='google_ad_map_481_c53810e424aa3280'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/481?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_481_c53810e424aa3280' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=481&amp;url=http%3A%2F%2Fgrzonu.com.pl%2F2010%2F03%2F14%2Fposzukiwanie-informacji-o-osobie%2F' title="Poszukiwanie informacji o osobie" alt=" Poszukiwanie informacji o osobie" /></p>]]></content:encoded>
			<wfw:commentRss>http://grzonu.com.pl/2010/03/14/poszukiwanie-informacji-o-osobie/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Zmian ciag dalszy</title>
		<link>http://grzonu.com.pl/2010/03/04/zmian-ciag-dalszy/</link>
		<comments>http://grzonu.com.pl/2010/03/04/zmian-ciag-dalszy/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 20:52:38 +0000</pubDate>
		<dc:creator>Grzonu</dc:creator>
				<category><![CDATA[Newsy]]></category>
		<category><![CDATA[az.pl]]></category>
		<category><![CDATA[nowy hosting]]></category>

		<guid isPermaLink="false">http://grzonu.com.pl/?p=405</guid>
		<description><![CDATA[Dzisiaj zacząłem przenosić stronę na nowy,lepszy,szybszy hosting. Dawny limit tranferu i miejsca przestawał wystarczać i balansował prawie na granicy. Przeniosłem więc stronę na większy serwer o 100x wiekszej powierzchni i ponad 100x wiekszym limicie transferu Mam nadzieje, że poprawi się komfort oglądania strony Wszystko to dzięki firmie az.pl która nie dość że podarowała mi domene [...]]]></description>
			<content:encoded><![CDATA[<p>Dzisiaj zacząłem przenosić stronę na nowy,lepszy,szybszy hosting. Dawny limit tranferu i miejsca przestawał wystarczać i balansował prawie na granicy. Przeniosłem więc stronę na większy serwer o 100x wiekszej powierzchni i ponad 100x wiekszym limicie transferu <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' title="Zmian ciag dalszy" />  Mam nadzieje, że poprawi się komfort oglądania strony <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' title="Zmian ciag dalszy" />  Wszystko to dzięki firmie az.pl która nie dość że podarowała mi domene za darmo to jeszcze dała mi ten hosting w bardzo przystępnej cenie <img src='http://grzonu.com.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' title="Zmian ciag dalszy" /> </p>
<p>W ciagu kilku dni niektóre linki mogą nie działac ale postaram się to jak najszybciej poprawić.</p>
<p><map name='google_ad_map_405_c53810e424aa3280'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/405?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_405_c53810e424aa3280' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=405&amp;url=http%3A%2F%2Fgrzonu.com.pl%2F2010%2F03%2F04%2Fzmian-ciag-dalszy%2F' title="Zmian ciag dalszy" alt=" Zmian ciag dalszy" /></p>]]></content:encoded>
			<wfw:commentRss>http://grzonu.com.pl/2010/03/04/zmian-ciag-dalszy/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Zmiana adresu</title>
		<link>http://grzonu.com.pl/2010/02/22/zmiana-adresu/</link>
		<comments>http://grzonu.com.pl/2010/02/22/zmiana-adresu/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 16:31:19 +0000</pubDate>
		<dc:creator>Grzonu</dc:creator>
				<category><![CDATA[Newsy]]></category>

		<guid isPermaLink="false">http://grzonu.com.pl/?p=403</guid>
		<description><![CDATA[Z dnim dzisiejszym strona zmienia adres na grzonu.com.pl stary adres bedzie funkcjonował jeszcze około miesiąc rownolegle z nowym.]]></description>
			<content:encoded><![CDATA[<p>Z dnim dzisiejszym strona zmienia adres na <a href="http://grzonu.com.pl">grzonu.com.pl</a><br />
stary adres bedzie funkcjonował jeszcze około miesiąc rownolegle z nowym.</p>
<p><map name='google_ad_map_403_c53810e424aa3280'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/403?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_403_c53810e424aa3280' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=403&amp;url=http%3A%2F%2Fgrzonu.com.pl%2F2010%2F02%2F22%2Fzmiana-adresu%2F' title="Zmiana adresu" alt=" Zmiana adresu" /></p>]]></content:encoded>
			<wfw:commentRss>http://grzonu.com.pl/2010/02/22/zmiana-adresu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
