Tag:

easy

Total:
Pokaż wszystkie posty

Posty z podanym tagiem:
  • "Jak nie ukrywać swojej twarzy";
  • "HiperDrop 0.0.1";
  • "Rozszerzenia w C/C++/GCC, egzamin na Technika Informatyka";
  • "Losowe przemyślenia (3)";
  • "Propozycja ćwiczenia dla programistów";
  • "C i lokalne tablice o "zmiennej" wielkości (UPDATE)";
  • "[HISPASEC Research] Windows Kernel Vulnerabilities... x5 :)";
  • "Częściowa inicjacja tablic w C/C++";
  • "Resume Flag a detekcja debuggera";
  • "C i decimal point w printf/scanf a ustawienia regionalne";
  • "Windows Win32k syscall table";
  • "Google Go, pierwszy rzut oka i raytracer";
  • "C/C++ i próba zastąpienia ifów matematyką";
  • "PHP i array, raporty prezentowane na SecDay 2009";
  • "Bardzo ciekawe compo na GDPL";
  • "Konsultacje/korepetycje/lekcje dla początkujących";
  • "Poradnik Początkującego Programisty";
  • "Jesienne przemyślenia";
  • "Dzielenie całkowite i WTF";
  • "PHP getimagesize internals (część 3): PNG";
  • "PHP getimagesize internals (część 2): GIF";
  • "PHP getimagesize internals (część 1)";
  • "ReverseCraft E05";
  • "Ciekawe mini-compo dla programistów";
  • "ReverseCraft E04";
  • "Błąd z RAND_MAX oraz Art of File 3D";
  • "ReverseCraft E03";
  • "ReverseCraft Episode 2";
  • "Trojany bankowe - powrót do przeszłości";
  • "Losowe przemyślenia";
  • "Art of file, czyli graficzne interpretacja plików";
  • "CONFidence 2009 ESET crackme - rozwiązanie";
  • "Czyżby ktoś sobie na Naszej Klasie robił botnecik?";
  • "ANSI Escape Codes dla Windows 7 RC";
  • "ReverseCraft E01 part 3";
  • "Boot menu i blip";
  • "ReverseCraft E01 part 2";
  • "Enter the ReverseCraft";
  • "Jak sobie ułatwić życie, czyli skrypty GDB wbudowane w assemblerowe źródło";
  • "Po marcowym compo 3h GDPL";
  • "OS X, Objective C i RE";
  • "OS X vs Write-What-Where Condition";
  • "Entropia";
  • "Ent v.0.0.3";
  • "Referer spam, epizod 2";
  • "Kilka losowych spraw...";
  • "Znowu ktoś zapomniał poprawić generator.";
  • "CloseHandle ciekawsze niż myślałem";
  • "CPC464 i kasety";
  • "Windows 7 - lista zmian w exportach, update";
  • "SIN*COS";
  • "Supportu dla ANSI escape codes w cmd.exe i skryptach BAT";
  • "OpenGL w skryptach .BAT";
  • "Windows 7 - lista zmian w exportach kernel32.dll";
  • "Światłowór - kod z CPC, wnioski";
  • "Światłowór - czyli jak przesłać dane z CPC 464 na PC nie mając potrzebnych kabelków";
  • "CPC 464";
  • "Strzępki kodu";
  • "Malware "kradnący" AppInit_DLLs";
  • "LOOP vs. domyślny assembler na Mac OS X";
  • ".S.k.y.";
  • "ISSA Wrocław, Bezpieczeństwo przeglądarki Google Chrome";
  • "Format bug, Vista i %n";
  • "Ciekawy schemat anty-re";
  • "Brakująca funkcja gettimeofday i race condition";
  • "SekIT 2008 - relacja";
  • "Hacker Challenge 2008";
  • "Security Days - zadanie 3,4";
  • "Security Days 6 - zadanie 2";
  • "Prezentacja z SekIT 2008";
  • "Security Days 6, dzień 1 - rozwiązanie";
  • "Zainstaluj Chrome, nie będziesz już anonimowy dla Google";
  • "Hookowanie funkcji w Chrome to nie mechanizm bezpieczeństwa?";
  • "Czy automatyczne ściąganie plików w Google Chrome to na prawdę vuln?";
  • "Sandbox w Google Chrome";
  • "Google Chrome - pierwsze wrażenie";
  • "Security Days 6";
  • "Stare advisory";
  • "Metaball, Python+Pygame+Psyco i SDL+C++";

  • Wszystkie posty z danym tagiem są wyświetlone poniżej.
    2010-08-24:

    Jak nie ukrywać swojej twarzy

    jpeg:easy
    Dostałem dzisiaj od znajomego pewne zdjęcie, w formacie JPEG. Zdjęcie przedstawiało osobę, której twarz została zamalowana czarnym prostokątem. Nie było by w tym nic ciekawego, gdyby nie to, że explorer pokazywał na miniaturce twarz niezamalowaną :)

    Czytaj dalej...
    2010-07-20:

    HiperDrop 0.0.1

    hiperdrop:reverse engineering:easy:windows:c++
    Przeglądając ostatnio katalogi na dysku znalazłem trochę narzędzi które z jakiegoś powodu ukrywałem i do tej pory nie opublikowałem. Zastanawiam się nad dokończeniem ich podstawowej funkcjonalności i wrzuceniu w końcu na sieć. W każdym bądź razie, jednym z takich narzędzi (które prawie bez zmian nadawało się do publikacji) jest HiperDrop - prosty, konsolowy, tool do zrzucania pamięci procesu, pod Windows.

    Czytaj dalej...
    Zarówno GCC, oraz inne kompilatory, jak i same standardy języków C/C++, przewidują pewne rozszerzenia języka, które zazwyczaj adresują jakiś problem, bądź też dodają nową funkcjonalność. Tych rozszerzeń jest masa - w zasadzie każdy popularny kompilator ma niemałą listę takich dodatków, i oczywiście nie zamierzam ich wszystkich opisywać w tym poście. Wspomnę natomiast o dwóch: atrybucie init_priority dla globalnych inicjacji obiektów w GCC C++, oraz znaku dolara ($) w nazwach zmiennych - rozszerzeniu pojawiającym się w różnych miejscach. Przy okazji tego ostatniego, zaprezentuje jedno zadanie z tegorocznego testu na Technika Informatyka (który od dwóch dni krąży po sieci).

    Czytaj dalej...
    2010-06-08:

    Losowe przemyślenia (3)

    random thoughts:easy
    Kilka dni nic nie pisałem, a kilka losowych przemyśleń mi się uzbierało. Skorzystam więc z okazji i je zanotuje.

    Czytaj dalej...
    Kiedyś moja żona wynalazła gdzieś stwierdzenie, że "ekspert to osoba która popełniła wszystkie możliwe błędy w swojej działce"* - i chyba coś w tym jest. Zauważmy, że programista na poziomie eksperckim/zaawansowanym rzadko kiedy dopytuje się "co zrobić gdy wyskoczył mi taki a taki błąd (np. kompilatora)" - on już te błędy widział, on już je kiedyś popełnił i nauczył się je rozwiązywać. Natomiast pytania od początkujących (a czasem i średnio-zaawansowanych) programistów dotyczą często właśnie tego "co zrobić gdy kompilator rzucił takim a takim błędem". Łącząc cytat z pytaniem, chciałbym zaproponować pewne ćwiczenie :)

    Czytaj dalej...
    Czas na jakiś bardziej techniczny post. Dostałem kilka dni temu pytanie, które pozwolę sobie zacytować: "[...] dlaczego nie powinno się deklarować zmiennych w taki sposób: int a = 50; int b[a];". Chodzi tutaj oczywiście o tablice lokalne, które mają wielkość zależną od jakiejś zmienne, być może nawet zależnej od użytkownika/wejścia. Swoją odpowiedź cytuje poniżej:

    Czytaj dalej...
    2010-04-13:

    [HISPASEC Research] Windows Kernel Vulnerabilities... x5 :)

    windows:security:bughunt:buffer overflow:easy
    O pierwszym z bugów znalezionych przez nasz team (w składzie j00ru i ja ;>) informowałem już w lutym. Dzisiaj Microsoft opublikował info o kolejnych 5 (a w zasadzie 6ściu, ponieważ dwa z nich, które dla nas wyglądały jako oddzielne błędy, udało się załatwić jedną zmianą, więc zostały ogłoszone pod jednym numerkiem) :)

    Czytaj dalej...
    2010-02-01:

    Częściowa inicjacja tablic w C/C++

    c:c++:easy:programming:asm:x86
    Otrzymałem mejlowo (od luqa który zgodził się na publikacje korespondencji ;>) pytanie dotyczące wartości niezainicjowanych elementów częściowo zainicjowanej lokalnej tablicy:

    Czytaj dalej...
    2009-12-11:

    Resume Flag a detekcja debuggera

    re:asm:x86:easy
    Na forum UW-Team.org pojawiło się pytanie o wykorzystanie flagi RF (Resume Flag) do detekcji debuggera. Ponieważ nie słyszałem wcześniej o wykorzystaniu tej flagi do anty-dbg, postanowiłem przyjrzeć się bliżej. Poniżej zamieszczam moją odpowiedź na zadane pytanie.

    Czytaj dalej...
    Na forum uw-team.org exylum zadał pytanie: "czy znak przy konwersji liczb zmiennoprzecinkowych ("," lub ".") zależy od systemu na jakim pracujemy, ustawień regionalnych itp.?". Ponieważ pytanie mnie zaciekawiło, to trochę poszperałem tu i tam, odpowiedziałem na forum i w końcu stwierdziłem że napisze (metodą Kopiego=Pasta) o tym również tutaj, być może kogoś również to zaciekawi.

    Czytaj dalej...
    2009-11-13:

    Windows Win32k syscall table

    easy:windows:re:assembler
    Szybkie info. j00ru opublikował wczoraj na swoim blogu tablicę nazw i numerów syscalli Win32k (aka shadow table, wykorzystywanej przez user32.dll, gdi32.dll i DirectX) - http://j00ru.vexillium.org/win32k_syscalls/ (w zasadzie jest bardzo podobna do tej z Metasploit, oczywiście z tą różnicą, że zawiera syscalle win32k, a nie kernelowe). Jeżeli lubisz grzebać w niskopoziomowych rzeczach, to na pewno chcesz rzucić na to okiem!

    Czytaj dalej...
    Od wczoraj (a w zasadzie przedwczorajszej nocy) w sieci jest głośno o nowym języku programowania, stworzonym przez ludzi z Google. Język nazywa się Go i leży między królestwem języków niskopoziomowych (jak C/C++) a królestwem języków wysokopoziomowych (jak Python, Java czy C#) (twórcy mówią o nim 'system programming language') - czyli próbuje łączyć zalety jednych (kompilacja do kodu natywnego, szybkość działania, etc) i drugich (garbage-collector, natywne wsparcie dla wielowątkowości, etc). Wczoraj wieczorem stwierdziłem, że przetestuje ten język i przeportowałem jeden ze swoich raytracerów na niego. Po tym pierwszym rzucie oka stwierdziłem, że podzielę się paroma przemyśleniami (wszystko zawarte w tym poście należy traktować jedynie jako moją opinię, wyrobioną po około 5 godzinach pisania w tym języku; zastrzegam że opinia może mi się zmienić ;>).

    Czytaj dalej...
    Jak nauczyły nas stare procesory i kompilatory, if'y bywają kosztowne - każdy if tłumaczony jest na jeden lub dwa skoki (w zależności czy to if czy else if), a skoki miały zwyczaj czyścić kolejkę instrukcji do wykonania w CPU, przez co były dość kosztowne. W związku z czym szukało się innych metod na zapisanie serii if'ów, np. za pomocą operacji matematycznych lub logicznych, które były mniej kosztowne (gdy występowały w niewielkiej ilości) niż skoki które czyściły kolejkę instrukcji. Oczywiście nowe procesory pozwalają na oznaczenie bardziej prawdopodobnych skoków (druga grupa prefiksów, prefiksy 2E (branch not taken) i 3E (branch taken)), a nowe kompilatory C/C++ pozwalają oznaczyć czy warunek w if będzie bardziej czy mniej prawdopodobny (patrz __builtin_expect), a nawet można skorzystać z profilerów i samemu sformułować if'y tak aby testowały zawsze te mniej czy bardziej prawdopodobne warunki (oczywiście trzeba wiedzieć jak kompilator tłumaczy kod, ale nie jest to specjalnie trudne). Niemniej jednak czasami nachodzi człowieka ochota żeby zastąpić parę if'ów jakimś ładnym działaniem matematycznym, a tym samym... utrudnić sobie życie ;>

    Czytaj dalej...
    2009-11-05:

    PHP i array, raporty prezentowane na SecDay 2009

    secday:easy:php:security
    Na SecDay 2009 mówiłem m.in. o tym, że PHP może z zewnątrz przyjmować nie tylko stringi (int'y są też przekazywane jako stringi), ale również arraye (tablice). Jak prezentowałem, niespodziewanymi arrayami można wywołać całkiem niezłą masę warningów, a dodatkowo czasami zmylić logikę skryptu i doprowadzić do pewnych nieoczekiwanych przez twórcę rezultatów (osoby które nie widziały prelekcji, zachęcam do jej obejrzenia). Podczas prelekcji pokazywałem kilka raportów z wynikami testu paru funkcji PHP, obiecując że ów raporty udostępnię - co niniejszym czynie.

    Czytaj dalej...
    2009-11-04:

    Bardzo ciekawe compo na GDPL

    gamedev:compo:easy
    Xa na serwisie GameDev.pl zaproponował compo na stworzenie gry z wykorzystaniem tylko i wyłącznie 3ch raytrace'owanych kul. Czas jest do najbliższej soboty, godz. 23:59.

    Czytaj dalej...
    Postanowiłem przeprowadzić drobny eksperyment, a jednocześnie rozwiązać problem, który mają osoby początkujące, które próbują ze mną porozmawiać w sposób ciągły i "bez-lagowy" (co ostatnio jest nietrywialne, z uwagi na dużą ilość czasu którą poświęcam na pracę/projekty/etc).

    Czytaj dalej...
    2009-10-21:

    Poradnik Początkującego Programisty

    blog:code:easy
    Bardzo często zgłaszają się do mnie osoby które programują stosunkowo niedługo, lub właśnie rozpoczynające swoją przygodę z programowaniem, i pytają o to jaką książkę bym polecił do języka XYZ, czy znam jakiś dobry tutorial, ewentualnie jak rozwiązać dany problem (np. jak poprawić błąd kompilacji lub błąd logiczny), czy jaką funkcję użyć aby uzyskać określony efekt. Przez ostatnie 10 lat które "spędziłem" w Internecie takich rozmów odbyłem dziesiątki, jeśli nie setki. Tak więc wychodząc na przeciw przyszłym programistom, postanowiłem stworzyć Poradnik początkującego programisty (słowo "poradnik" jest tutaj kluczowe). Zapraszam do lektury!

    Czytaj dalej...
    2009-10-12:

    Jesienne przemyślenia

    easy:blog
    Co jakiś czas przychodzi mi do głowy trochę różnych tematów które jakoś nie mogą trafić do oddzielnego posta, a jednak chciałbym się nimi podzielić. Czas na październikową porcję!

    Czytaj dalej...
    2009-09-13:

    Dzielenie całkowite i WTF

    c:python:perl:ruby:php:easy
    Zawsze myślałem że umiem dzielić liczby całkowite i obliczać resztę z takiego dzielenia, ale jak to zwykle bywa, życie zweryfikowało moją ocenę sytuacji, i powiedziało mi "nie umiesz dzielić!". Otóż wziąłem do ręki pewien podręcznik do matematyki (do liceum) w którym definicja dzielenia całkowitego i reszty z dzielenia kapkę odbiegała od mojej. Ofc będąc programistą od razu rzuciłem się do kompa żeby sprawdzić "jak to tam wygląda", i okazało się że nie ma jednej spójnej wersji...

    Czytaj dalej...
    Czas na kolejną część tematyki PHP internals! Tym razem będzie o popularnym formacie PNG, oczywiście w kontekście obsługi tego formatu przez funkcje getimagesize.

    Czytaj dalej...
    Czas na drugą część (tak, to oznacza że była część pierwsza ;>) posta o getimagesize. Tym razem skupie się bardziej na tym jak getimagesize robi to do czego została stworzona - czyli jak odczytuje wielkość z poszczególnych formatów graficznych. Będzie również o tym dlaczego getimagesize nie powinno się używać do sprawdzania czy uploadowany plik faktycznie jest obrazkiem.

    Czytaj dalej...
    2009-08-21:

    PHP getimagesize internals (część 1)

    php:security:easy
    Funkcja getimagesize jest, moim zdaniem oczywiście, jedną z bardziej interesujących funkcji wchodzącej w skład standardowego zestawu funkcji PHP (tak, standardowego, mimo iż jej dokumentacja leży w sekcji pełnej funkcji GD). Czemu ta funkcja jest taka interesująca? Po pierwsze, jej implementacja jest długa, a jak wiadomo, dużo kodu = dużo mniejszych lub większych bugów. Po drugie, funkcja ta bardzo często jest wykorzystywana w sposób niewłaściwy, przez co do kodu wprowadzane są pewne interesujące bugi.

    Czytaj dalej...
    2009-08-19:

    ReverseCraft E05

    re:easy:video:reversecraft
    Krótki news: przed chwilą wrzuciliśmy z Unknow'em ReverseCraft #5. Tym razem tematem są packery - prezentuje ogólną zasadę działania protektorów oraz pokazuje jak zrobić prosty packer (w C++). ReverseCraft jak zwykle dostępny jest w formie online oraz do ściągnięcia (linki na stronie z odcinkiem).

    Czytaj dalej...
    2009-08-14:

    Ciekawe mini-compo dla programistów

    compo:code:easy:mininews
    Szybkie news: dostałem parę dni temu (thx mulander) info o bardzo fajnym compo organizowanym przez NullCode.pl, a polegającym na rozwiązaniu pewnego zadania programistycznego w jak najmniejszej ilości znaków (tj. kod źródłowy ma mieć jak najmniej znaków). Osobiście uwielbiam tego typu zabawy, więc zachęcam do udziału (a nuż wam też się spodoba). Link do topików z compo: http://nullcode.pl/konkursy-f43.html.

    Czytaj dalej...
    2009-08-01:

    ReverseCraft E04

    reversecraft:re:easy
    Z tygodniowym opóźnieniem na sieć trafia kolejny, czwarty wg stosowanej numeracji, odcinek ReverseCraft. Wszelkie informacje o czym jest odcinek, linki do playera i pliku, oraz dodatkowe materiały znajdują się jak zwykle na stronie projektu, czyli re.coldwind.pl.

    Czytaj dalej...
    Dzisiaj będzie o pewnym ciekawym błędzie znalezionym w kodzie znajomego, oraz o pewnym linku znalezionym w refererach. Link prowadził do...

    Czytaj dalej...
    2009-07-08:

    ReverseCraft E03

    re:easy:video:reversecraft
    Z drobnym (no dobra, prawie tygodniowym, więc nie takim drobnym ;>) opóźnieniem na sieć powędrował trzeci eps ReverseCraft - mojego video-kursu reverse engineeringu. Tym razem udało się wszystko ładnie zsynchronizować, i online na raz trafiła wersja do oglądania via www (http://videoarty.pl/play_reverse03_reverse_pamiec_proces_i_pe.html), oraz wersja do ściągnięcia (http://www.uw-team.org/index.php?id=videoarty&dzial=reverse). Dodatkowe materiały, takie jak slajdy, cała masa linków, jakiś kawałek kodu i lista zadań (w tym jedno z przygotowanym przeze mnie EXEkiem) dostępne są jak zwykle na stronie projektu, czyli http://re.coldwind.pl. Miłego oglądania!

    Czytaj dalej...
    2009-06-20:

    ReverseCraft Episode 2

    re:reversecraft:easy
    Drugi odcinek ReverseCraft trafił na sieć, i jest do ściągnięcia na stronie serwisu UW-Team (jutro lub pojutrze będzie dostępna również wersja do oglądania online). Po za tym stworzyłem pewną drobną stronkę z materiałami do kursu: re.coldwind.pl.

    Czytaj dalej...
    2009-06-06:

    Trojany bankowe - powrót do przeszłości

    re:security:easy:malware
    Tak się zdarzyło ostatnio że wróciłem do analizy trojanów. Powrót został uczczony prawie 24-godzinny maratonem z różnymi zagranicznymi bankerami, i widać że gdy ja zajmowałem się innymi rzeczami, to autorzy trojanów nie spali - wymyślali coraz to nowe metody żeby ich malware był...  jeszcze słabiej skonstruowany :p

    Czytaj dalej...
    2009-05-27:

    Losowe przemyślenia

    security:easy:blog:rant
    Czytając ostatnio pewne doniesienia prasowe, czy też posty na pewnych blogach, rzuciło mi się w oczy kilka kwestii, o których postanowiłem poblogwać, a w zasadzie porantować ;D

    Czytaj dalej...
    W niedzielę po raz kolejny postanowiłem pobawić się w wizualizację plików. Wizualizacja plików to temat długi i szeroki, i nawet są strony jej poświęcone, na których to autorzy prezentują kolorowe bitmapki przedstawiające pliki - często 1 do 1, czyli 3 kolejne bajty w pliku traktowane są jako wartości RGB. W moim przypadku natomiast zamiast RGB, będzie X i Y.

    Czytaj dalej...
    2009-05-20:

    CONFidence 2009 ESET crackme - rozwiązanie

    re:easy:confidence:crackme:c++
    W końcu jakiś techniczny post! A post poświęcony będzie crackme ESET'u, które to było do połamania na tegorocznej edycji CONFidence z numerkiem 2009. Crackme (przygotowanym specjalnie na confidence) pozwoliłem sobie udostępnić (@Marcin/Jakub w razie czego dajcie znać, to zdejmę ;>), tak aby osoby nieobecne na confi również mogły się pobawić:

    Czytaj dalej...
    Znajomy (hi diabel! (nie, to nie znaczy że jestem wyznawcą szatana) UPDATE: widziałem propozycję by 'hi diabel' zmienić na 'ave satan', ale chyba nie przejdzie ;D) podesłał mi screena i pewien pliczek. W skrócie: wygląda na to że ktoś zbiera sobie zombie na NK huh. Zacznijmy od screena:

    Czytaj dalej...
    2009-05-12:

    ANSI Escape Codes dla Windows 7 RC

    windows:bat:re:winapi:easy:asm:c:c++:tools
    Wczoraj j00ru dał mi znać że mój add-on do cmd.exe, dodający jakże to ważną funkcjonalność (tj kolorki), nie funkcjonuje poprawnie na Windows 7 RC - w związku z czym rzuciłem okiem, i tak oto powstała wersja 0.004d!

    Czytaj dalej...
    2009-04-29:

    ReverseCraft E01 part 3

    re:easy:video:reversecraft
    Wczoraj wieczorem została upubliczniona 3cia i zarazem ostatnia część pierwszego odcinka mojego kursu, a w zasadzie serii videotutoriali, o reverse engineeringu. Ostatnia część dostępna jest tam gdzie zwykle, czyli na serwisie uw-team.

    Czytaj dalej...
    2009-04-28:

    Boot menu i blip

    asm:easy:boot:blog
    Pewnego razu Xa, który bardzo lubi eksperymentować z OS'ami, chciał zainstalować dodatkowy system operacyjny - nazwijmy go "Gamma System" - na swoim komputerze, na którym był już pewien system - nazwijmy go "Alpha OS". Traf chciał że za równo "Gamma System" jak i "Alpha OS" nie miały boot loaderów które pozwoliły by wybierać który system ma być bootowany, a w dodatku, każdy loader był na tyle indywidualny, że to właśnie on musiał zostać użyty - więc powstał problem. Oczywiście, jak to zwykle bywa, użycie LILO czy GRUB odpadało z przyczyn różnych. W związku z czym dostałem questa - zrobić żeby to jakoś działało.

    Czytaj dalej...
    2009-04-26:

    ReverseCraft E01 part 2

    reversecraft:re:easy
    Wczoraj wczesnym rankiem (a tak na prawdę późną nocą) na UW-team.org została umieszczona druga część pierwszego odcinka mojego kursu RE.

    Czytaj dalej...
    2009-04-22:

    Enter the ReverseCraft

    re:easy:video:reversecraft
    Wczoraj wieczorem na serwisie UW-Team pojawiła się pierwsza część (a tak na prawdę to pierwsza część pierwszej części - pierwszy odcinek ma 3 części po 30-40 minut) mojego kursu poświęconego Reverse Engineeringowi (nazwanemu Reverse Craft). Videoart chwilowo dostępny jest tylko do pobrania, ale pewnie niedługo będzie można go również oglądać online (jak tylko będzie stream to dam linka - pewne kłopoty z wielkością video są). Pierwszy odcinek ma być niejako poglądowy i pokazać 'o co w tym RE chodzi' - kolejne odcinki będą miały charakter bardziej edukacyjny ;>

    Czytaj dalej...
    Wyrażenie "assemblerowe źródło" mi jakoś nie leży, ale po 15 minutach straconych na próbę wymyślenia czegoś lepszego, co określało by źródło kawałka funkcji stworzonej w assemblerze, i jednocześnie było dość zwięzłe, stwierdziłem że musi zostać. Wracając do tematu, a w zasadzie dopiero go rozpoczynając, dzisiaj będzie o pewnym sposobie którym się wspomogłem podczas gonitwy za bugiem w pewnej dość rozbudowanej funkcji napisanej w asmie (dialekt NASM). Ów funkcja miała wyszukiwać w obrazie biblioteki (w pamięci, MACH-O) adres podanej metody z podanej klasy (objc), z podanej biblioteki na OS X, i składała się z trzech czy czterech zagłębień pętli. No i oczywiście nie działała jak należy, a ręczne debugowanie tego przyjemne nie było (potem się okazało że cały pomysł nie do końca działa, ale to historia na inny dzień).

    Czytaj dalej...
    2009-03-16:

    Po marcowym compo 3h GDPL

    gamedev:c++:opengl:windows:linux:easy:game
    Wczoraj wieczorem od godziny 17:00 do 20:00 odbyło się trzygodzinne compo zorganizowane przez GDPL (a konkretniej przez meehav'a). Tematem przewodnim była 'gra w której jest za równo świnia jak i krowa' (oryginalny temat, przyznaje). Mimo ogólnego braku czasu, stwierdziłem że 3h w niedzielę wieczorem znajdę, i (po akceptacji propozycji przez górę - czyli moją ukochaną żonę ;>) również udało mi się wziąć udział.

    Czytaj dalej...
    2009-03-14:

    OS X, Objective C i RE

    macosx:objc:easy:re
    Nadszedł dzień w którym rzuciłem w końcu okiem na programowanie aplikacji niekonsolowych na Mac'a. Aplikacja na Maca zazwyczaj tworzy się przy użyciu języka Objective C (z którym jeszcze styczności nie miałem) oraz API Cocoa (OSX'owski odpowiednik WinAPI; kiedyś był jeszcze Carbon). Z punktu widzenia programisty składnia Objective C bardzo mi się spodobała, ale przyznaje szczerze, że Objective C z punktu widzenia RE jest jeszcze ciekawsze ;>

    Czytaj dalej...
    2009-03-11:

    OS X vs Write-What-Where Condition

    security:macosx:easy
    Jak moi stali czytelnicy wiedzą, od jakiegoś czasu dysponuje MacBookiem z OS X'em. W końcu stwierdziłem że fajnie byłoby sprawdzić jak wygląda exploiting standardowych rodzajów błędów na OS X'ie. Muszę przyznać że raz czy dwa OS X mnie pozytywnie zaskoczył. Natomiast ten post będzie o innym "razie", gdy niespodzianka nie była pozytywna (pod względem bezpieczeństwa), ale niewątpliwie była (hermetycznie) komiczna ;>

    Czytaj dalej...
    2009-03-04:

    Entropia

    re:easy
    W poprzednim poście pisałem o narzędziu do pomiaru entropii, natomiast kwestię "po co komu pomiar entropii" zostawiłem wtedy na któryś kolejny post. Czas ów postu właśnie nadszedł.

    Czytaj dalej...
    2009-03-02:

    Ent v.0.0.3

    re:entropy:easy:c++
    Jest pewien tool, stworzony przeze mnie i j00ru, który już jakiś czas temu miałem wrzucić na sieć, ale jakoś tak kod był niepiękny, i nigdy nie było czasu żeby go uładnić. Aż w końcu w weekend będąc u rodziców wziąłem laptopa i przepisałem kod na czysto.

    Czytaj dalej...
    2009-02-21:

    Referer spam, epizod 2

    blog:easy:spam
    Ostatnio pisałem o spamie w polu referrer nagłówka HTTP - ktoś wymyślił żeby wrzucać tam linki (czasem okraszone BBCodem) prowadzące do sklepów z viagrą, penisami, i powiększaniem zegarków. Najwyraźniej nadeszła nowa, lepsza, fala ów spamu - od wczoraj u mnie w referrerach pojawia się, nie jeden, a kilka linków do różnych sajtów, z czego ostatni to jakaś podstrona mojego bloga, pierwsza to spam, a czasem pojawia się jeszcze jakaś inna niezwiązana stronka.

    Czytaj dalej...
    2009-02-10:

    Kilka losowych spraw...

    easy:blog:funny
    Ostatnio mam trochę na głowie, więc i wpisów na blogu niedużo. Ale stwierdziłem że uzbierało się kilka drobnych tematów które nie zajmą mi za wiele czasu, więc o nich napiszę.

    Czytaj dalej...
    2009-02-02:

    Znowu ktoś zapomniał poprawić generator.

    easy:security:funny
    Dostałem właśnie, na mejla firmowego, taki oto spam:

    Czytaj dalej...
    2009-02-02:

    CloseHandle ciekawsze niż myślałem

    winapi:windows:c++:easy:re
    Sprawiłem sobie parę dni temu książkę "Windows Via C/C++ (Wydanie piąte)" by Jeffrey Richter i Christophe Nasarre, ot tak aby doszlifować moje WinAPI. Pomysł zakupu okazał się bardzo dobry - już na 50 stronie znalazłem pewną przydatną reverserowi ciekawostkę, którą pozwolę sobie zacytować:

    Czytaj dalej...
    2009-01-26:

    CPC464 i kasety

    cpc464:easy
    Kilka dni spokoju ode mnie było (przeziębienie i takie tam). Czas z tym Skończyć :D

    Czytaj dalej...
    2009-01-20:

    Windows 7 - lista zmian w exportach, update

    win7:windows:winapi:easy:re
    Zrobiłem jeszcze parę porównań w exportach między Windowsem Vista SP1, a Windowsem 7 beta.

    Czytaj dalej...
    2009-01-19:

    SIN*COS

    c++:easy:gfx
    Dzisiejszy post nie będzie już o cmd.exe i BATach. Zamiast tego dzisiaj będzie trochę rysowania w C++, a konkretniej rysować będziemy nie my, a funkcje sin oraz cos.

    Czytaj dalej...
    2009-01-16:

    Supportu dla ANSI escape codes w cmd.exe i skryptach BAT

    windows:bat:re:winapi:easy:asm:c:c++
    Begin teh Update

    Czytaj dalej...
    2009-01-14:

    OpenGL w skryptach .BAT

    bat:windows:easy:opengl:c++
    Zgodnie z obietnicą, dzisiaj będzie o wykorzystaniu OpenGL w skryptach .BAT. Chciałbym jednak od razu przypomnieć, że .BAT z szybkością dużo wspólnego nie ma ;> (mimo to pod koniec co nie co o optymalizacji napiszę i tak).

    Czytaj dalej...
    2009-01-11:

    Windows 7 - lista zmian w exportach kernel32.dll

    win7:windows:winapi:easy:re
    W końcu od wczoraj oficjalnie (bo nieoficjalnie już od jakiegoś czasu) można ściągnąć Windows 7 wersję BETA. Ściągnąłem, zainstalowałem (ładnie wygląda), i zacząłem grzebać.

    Czytaj dalej...
    2009-01-03:

    Światłowór - kod z CPC, wnioski

    cpc464:basic:easy
    Noc się skończyła, i dane przesyłane z CPC na PCta również skończyły się przesyłać (zrzut pamięci, jeśli kogoś interesuje, można ściągnąć tutaj). Kod z CPC również przepisałem - listing jest na końcu postu.

    Czytaj dalej...
    W oczekiwaniu na nowy programator (który pewnie przyjdzie "pod koniec tygodnia") stwierdziłem że przydałoby się przerzucić zrzut RAM'u z Amstradzika na PCta. Powstało pytanie - jak to zrobić nie mając żadnych kabelków, dyskietek, etc? Okazuje się że jest pewien (pewnie nie jeden), bardzo zabawny moim zdaniem, sposób ;D

    Czytaj dalej...
    2008-12-30:

    CPC 464

    cpc464:easy:basic
    Ogólnie rzecz biorąc, dobrze jest mieć żonę. A szczególnie taką, która znajduje w przysłowiowej szafie starego Amstrad-Schneider CPC 464 (64k Colour Personal Computer). Tak więc dostałem nową zabawkę (yeey kolejna ciekawa architektura do rozpoznania ;D), o której pewnie kilka postów z czasem się pojawi.

    Czytaj dalej...
    2008-12-29:

    Strzępki kodu

    easy
    W menu po prawej w sekcjach (pod linkami do postów) dodałem link do działu z małymi kawałkami kodu które kiedyś tam naklepałem. Są to raczej proste rzeczy, przeznaczone dla bardziej początkujących czytelników, ale z czasem postaram się tam jakieś ciekawostki też powrzucać.

    Czytaj dalej...
    2008-12-16:

    Malware "kradnący" AppInit_DLLs

    re:malware:windows:security:easy
    W moje ręce dostał się pewien szkodnik, którego najciekawszym punktem był entrypoint użyty do uruchomienia szkodnika po reboocie systemu.

    Czytaj dalej...
    2008-12-07:

    LOOP vs. domyślny assembler na Mac OS X

    assembler:macosx:easy
    Panowie z Apple chyba lubią stare toolsy. Ostatnio grzebiąc z Unavowed'em przy pewnym projekcie (o którym napisze przy innej okazji), a konkretniej, próbując ów projekt przeportować na Mac OS X'a, natrafiliśmy na pewną przeszkodę która przedstawiła się nam jako Apple Inc version cctools-698.1~1, GNU assembler version 1.38. Jest to defaultowy assembler (as) używany na (aktualnym) Mac OS X, i najwyraźniej pamięta on jeszcze czasy gdy na chleb mówiłem 'bep' a na muchy 'tapty' (oby to 1.38 oznaczało tylko inną numeracje, ponieważ - dla porównania, obecna wersja wg. wiki to 2.19, mój MinGW twierdzi że ma wersje 2.18.50, w roku 2000 była wydana wersja 2.11, a w obecnym changelogu as najstarszy wpis dotyczy wersji 1.93.01).

    Czytaj dalej...
    2008-11-06:

    .S.k.y.

    c++:gfx:code:easy
    Niecałe pół roku temu stwierdziłem że przydała by mi się animowana tapetka, generowana realtime, ale bez użycia akceleracji 3D (tj. bez OpenGL/D3D).  Dodatkowymi założeniami był FPS - mógł być bardzo niski, na poziomie 2-3 klatek na sekundę, oraz wykorzystanie kilku core'ów (do 4rech). Jak to w życiu bywa, naklepałem troszkę kodu, po czym zająłem się innymi rzeczami. Efekt może powalający nie wyszedł, ale zdecydowałem się i tak opisać to co mi wyszło - może kogoś to zainteresuje ;> (na obrazki, z wyjątkiem height mapy, można klikać; kod źródłowy dla Windowsa/Maca/Linuxa i filmik są na końcu postu).

    Czytaj dalej...
    Miałem dzisiaj przyjemność prowadzić prelekcje na Wrocławskim spotkaniu ISSA. Prezentacja wraz z filmami dostępna jest tutaj. Wszelkie uwagi mile widziane, szczególnie te krytyczne ;>

    Czytaj dalej...
    2008-10-22:

    Format bug, Vista i %n

    vista:windows:winapi:c:c++:format bug:security:easy
    Rozmawiałem ostatnio z oshogbo z mojego teamu o format bugu, i gdy doszliśmy do testowania przykładowego kodu, okazało się że to co powinno działać - tag %n, nie działa. Co ciekawe, problem wydawał się dotyczyć jedynie Windowsa Vista, ponieważ na XP wszystko śmigało aż miło. Postanowiłem kapkę wgłębić się w problem, i oto co się dowiedziałem...

    Czytaj dalej...
    2008-10-20:

    Ciekawy schemat anty-re

    re:malware:windows:security:easy:winapi
    Jakiś czas temu analizowałem pewien malware, na który nałożony został bardzo ciekawy paker...

    Czytaj dalej...
    2008-10-13:

    Brakująca funkcja gettimeofday i race condition

    c:c++:race condition:windows:easy:winapi
    Dzisiaj będzie post wyrwany z kontekstu. Post będzie dotyczył funkcji gettimeofday na Windowsie, a raczej jej braku.

    Czytaj dalej...
    2008-10-04:

    SekIT 2008 - relacja

    lecture:easy
    Jakoś tak mam zwyczaj ostatnio newsy zaczynać od "no, w końcu mam chwilę czasu żeby coś napisać". Tym razem... nie będzie inaczej ;D

    Czytaj dalej...
    2008-09-30:

    Hacker Challenge 2008

    re:easy:windows
    Wygląda na to że 13 października zaczyna się pierwszy etap Hacker Challenge - amerykańskiego konkursu dla RE. Z tego co widzę w tym roku o połowę obcięli wysokość nagród, widać kryzys faktycznie im zalazł za skórę. Anyway, zachęcam RE do zainteresowania się tym konkursem - wszystkie miejsca są nagradzane.

    Czytaj dalej...
    2008-09-30:

    Security Days - zadanie 3,4

    security:easy
    W piątek w nocy C++ mnie wchłonęło, i wypuściło dopiero w poniedziałek rano (z krótkimi przerwami na sen, i na skok do kina na Babylon A.D., który moim zdaniem jest całkiem niezły, i bardzo klimatyczny, chociaż zakończenie... cóż, widać że studio skróciło film o 70 minut wbrew woli reżysera, nic tylko czekać na wersję reżyserską), więc dopiero teraz kolejny obiecany post hehe.

    Czytaj dalej...
    2008-09-25:

    Security Days 6 - zadanie 2

    security:easy
    Trochę się u mnie sprawy uspokoiły, więc wracam do opisywania zadanek z tegorocznego SD6. Z uwagi na późną godzinę dzisiaj opisze tylko jedno, a opisy kolejnych znajdą się w następnych dniach. Dodam że polskojęzyczni czytelnicy mogą znaleźć rozwiązania na oficjalnym forum SD6, natomiast, z uwagi na to że większość zadań była skonstruowana tak, że istniało kilka rozwiązań, oraz z uwagi na fakt iż mojego bloga czytają również osoby nie związane z językiem polskim, i tak opisze zadanka z SD6 po swojemu ;>

    Czytaj dalej...
    2008-09-15:

    Prezentacja z SekIT 2008

    lecture:easy
    Szybki news. Wrzuciłem na server moją prezentacje (z filmikami) z SekIT (24mb).

    Czytaj dalej...
    Dziś wieczorem rozpoczęła się druga część etapu 1, więc mogę w końcu napisać coś o zadaniu pierwszym.

    Czytaj dalej...
    Post będzie trochę ostrzejszy niż zwykle.

    Czytaj dalej...
    Pod moim postem o sandboxie w Chrome (po angielskiej stronie bloga) wdałem się w dyskusję z AlienRancherem czy hookowanie funkcji (czy tez 'przechwycenia' jak to Google określa) są faktycznie mechanizmem bezpieczeństwa. Szczerze powiem że wydawało mi się że tak, i nawet spodobał mi się ten pomysł. Natomiast okazało się iż faktycznie hookowanie funkcji służy do zapewnienia kompatybilności z pluginami (bo chyba nie samego renderera?) które nie radzą sobie w przyciętym środowisku. Tak na prawdę więc hookowanie funkcji służy ewentualnemu zezwoleniu na dostęp do niektórych plików/kluczy do których plugin w restrykcyjnym środowisku nie miałby dostępu, a do których dostępu by wymagał żeby poprawnie działać.

    Czytaj dalej...
    Przy okazji pojawienia się ponownie informacji o tym że Google Chrome ściąga pliki bez pytania na bugtraq wznowiła się dyskusja o tym czy jest to bug, feature, czy może vuln (luka w bezpieczeństwie).

    Czytaj dalej...
    2008-09-04:

    Sandbox w Google Chrome

    chrome:easy:windows:security:re
    Wczoraj miałem okazję się przyjrzeć 'piaskownicy' zawartej w Google Chrome. Ale po kolei...

    Czytaj dalej...
    2008-09-02:

    Google Chrome - pierwsze wrażenie

    chrome:easy
    Coś dzisiaj szał na pisania o nowo-wydanej przeglądarce Google, więc i ja coś napiszę, a co ;>

    Czytaj dalej...
    2008-08-28:

    Security Days 6

    security:easy
    Hi,

    Czytaj dalej...
    2008-08-26:

    Stare advisory

    security:easy:blog
    Bardzo krótki news...

    Czytaj dalej...
    2008-08-25:

    Metaball, Python+Pygame+Psyco i SDL+C++

    python:c++:easy


    Czytaj dalej...