Shellcode: moje eksperymenty

Nigdy nie zajmowałem się szczególnie tematyką security, nie interesowało mnie pisanie czy zabawa z shellcode-ami czy exploit-ami. Za to często zdarzają mi się różne eksperymenty, które w wielu przypadkach są dobrym sposobem na poznanie nowych rzeczy. A także pomagają ugruntować swoją wiedzę i przekonania. Bo pomimo, że wiem co i jak w teorii oraz praktyce, … Czytaj dalej Shellcode: moje eksperymenty

Opublikowano Kategorie /dev/null

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

Bezpieczne iteratory

Od wersji 2005 Visual C++ posiada opcje sprawdzania ważności iteratorów. Nie będę tu produkował tekstu opisującego jak to dokładnie działa, na stronach MSDN można znaleźć kilka artykułów na ten temat: Checked Iterators, Debug Iterator Support. W wersji debug aplikacji, program poczęstuje nas assertami, kiedy spróbujemy wykonać jakąś operacje na iteratorze bądź funkcji go wykorzystującej, w … Czytaj dalej Bezpieczne iteratory

Pointer to iterator II

Kontynuując temat konwersji wskaźnika do iteratora z poprzedniej notki, chciałbym rzucić nieco więcej światła i nowych spostrzeżeń jakie mnie naszły po popełnieniu wspomnianego wpisu, po którym nie mogłem spokojnie zasnąć ;) Rewidując ponownie ten problem pod katem wydajnościowym i nie tylko doszedłem do wniosku, że w ogóle taka operacja jest bez sensu, uzycie takiej operacji … Czytaj dalej Pointer to iterator II

Pointer to iterator

Czym jest iterator w STL każdy wiedzieć powinien. Mogę wspomnieć ze jest to typ z zachowaniem podobnym do wskaźnika, który służy do poruszania się po kontenerach biblioteki standardowej, ale nie jest to wskaźnik, mimo iż w większości implementacjach jest to opakowany w obiekt wskaźnik. Kilka flejmów na ten temat można znaleźć w usenetowych archiwach pl.comp.lang.c … Czytaj dalej Pointer to iterator

Prosty object tracing

Potrzebowałem w prosty sposób i łatwy sposób logować moment tworzenia i niszczenia obiektów. W najprostszym wypadku wystarczyłoby przeciążyć operator new i delete, ale wtedy logowanie dotyczyłoby tylko obiektów tworzonych na stercie. A ja chce i stos, i stertę ;) No to wystarczy w konstruktorze i destruktorze umieścić wywołanie funkcji logującej i problem znika. Tylko, że … Czytaj dalej Prosty object tracing

Alpha blending

Potrzebowałem uzyskać jak najprostszym sposobem efekt alpha blendingu, a z racji, że nie miałem o tym pojęcia, i nadal zbytnio nie mam o grafice 2/3D próbowałem zaczerpnąć informacji w niezliczonych zasobach sieciowych ;) Szukałem jakiegoś prostego sposobu wyznaczania średniej wartości składowej koloru danego piksela. W różnych źródłach znalazłem kilka różnych działań obliczających tą wartość, od … Czytaj dalej Alpha blending

Dwuwymiarowe tablice dynamiczne

Potrzebuje jakiejś ciekawej, prostej i optymalnej implementacji tablicy dwuwymiarowej do przechowywania prostych elementów lub wskaźników. Najprostszym rozwiązaniem byłoby wykorzystanie kontenerów z STL: std::vector<std::vector<Element*> > array Szybko i prosto, tylko używać. Ale pojawia się problem, bo chciałbym, aby pojedyncza linia zachowywała się jak czysta tablicą w stylu C (wymagania API). Także można by bez problemu zastosować … Czytaj dalej Dwuwymiarowe tablice dynamiczne