TEB/PEB (nie tylko) w WOW64 (cz. I)

Pogłębiając swoją wiedzę nad internalsami systemu Windows, moje badania przesunęły się ostatnio trochę w stronę WOW64. Jest to całkiem ciekawy fragment architektoniczny systemu, o którym kiedyś jeszcze mam nadzieję będę pisał, bo wypływa wiele ciekawych rzeczy w trakcie jego analizowania. Przy okazji tego tematu zahaczyłem o struktury bloków danych procesu PEB i wątku TEB, głównie … Czytaj dalej TEB/PEB (nie tylko) w WOW64 (cz. I)

Opublikowano Kategorie /dev/null

Blood2: Analiza cracka

Kolejna część dotycząca mojej starej ulubionej (ostatnio) gry, którą potraktowałem jako narzędzie analizy i zabawy w reverse enginering. Jak wspomniałem w poprzedniej (pierwszej) części, miałem problem ze znalezieniem odpowiedniego programu neutralizującego wymóg posiadania płyty CD. A wszystko na co trafiłem było jednosegmentowymi aplikacjami DOS-a. A jak wiadomo Windowsy 64-bitowe nie posiadają już subsystemu do odpalania … Czytaj dalej Blood2: Analiza cracka

Blood2: Crack me!

Jak zapewne niektórzy zauważyli na moim twitterze, (który staje się mini blogiem), ostatnio – tweet – uruchamiałem taką starą, wspaniałą grę z przełomu milenium, jaką jest Blood2: The Chosen. W młodości trochę w nią grywałem, jakiś sentyment pozostał. A że chciałem się trochę zrelaksować w weekend, a przy okazji spróbować skonteneryzować i uruchomić tą gierkę … Czytaj dalej Blood2: Crack me!

Monitorowanie OPS

W poprzedniej notce, namawiałem do eksperymentów, które mogłyby uprościć proces i implementację przedstawionego tam sposobu limitowania operacji. Wspomniałem o możliwości dodania adekwatnego mechanizmu, który byłby w stanie monitorować dane operacje i wyznaczać wartość określającą ilość wykonywanych operacji (np. na sekundę), czyli mierzenie przepustowości. Obecnie nie planuję implementacji takiego mechanizmu monitorowania, ale temat wydaje się ciekawy, … Czytaj dalej Monitorowanie OPS

Limitowanie OPS

Spędziłem ostatnio trochę czasu nad tematem limitowania operacji wykonywanych w określonym przedziale czasu. Sama idea zapoczątkowana została potrzebą szybkiej implementacji ograniczenia szybkości łącza, czyli typowe limitowanie transferu na potrzeby aplikacji, aby jeden program nie zajmował wszystkich dostępnych zasobów sieciowych. Nie będzie to typowe zagadnienie klasyfikowania, kolejkowania operacji lub kształtowania ruchu. Będzie to przedstawienie bardzo prostej … Czytaj dalej Limitowanie OPS

Odwracanie kolejności w SSE/AVX

W ostatniej notce, o możliwościach zmiany kolejności uporządkowania bajtów i bibliotece ByteOrder, wspomniałem, że w wolnej chwili postaram pobawić się SSE i spróbować, w prosty i w miarę wydajny sposób, zaimplementować operację bswap znaną z 32/64-bitowych rejestrów na rejestrach 128-bitowych, a nawet 256-bitowych. Poniekąd udało mi się to zrobić ;) SSE2 Druga wersja strumieniowych rozszerzeń … Czytaj dalej Odwracanie kolejności w SSE/AVX

ByteOrder – kolejność bajtów

Architektury współczesnych mikroprocesorów powszechnie używają dwóch różnych metod i konwencji przechowywania danych w pamięci, zwane „kolejnością bajtów” (byte order). Niektóre komputery umieszczają najbardziej znaczący bajt w słowie jako pierwszy (big-endian), a inne jako ostatni (little-endian). Przez większość czasu, kolejność bajtów może być ignorowana, programista nie musi się martwić o to, jaki format jest używany, ale … Czytaj dalej ByteOrder – kolejność bajtów

Wykrywanie hardlinków

Hardlinki, inaczej łącza stałe lub dowiązania twarde są alternatywnymi nazwami dla pliku, referencjami wskazującymi istniejący wcześniej obiekt. Niestety nie istnieją żadne metody pozwalające określić, które nazwa lub referencją jest oryginalna, a która dodana później. Wszystkie nazwy/referencje wskazują ten sam blok danych. Dosyć dawno temu starałem się znaleźć prosty sposób na wykrywanie łączy stałych oraz ich … Czytaj dalej Wykrywanie hardlinków

Wielowątkowość w Bashu

Jakiś czas temu pracowałem nad kilkoma agentami/serwisami w bashu – prostymi (choć może nie tak bardzo) skryptami shellowymi, przetwarzającymi sukcesywnie dane oraz wykonywujące pewne określone operacje w miarę napływania do nich zadań. Chcąc usprawnić i przyspieszyć processing, eksperymentowałem i szukałem bardzo prostego sposobu na zrównoleglenie kilku procesów, dokonywujących podobne zadania… Bash sam w sobie nie … Czytaj dalej Wielowątkowość w Bashu

MPU: klasy cech kontenerów STL

Kolejna notatka z serii MPU, opisująca kilka ciekawych konstrukcji zawartych w mistycznym MetaPrograming-Unit. Tym razem o klasach cech opisujących typy kontenerów zawartych w STL. Każdy programista C++ zaznajomiony jest z klasami cech (traits) i ich wielkim potencjałem. Dla tych wszystkich, którzy nie do końca łapią temat, dwa zdania wprowadzające. Klasy cech w C++ są specyficznym … Czytaj dalej MPU: klasy cech kontenerów STL