<?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>Security News &#187; Reversing</title> <atom:link href="http://www.secnews.pl/category/reversing/feed/" rel="self" type="application/rss+xml" /><link>http://www.secnews.pl</link> <description>Reverse engineering, ochrona oprogramowania.</description> <lastBuildDate>Thu, 02 Sep 2010 09:25:33 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0.1</generator> <item><title>Praca w firmie Norman</title><link>http://www.secnews.pl/2010/07/11/praca-w-firmie-norman/</link> <comments>http://www.secnews.pl/2010/07/11/praca-w-firmie-norman/#comments</comments> <pubDate>Sat, 10 Jul 2010 22:18:46 +0000</pubDate> <dc:creator>bartek</dc:creator> <category><![CDATA[Praca]]></category> <category><![CDATA[Reversing]]></category> <category><![CDATA[antywirus]]></category> <category><![CDATA[norman]]></category> <category><![CDATA[norwegia]]></category><guid isPermaLink="false">http://www.secnews.pl/?p=738</guid> <description><![CDATA[Firma antywirusowa Norman, znana z wirtualnego środowiska do testowania malware Norman SandBox, poszukuje pracowników na stanowiska: Malware Analysis and Threat Research (Reverse Engineering) Engine Development Team &#8211; Experienced C/ASM programmers (x86/x64) Automated Malware Analysis – Software Developers Wszystkie pozycje dostępne na dzień dzisiejszy na stronie: http://www.norman.com/about_norman/vacancies/en-us PS. Praca w Norwegii.]]></description> <content:encoded><![CDATA[<p><img class="alignright size-full wp-image-739" title="norman_logo_None" src="http://www.secnews.pl/wp-content/uploads/2010/07/norman_logo_None.gif" alt="" width="151" height="38" />Firma antywirusowa <strong>Norman,</strong> znana z wirtualnego środowiska do testowania malware <a href="http://www.norman.com/security_center/security_tools/">Norman SandBox</a>, poszukuje pracowników na stanowiska:</p><ul><li> <a href="http://www.norman.com/about_norman/vacancies/84490/en-us">Malware Analysis and Threat Research (Reverse Engineering)</a></li><li><a href="http://www.norman.com/about_norman/vacancies/84489/en-us">Engine Development Team &#8211; Experienced C/ASM programmers (x86/x64)</a></li><li><a href="http://www.norman.com/about_norman/vacancies/84488/en-us">Automated Malware Analysis – Software Developers</a></li></ul><p>Wszystkie pozycje dostępne na dzień dzisiejszy na stronie:</p><p><a href="http://www.norman.com/about_norman/vacancies/en-us">http://www.norman.com/about_norman/vacancies/en-us</a></p><p>PS. Praca w Norwegii.</p> ]]></content:encoded> <wfw:commentRss>http://www.secnews.pl/2010/07/11/praca-w-firmie-norman/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>UPX v3.05</title><link>http://www.secnews.pl/2010/04/28/upx-v3-05/</link> <comments>http://www.secnews.pl/2010/04/28/upx-v3-05/#comments</comments> <pubDate>Wed, 28 Apr 2010 17:54:15 +0000</pubDate> <dc:creator>bartek</dc:creator> <category><![CDATA[Narzędzia]]></category> <category><![CDATA[Reversing]]></category> <category><![CDATA[kompresja]]></category> <category><![CDATA[lzma]]></category> <category><![CDATA[upx]]></category><guid isPermaLink="false">http://www.secnews.pl/?p=723</guid> <description><![CDATA[Ukazała się nowa wersja pakera UPX. Z głównych zmian można wymienić opcjonalna kompresja algorytmem LZMA wsparcie dla systemów z rodziny BSD Strona projektu: http://upx.sourceforge.net Download: http://upx.sourceforge.net/download/upx305w.zip]]></description> <content:encoded><![CDATA[<p><a href="http://upx.sourceforge.net"><img class="alignright size-full wp-image-725" title="UPX" src="http://www.secnews.pl/wp-content/uploads/2010/04/upx12.png" alt="" width="125" height="67" /></a>Ukazała się nowa wersja pakera <strong>UPX</strong>. Z głównych zmian można wymienić</p><ul><li>opcjonalna kompresja algorytmem <a href="http://www.7-zip.org/sdk.html">LZMA</a></li><li>wsparcie dla systemów z rodziny BSD</li></ul><p>Strona projektu:<br /> <a href="http://upx.sourceforge.net">http://upx.sourceforge.net</a></p><p>Download:<br /> <a href="http://upx.sourceforge.net/download/upx305w.zip">http://upx.sourceforge.net/download/upx305w.zip</a></p> ]]></content:encoded> <wfw:commentRss>http://www.secnews.pl/2010/04/28/upx-v3-05/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Praca w ESET</title><link>http://www.secnews.pl/2010/04/21/praca-w-eset/</link> <comments>http://www.secnews.pl/2010/04/21/praca-w-eset/#comments</comments> <pubDate>Wed, 21 Apr 2010 17:43:03 +0000</pubDate> <dc:creator>bartek</dc:creator> <category><![CDATA[Praca]]></category> <category><![CDATA[Reversing]]></category> <category><![CDATA[antywirus]]></category> <category><![CDATA[ESET]]></category><guid isPermaLink="false">http://www.secnews.pl/?p=673</guid> <description><![CDATA[Polski oddział firmy antywirusowej ESET poszukuje pracowników na stanowiska: Programista — http://3537.pl/programista.html Analityk zagrożeń — http://3537.pl/analityk-zagrozen.html Do procesu rekrutacji wymagane jest rozwiązanie załączonych zadań. Więcej informacji na — http://3537.pl]]></description> <content:encoded><![CDATA[<p><a href="http://www.secnews.pl/2009/06/19/eset-crackme/"><img class="alignright size-full wp-image-479" title="ESET" src="http://www.secnews.pl/wp-content/uploads/2009/06/eset.png" alt="" width="105" height="45" /></a>Polski oddział firmy antywirusowej <strong>ESET</strong> poszukuje pracowników na stanowiska:</p><ul><li>Programista — <a href="http://3537.pl/programista.html">http://3537.pl/programista.html</a></li><li>Analityk zagrożeń — <a href="http://3537.pl/analityk-zagrozen.html">http://3537.pl/analityk-zagrozen.html</a></li></ul><p>Do procesu rekrutacji wymagane jest rozwiązanie załączonych zadań.</p><p>Więcej informacji na — <a href="http://3537.pl">http://3537.pl</a></p> ]]></content:encoded> <wfw:commentRss>http://www.secnews.pl/2010/04/21/praca-w-eset/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Luki bezpieczeństwa jądra Windows</title><link>http://www.secnews.pl/2010/04/12/luki-bezpieczenstwa-jadra-windows/</link> <comments>http://www.secnews.pl/2010/04/12/luki-bezpieczenstwa-jadra-windows/#comments</comments> <pubDate>Mon, 12 Apr 2010 10:32:48 +0000</pubDate> <dc:creator>bartek</dc:creator> <category><![CDATA[Artykuły]]></category> <category><![CDATA[Reversing]]></category> <category><![CDATA[bugs]]></category> <category><![CDATA[exploits]]></category> <category><![CDATA[kernel]]></category> <category><![CDATA[windows]]></category><guid isPermaLink="false">http://www.secnews.pl/?p=665</guid> <description><![CDATA[Prezentacja z konferencji SEConference 2k10 autorstwa j00ru przedstawiająca techniczny opis luk związanych z jądrem systemu Windows. Prezentacja w formacie PDF i PPTX Więcej informacji na — http://j00ru.vexillium.org/?p=301&#38;lang=pl]]></description> <content:encoded><![CDATA[<p><img class="alignright size-full wp-image-666" title="Blue Screen ;)" src="http://www.secnews.pl/wp-content/uploads/2010/04/screen_windows.png" alt="" width="48" height="48" />Prezentacja z konferencji <a href="http://2k10.seconference.pl/">SEConference 2k10</a> autorstwa <strong>j00ru</strong> przedstawiająca techniczny opis luk związanych z jądrem systemu Windows.</p><p>Prezentacja w formacie <a href="http://j00ru.vexillium.org/blog/10_04_10/Windows_kernel_bugs.pdf">PDF</a> i <a href="http://j00ru.vexillium.org/blog/10_04_10/Windows_kernel_bugs.pptx">PPTX</a></p><p>Więcej informacji na — <a href="http://j00ru.vexillium.org/?p=301&amp;lang=pl">http://j00ru.vexillium.org/?p=301&amp;lang=pl</a></p> ]]></content:encoded> <wfw:commentRss>http://www.secnews.pl/2010/04/12/luki-bezpieczenstwa-jadra-windows/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Wtyczka OllyDataInterpret</title><link>http://www.secnews.pl/2010/04/02/wtyczka-ollydatainterpret/</link> <comments>http://www.secnews.pl/2010/04/02/wtyczka-ollydatainterpret/#comments</comments> <pubDate>Fri, 02 Apr 2010 16:38:26 +0000</pubDate> <dc:creator>bartek</dc:creator> <category><![CDATA[Narzędzia]]></category> <category><![CDATA[Reversing]]></category> <category><![CDATA[ollydbg]]></category> <category><![CDATA[plugin]]></category><guid isPermaLink="false">http://www.secnews.pl/?p=652</guid> <description><![CDATA[OllyDataInterpret to wtyczka autorstwa Snake&#8217;a dla debuggera OllyDbg, jej działanie polega na wyświetleniu zaznaczonych danych w popularnych formatach liczbowych (przydatny może być zwłaszcza format zmiennoprzecinkowy), dodatkowo oferuje podgląd bitmap z pamięci procesu. Więcej informacji i download na: http://sgames.ovh.org/blog/index.php/2010/02/11/ollydatainterpret/]]></description> <content:encoded><![CDATA[<p><strong><img class="alignright size-full wp-image-653" title="Plugin" src="http://www.secnews.pl/wp-content/uploads/2010/04/plugins-48.png" alt="" width="48" height="48" />OllyDataInterpret</strong> to wtyczka autorstwa<strong> Snake&#8217;a</strong> dla debuggera OllyDbg, jej działanie polega na wyświetleniu zaznaczonych danych w popularnych formatach liczbowych (przydatny może być zwłaszcza format zmiennoprzecinkowy), dodatkowo oferuje podgląd bitmap z pamięci procesu.</p><p>Więcej informacji i download na:<br /> <a href="http://sgames.ovh.org/blog/index.php/2010/02/11/ollydatainterpret/">http://sgames.ovh.org/blog/index.php/2010/02/11/ollydatainterpret/</a></p> ]]></content:encoded> <wfw:commentRss>http://www.secnews.pl/2010/04/02/wtyczka-ollydatainterpret/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>HASP i Visual FoxPro 9</title><link>http://www.secnews.pl/2010/03/29/hasp-i-visual-foxpro-9/</link> <comments>http://www.secnews.pl/2010/03/29/hasp-i-visual-foxpro-9/#comments</comments> <pubDate>Mon, 29 Mar 2010 13:29:41 +0000</pubDate> <dc:creator>bartek</dc:creator> <category><![CDATA[Artykuły]]></category> <category><![CDATA[Reversing]]></category> <category><![CDATA[hasp]]></category> <category><![CDATA[refox]]></category> <category><![CDATA[visual foxpro]]></category><guid isPermaLink="false">http://www.secnews.pl/?p=629</guid> <description><![CDATA[Ostatnio natrafiłem na aplikację stworzoną w środowisku Visual FoxPro 9, zabezpieczona była kluczem sprzętowym HASP Hardlock, a sam plik wykonywalny aplikacji był zaszyfrowany (tzw. envelope). Struktura aplikacji Visual FoxPro Z nielicznych kontaktów z oprogramowaniem Visual FoxPro wiedziałem, że każda taka aplikacja składa się z prostego loadera (który uruchamia cały engine VFP znajdujący się w dodatkowych [...]]]></description> <content:encoded><![CDATA[<p><img class="alignright size-full wp-image-632" title="VFP9" src="http://www.secnews.pl/wp-content/uploads/2010/03/fox.png" alt="" width="116" height="120" />Ostatnio natrafiłem na aplikację stworzoną w środowisku <a href="http://en.wikipedia.org/wiki/Visual_FoxPro">Visual FoxPro 9</a>, zabezpieczona była kluczem sprzętowym <a href="http://www.aladdin.com/hasp/default.aspx">HASP Hardlock</a>, a sam plik wykonywalny aplikacji był zaszyfrowany (tzw. <em>envelope</em>).</p><h2>Struktura aplikacji Visual FoxPro</h2><p>Z nielicznych kontaktów z oprogramowaniem <strong>Visual FoxPro</strong> wiedziałem, że każda taka aplikacja składa się z <strong>prostego loadera</strong> (który uruchamia cały engine VFP znajdujący się w dodatkowych plikach DLL) oraz <strong>właściwej aplikacji</strong>, która znajduje się na końcu pliku wykonywalnego (zapisana jako <em>overlay</em>), całość jest więc w jednym pliku wykonywalnym. Tak jest w przypadku programów niezabezpieczonych:</p><p><img class="aligncenter size-full wp-image-634" title="Niezabezpieczona aplikacja VFP9" src="http://www.secnews.pl/wp-content/uploads/2010/03/vfp_clean.png" alt="" width="211" height="245" /></p><p>W przypadku zabezpieczenia HASP, na końcu zabezpieczonego pliku faktycznie znajdują się jakieś dane, ale nie są to dane aplikacji VFP, gdyż nie można jej zdekompilować oprogramowaniem <a href="http://www.refox.net/">ReFox</a>.</p><h2>Zabezpieczenia dla aplikacji z overlayami</h2><p>Dane <em>overlay</em> (tak zapisane dane są w aplikacjach Flash, Director, Shockwave etc.) nie są mapowane w pamięci procesu i muszą być odczytane bezpośrednio z dysku. Popularną metodą ochrony takich aplikacji jest szyfrowanie tych danych i <strong>hookowanie</strong> funkcji systemu plików (np. <em>CreateFile</em>, <em>ReadFile</em> etc.) w samej aplikacji, poprzez podstawienie adresów funkcji zastępczych w tabeli importów aplikacji. Jeśli aplikacja otworzy swój własny plik i będzie probowała czytać dane overlaya, nie zostanie odczytane to co jest na dysku, ale to co zostało wczesniej zaszyfrowane.</p><p>Takie rozwiązanie przez hookowanie tabeli importów działa jedynie w przypadku samodzielnych plików (bez dodatkowych bibliotek), w przypadku aplikacji VFP, dane z pliku wykonywalnego czytane są przez dodatkowe biblioteki, więc wymagany byłby system wide hook.</p><h2>Envelope HASP dla aplikacji VFP</h2><p>System zabezpieczeń HASP dla takich plików, działa w ten sposób, że sterownik systemowy HASP-a podpina się pod funkcje systemowe Windows odpowiedzialne za czytanie plików i obecność oryginalnego overlaya jest emulowana tylko dla zabezpieczonej aplikacji i jej bibliotek. Wygląda to mniej więcej tak:</p><p><a href="http://www.secnews.pl/wp-content/uploads/2010/03/vfp_protected.png"><img class="aligncenter size-full wp-image-637" title="Zabezpieczona aplikacja VFP9" src="http://www.secnews.pl/wp-content/uploads/2010/03/vfp_protected.png" alt="" width="419" height="245" /></a></p><h2>Odczytanie overlaya</h2><p>Jak zatem uzyskać obraz całego overlaya? Z przeprowadzonych eksperymentów wynika, że dane nie są nigdzie czytane w całości, więc nie ma takiego punktu w programie (a grzebanie w engine VFP nie należy do najprzyjemniejszych), gdzie by można było zrzucić pamięć całego overlaya.</p><p>Jednak jeśli czytanie danych overlaya jest emulowane dla samej zabezpieczonej aplikacji, można <strong>wstrzyknąć kod</strong> czytający zawartość całego pliku do zabezpieczonej aplikacji i dzięki temu uzyskać dane odszyfrowanego overlaya.</p><p>Jest tutaj kilka problemów. Po pierwsze, aby wstrzyknąc kod należy dojść do <strong>OEP</strong> zabezpieczonej aplikacji, co może sprawić trochę problemów, ja skorzystałem z <strong>OllyDbg</strong> i pluginu <a href="http://tuts4you.com/download.php?view.1276">Phant0m</a>, ponieważ envelope HASP-a wykrywa popularne narzędzia do debuggowania, co można zobaczyć na zrzuconym obrazie zabepieczonego pliku:</p><p><a href="http://www.secnews.pl/wp-content/uploads/2010/03/file_dumped.png"><img class="aligncenter size-medium wp-image-639" title="Wykrywane narzędzia" src="http://www.secnews.pl/wp-content/uploads/2010/03/file_dumped-300x152.png" alt="" width="300" height="152" /></a></p><p>Znalezienie OEP jest relatywnie proste, wersja dla leniwych — zrzucić działający program z pamięci i wyszukać standardowego entrypoint-a dla aplikacji skompilowanych pod Visual C++ (szukać funkcji <a href="http://msdn.microsoft.com/en-us/library/ms683230(VS.85).aspx">GetStartupInfoA</a>). Potem wgrać na nowo plik i ustawić hardware breakpoint na tym adresie.</p><p>Będąc na adresie OEP można teraz wstrzyknąć kod odpowiedzialny za czytanie pliku. Aby zaoszczedzić trochę kodu, ja wykorzystałem fakt, że plik aplikacji jest przez nią otwierany w pewnym momencie, dzięki czemu nie trzeba pobierać jego ścieżki i go otwierać, a od razu mamy jego uchwyt, który można wykorzystać do odczytania overlaya:</p><p><a href="http://www.secnews.pl/wp-content/uploads/2010/03/vfp_open.png"><img class="aligncenter size-full wp-image-643" title="Otwieranie swojego pliku" src="http://www.secnews.pl/wp-content/uploads/2010/03/vfp_open.png" alt="" width="382" height="400" /></a></p><p>Następnie skorzystałem ze skryptu ODBScript, żeby pod adresem 4015EE załadować kod, który odczyta zawartość pliku i zapisze go na dysku:</p><div class="wp_syntax"><div class="code"><pre class="asm" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">; usun wszystkie breakpointy</span>
        bphwcall
        bc
&nbsp;
<span style="color: #666666; font-style: italic;">; ustaw hardware bp na OEP</span>
        bphws   <span style="color: #0000ff;">401873</span><span style="color: #339933;">,</span><span style="color: #7f007f;">&quot;x&quot;</span>
&nbsp;
        run
&nbsp;
<span style="color: #666666; font-style: italic;">; ustaw hardware bp na kod po _lopen</span>
        bphws   4015F4<span style="color: #339933;">,</span><span style="color: #7f007f;">&quot;x&quot;</span>
&nbsp;
        run
&nbsp;
        bphwcall
&nbsp;
<span style="color: #666666; font-style: italic;">; kompiluj kod z pliku pod adres EIP</span>
        asmtxt  eip<span style="color: #339933;">,</span> <span style="color: #7f007f;">&quot;C:\fox_dumper.asm&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">; pomocniczy bp</span>
        bphws   <span style="color: #0000ff;">401644</span><span style="color: #339933;">,</span><span style="color: #7f007f;">&quot;x&quot;</span>
&nbsp;
        run
&nbsp;
<span style="color: #666666; font-style: italic;">; zrzuc pamiec pod adresem ESI o rozmiarze EBX</span>
        dm <span style="color: #00007f;">esi</span><span style="color: #339933;">,</span> <span style="color: #00007f;">ebx</span><span style="color: #339933;">,</span> <span style="color: #7f007f;">&quot;c:\dump.bin&quot;</span>
&nbsp;
        log <span style="color: #7f007f;">&quot;VFP dumper zrobione.&quot;</span>
&nbsp;
        pause</pre></div></div><p>Kod dumpera ładowany jest z zewnętrznego pliku, a nie jest wykorzystywana funkcja ODBScript wykonująca kod assemblera w przestrzeni adresowej aplikacji, ponieważ to po prostu nie działało (jakby ktoś pytał):</p><div class="wp_syntax"><div class="code"><pre class="asm" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">; w EAX jest uchwyt pliku</span>
        <span style="color: #00007f; font-weight: bold;">mov</span>     <span style="color: #00007f;">edi</span><span style="color: #339933;">,</span><span style="color: #00007f;">eax</span>                 <span style="color: #666666; font-style: italic;">; hFile</span>
&nbsp;
<span style="color: #666666; font-style: italic;">; nawiguj na koniec pliku (korzystajac z funkcji</span>
<span style="color: #666666; font-style: italic;">; z tabeli importow aplikacji)</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #0000ff;">2</span>                       <span style="color: #666666; font-style: italic;">; FILE_END</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #0000ff;">0</span>                       <span style="color: #666666; font-style: italic;">; offset</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #00007f;">edi</span>                     <span style="color: #666666; font-style: italic;">; hFile</span>
        <span style="color: #00007f; font-weight: bold;">call</span>    <span style="color: #009900; font-weight: bold;">&#91;</span>40203C<span style="color: #009900; font-weight: bold;">&#93;</span> <span style="color: #666666; font-style: italic;">;_llseek</span>
        <span style="color: #00007f; font-weight: bold;">mov</span>     <span style="color: #00007f;">ebx</span><span style="color: #339933;">,</span><span style="color: #00007f;">eax</span>                 <span style="color: #666666; font-style: italic;">; eax = current offset = size</span>
&nbsp;
<span style="color: #666666; font-style: italic;">; alokuj pamiec na rozmiar overlaya</span>
        <span style="color: #00007f; font-weight: bold;">lea</span>     <span style="color: #00007f;">eax</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">ebx</span><span style="color: #339933;">-</span><span style="color: #0000ff;">4</span><span style="color: #009900; font-weight: bold;">&#93;</span>             <span style="color: #666666; font-style: italic;">; na koncu overala zapisany jest DWORD</span>
                                        <span style="color: #666666; font-style: italic;">; ktory wskazuje offset poczatku overlaya</span>
                                        <span style="color: #666666; font-style: italic;">; w pliku</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #0000ff;">0</span>                       <span style="color: #666666; font-style: italic;">; FILE_BEGIN</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #00007f;">eax</span>                     <span style="color: #666666; font-style: italic;">; offset</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #00007f;">edi</span>                     <span style="color: #666666; font-style: italic;">; hFile</span>
        <span style="color: #00007f; font-weight: bold;">call</span>    <span style="color: #009900; font-weight: bold;">&#91;</span>40203C<span style="color: #009900; font-weight: bold;">&#93;</span> <span style="color: #666666; font-style: italic;">;_llseek</span>
&nbsp;
<span style="color: #666666; font-style: italic;">; odczytaj DWORD, ktory okresja polozenie overalaya w pliku</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #0000ff;">0</span>
        <span style="color: #00007f; font-weight: bold;">mov</span>     <span style="color: #00007f;">eax</span><span style="color: #339933;">,</span><span style="color: #00007f;">esp</span>
&nbsp;
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #0000ff;">4</span>                       <span style="color: #666666; font-style: italic;">; size</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #00007f;">eax</span>                     <span style="color: #666666; font-style: italic;">; &amp;amp;memory</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #00007f;">edi</span>                     <span style="color: #666666; font-style: italic;">; hFile</span>
        <span style="color: #00007f; font-weight: bold;">call</span>    <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #0000ff;">402040</span><span style="color: #009900; font-weight: bold;">&#93;</span> <span style="color: #666666; font-style: italic;">;_lread</span>
&nbsp;
        <span style="color: #00007f; font-weight: bold;">pop</span>     <span style="color: #00007f;">eax</span>                     <span style="color: #666666; font-style: italic;">; esi - raw offset overlaya</span>
&nbsp;
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #0000ff;">0</span>                       <span style="color: #666666; font-style: italic;">; FILE_BEGIN</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #0000ff;">0</span>                       <span style="color: #666666; font-style: italic;">; offset</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #00007f;">edi</span>                     <span style="color: #666666; font-style: italic;">; hFile</span>
        <span style="color: #00007f; font-weight: bold;">call</span>    <span style="color: #009900; font-weight: bold;">&#91;</span>40203C<span style="color: #009900; font-weight: bold;">&#93;</span> <span style="color: #666666; font-style: italic;">;_llseek</span>
&nbsp;
<span style="color: #666666; font-style: italic;">; alokuj pamiec na calego overlaya</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #00007f;">ebx</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #0000ff;">40</span>                      <span style="color: #666666; font-style: italic;">; GMEM_FIXED or GMEM_ZEROINIT</span>
        <span style="color: #00007f; font-weight: bold;">call</span>    GlobalAlloc
        <span style="color: #00007f; font-weight: bold;">mov</span>     <span style="color: #00007f;">esi</span><span style="color: #339933;">,</span><span style="color: #00007f;">eax</span>
&nbsp;
<span style="color: #666666; font-style: italic;">; odczytaj calego overlaya do nowo zaalokowanej pamieci</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #00007f;">ebx</span>                     <span style="color: #666666; font-style: italic;">; size</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #00007f;">esi</span>                     <span style="color: #666666; font-style: italic;">; &amp;amp;memory</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #00007f;">edi</span>                     <span style="color: #666666; font-style: italic;">; hFile</span>
        <span style="color: #00007f; font-weight: bold;">call</span>    <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #0000ff;">402040</span><span style="color: #009900; font-weight: bold;">&#93;</span> <span style="color: #666666; font-style: italic;">;_lread</span>
&nbsp;
<span style="color: #666666; font-style: italic;">; zamknij oryginalny plik</span>
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #00007f;">edi</span>
        <span style="color: #00007f; font-weight: bold;">call</span>    <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #0000ff;">402038</span><span style="color: #009900; font-weight: bold;">&#93;</span> <span style="color: #666666; font-style: italic;">;_lclose</span>
&nbsp;
<span style="color: #666666; font-style: italic;">; utworz nowy plik</span>
        <span style="color: #00007f; font-weight: bold;">sub</span>     <span style="color: #00007f;">esp</span><span style="color: #339933;">,</span><span style="color: #0000ff;">512</span>
        <span style="color: #00007f; font-weight: bold;">mov</span>     <span style="color: #00007f;">eax</span><span style="color: #339933;">,</span><span style="color: #00007f;">esp</span>
&nbsp;
<span style="color: #666666; font-style: italic;">; &quot;C:\x&quot;</span>
        <span style="color: #00007f; font-weight: bold;">mov</span>     <span style="color: #00007f;">edx</span><span style="color: #339933;">,</span>785C3A43
        <span style="color: #00007f; font-weight: bold;">mov</span>     <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">eax</span><span style="color: #009900; font-weight: bold;">&#93;</span><span style="color: #339933;">,</span><span style="color: #00007f;">edx</span>
        <span style="color: #00007f; font-weight: bold;">xor</span>     <span style="color: #00007f;">ecx</span><span style="color: #339933;">,</span><span style="color: #00007f;">ecx</span>
        <span style="color: #00007f; font-weight: bold;">mov</span>     <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">eax</span><span style="color: #339933;">+</span><span style="color: #0000ff;">4</span><span style="color: #009900; font-weight: bold;">&#93;</span><span style="color: #339933;">,</span><span style="color: #00007f;">ecx</span>
&nbsp;
<span style="color: #666666; font-style: italic;">; esi - ptr</span>
<span style="color: #666666; font-style: italic;">; ebx - size</span>
&nbsp;
        <span style="color: #00007f; font-weight: bold;">push</span>    <span style="color: #0000ff;">0</span>
        <span style="color: #00007f; font-weight: bold;">call</span>    ExitProcess</pre></div></div><p>Po wykonaniu skryptu, w pliku C:\x otrzymamy zrzut całego pliku (nie tylko overlaya).</p><h2>Odbudowa oryginalnego pliku wykonywalnego</h2><p>Posiadając zrzucony overlay (rozpoznamy jego bajty po sygnaturze FE F2 EE), należy go <em>dokleić</em> do odbudowanego loadera VFP. Sam loader po zabezpieczeniu i zrzuceniu wymaga odbudowy importów,  tutaj można trochę oszukać, wszystkie loadery VFP (danej wersji) są takie same, różnią się jedynie wersją językową, ikoną i zasobami z nazwą i numerem wersji aplikacji. Jeśli posiadacie środowisko Visual FoxPro 9, można stworzyć projekt w stylu Hello World, skompilować do pliku wykonywalnego, usunąć oryginalny overlay i wkleić nasz, a aplikacja będzie działała poprawnie (można potem w edytorze zasobów podmienić ikonę i wersję aplikacji).</p><h2>Wnioski</h2><p>Było trochę problemów z samą zabezpieczoną aplikacją i jej działaniem w OllyDbg z włączonym pluginem Phant0m (dużo restartów, nie dało się normalnie zamknąć aplikacji), jednak sama metoda jest dosyć szybka i uniwersalna, z późniejszych poszukiwań udało mi się jeszcze znaleźć doskonały artykuł prezentujący szereg innych zabezpieczeń stosowanych w aplikacjach VFP, polecam na koniec:</p><p>Security in FoxPro — <a href="http://www.foxpert.com/docs/security.en.htm">www.foxpert.com/docs/security.en.htm</a></p><p>PS. Pozdro dla wszystkich <em>burtoniarzy</em> <img src='http://www.secnews.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p> ]]></content:encoded> <wfw:commentRss>http://www.secnews.pl/2010/03/29/hasp-i-visual-foxpro-9/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Optymalizacja kodu</title><link>http://www.secnews.pl/2010/03/23/optymalizacja-kodu-2/</link> <comments>http://www.secnews.pl/2010/03/23/optymalizacja-kodu-2/#comments</comments> <pubDate>Tue, 23 Mar 2010 12:54:17 +0000</pubDate> <dc:creator>bartek</dc:creator> <category><![CDATA[Assembler]]></category> <category><![CDATA[C/C++]]></category> <category><![CDATA[Programowanie]]></category> <category><![CDATA[Reversing]]></category> <category><![CDATA[assembler]]></category> <category><![CDATA[hll]]></category> <category><![CDATA[optymalizacja]]></category><guid isPermaLink="false">http://www.secnews.pl/?p=625</guid> <description><![CDATA[Znakomity przegląd optymalizacji wykonywanych przez kompilatory HLL, przedstawiony w formie prezentacji autorstwa Rolfa Rollesa. Prezentacja — Binary Literacy &#8212; Static &#8212; 6 &#8212; Optimizations]]></description> <content:encoded><![CDATA[<p>Znakomity przegląd optymalizacji wykonywanych przez kompilatory HLL, przedstawiony w formie prezentacji autorstwa <strong>Rolfa Rollesa</strong>.</p><p><a href="http://www.openrce.org/repositories/users/RolfRolles/Binary%20Literacy%20--%20Static%20--%206%20--%20Optimizations.ppt"><img class="alignnone size-full wp-image-626" title="Binary Literacy - Static Optimizations" src="http://www.secnews.pl/wp-content/uploads/2010/03/hll_optimizations.png" alt="" width="440" height="326" /></a></p><p>Prezentacja — <a href="http://www.openrce.org/repositories/users/RolfRolles/Binary%20Literacy%20--%20Static%20--%206%20--%20Optimizations.ppt">Binary Literacy &#8212; Static &#8212; 6 &#8212; Optimizations</a></p> ]]></content:encoded> <wfw:commentRss>http://www.secnews.pl/2010/03/23/optymalizacja-kodu-2/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Native Blocks</title><link>http://www.secnews.pl/2010/03/19/native-blocks/</link> <comments>http://www.secnews.pl/2010/03/19/native-blocks/#comments</comments> <pubDate>Fri, 19 Mar 2010 00:45:59 +0000</pubDate> <dc:creator>bartek</dc:creator> <category><![CDATA[Linki]]></category> <category><![CDATA[Narzędzia]]></category> <category><![CDATA[Reversing]]></category><guid isPermaLink="false">http://www.secnews.pl/?p=616</guid> <description><![CDATA[Native Blocks to projekt Daniela Pistelli, obecnie powiązanego z HexRays, jest to reassembler dla aplikacji napisanych w środowisku .NET. W skrócie można napisać, że służy on do modyfikacji kodu ILASM, wykorzystując dodatkowe skrypty JavaScript, dzięki czemu możliwe staje się proste usunięcie zabezpieczeń i technik stosowanych przez obfuscatory dla aplikacji .NETowych. Prezentowany przykład pokazuje jak usunąć [...]]]></description> <content:encoded><![CDATA[<p><strong><img class="alignright size-full wp-image-619" title="dotnet_logo" src="http://www.secnews.pl/wp-content/uploads/2010/03/dotnet_logo.jpg" alt="" width="87" height="51" />Native Blocks</strong> to projekt <em>Daniela Pistelli</em>, obecnie powiązanego z <a href="http://www.hex-rays.com/">HexRays</a>, jest to reassembler dla aplikacji napisanych w środowisku .NET. W skrócie można napisać, że służy on do modyfikacji kodu ILASM, wykorzystując dodatkowe skrypty <em>JavaScript</em>, dzięki czemu możliwe staje się proste usunięcie zabezpieczeń i technik stosowanych przez obfuscatory dla aplikacji .NETowych.</p><p>Prezentowany przykład pokazuje jak usunąć sztuczki używane przez obfuscator <a href="http://www.wiseowl.com/">Wise Owl&#8217;s Demeanor</a> (chyba najdroższy obfuscator dla .NET $799) w oprogramowaniu Reflector. Materiał (jeśli ktoś jeszcze nie widział, bo już trochę to wisi na necie) warty obejrzenia, bo pokazuje nowe drogi do analizy zabezpieczonego oprogramowania .NET.</p><p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/pDlwStN3KZY&amp;hl=en_GB&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/pDlwStN3KZY&amp;hl=en_GB&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p><p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/ene6hvE5qVQ&amp;hl=en_GB&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/ene6hvE5qVQ&amp;hl=en_GB&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p><p>Oryginalny artykuł — <a href="http://rcecafe.net/?p=96">http://rcecafe.net/?p=96</a></p> ]]></content:encoded> <wfw:commentRss>http://www.secnews.pl/2010/03/19/native-blocks/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Pobieranie adresu EIP</title><link>http://www.secnews.pl/2010/03/14/pobieranie-adresu-eip/</link> <comments>http://www.secnews.pl/2010/03/14/pobieranie-adresu-eip/#comments</comments> <pubDate>Sun, 14 Mar 2010 00:44:14 +0000</pubDate> <dc:creator>bartek</dc:creator> <category><![CDATA[Assembler]]></category> <category><![CDATA[Programowanie]]></category> <category><![CDATA[Reversing]]></category> <category><![CDATA[assembler]]></category> <category><![CDATA[delta offset]]></category> <category><![CDATA[eip]]></category> <category><![CDATA[exploits]]></category><guid isPermaLink="false">http://www.secnews.pl/?p=612</guid> <description><![CDATA[Pobieranie adresu EIP to jedna z ważniejszych czynności w kodzie wirusów, exe-pakerów, exploitów etc., poniższy artykuł prezentuje standardowe metody jak delta offset oraz te mniej znane na uzyskanie własnego adresu EIP. http://corkami.blogspot.com/2010/03/si-cest-ton-corps-qui-bouge-cest-ton.html Jeśli ktoś zna inne metody — dopiszcie się do komentarzy.]]></description> <content:encoded><![CDATA[<p><img class="alignright size-full wp-image-613" title="deltoid ;)" src="http://www.secnews.pl/wp-content/uploads/2010/03/delta.png" alt="" width="128" height="128" />Pobieranie adresu EIP to jedna z ważniejszych czynności w kodzie wirusów, exe-pakerów, exploitów etc., poniższy artykuł prezentuje standardowe metody jak <em>delta offset</em> oraz te mniej znane na uzyskanie własnego adresu EIP.</p><p><a href="http://corkami.blogspot.com/2010/03/si-cest-ton-corps-qui-bouge-cest-ton.html">http://corkami.blogspot.com/2010/03/si-cest-ton-corps-qui-bouge-cest-ton.html</a></p><p>Jeśli ktoś zna inne metody — dopiszcie się do komentarzy.</p> ]]></content:encoded> <wfw:commentRss>http://www.secnews.pl/2010/03/14/pobieranie-adresu-eip/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Niewidzialny breakpoint</title><link>http://www.secnews.pl/2010/02/17/niewidzialn-breakpoint/</link> <comments>http://www.secnews.pl/2010/02/17/niewidzialn-breakpoint/#comments</comments> <pubDate>Wed, 17 Feb 2010 12:16:03 +0000</pubDate> <dc:creator>bartek</dc:creator> <category><![CDATA[Reversing]]></category> <category><![CDATA[ollydbg]]></category> <category><![CDATA[zagadka]]></category><guid isPermaLink="false">http://www.secnews.pl/?p=602</guid> <description><![CDATA[Ciekawostko—zagadka dla czytelników. Dlaczego następuje skok? Podpowiedź — caption.]]></description> <content:encoded><![CDATA[<p>Ciekawostko—zagadka dla czytelników. Dlaczego następuje skok?</p><p><a href="http://www.secnews.pl/wp-content/uploads/2010/02/invisible_breakpoint.png"><img class="alignnone size-medium wp-image-603" title="invisible_breakpoint" src="http://www.secnews.pl/wp-content/uploads/2010/02/invisible_breakpoint-300x217.png" alt="" width="300" height="217" /></a></p><p>Podpowiedź — <em>caption</em>.</p> ]]></content:encoded> <wfw:commentRss>http://www.secnews.pl/2010/02/17/niewidzialn-breakpoint/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> </channel> </rss>