Zapraszamy do zamówienia magazynu w >>prenumeracie<<. Miesięcznik jest dostępny w formie papierowej, PDF, EPUB i MOBI oraz AZW3. Do prenumeraty papierowej zawsze dołączamy wydania elektroniczne.
BIBLIOTEKI I NARZĘDZIA
Architecture: GynVM, czyli o rozszerzaniu możliwości radare2 słów kilka. Część 1 – przygotowanie środowiska
Na rynku dostępnych jest wiele narzędzi wspomagających inżynierię wsteczną oprogramowania lub – szerzej mówiąc – plików binarnych. Zarówno ich możliwości, jak i ceny są bardzo zróżnicowane. Projekt radare2 (w skrócie r2) służył do analizy i deasemblacji kodu. Przy tym pozostawał do niedawna jedną z najbardziej rozbudowanych opcji darmowego oprogramowania wydawanego na licencji open source. Wszystko to, pomimo wielu niedociągnięć i błędów, które mogą skutkować różnymi podatnościami, zaprezentowanymi między innymi przez Kamila Frankowicza z zespołu CERT.pl. Radare2 udostępniając zarówno interfejs graficzny (Cutter ), jak i CLI oraz rozbudowane API, pozwala na automatyzację pracy i wspiera szeroką gamę architektur – to również jedno z podstawowych narzędzi w arsenale wielu graczy podczas potyczek w zawodach CTF. Niedawno opublikowane oprogramowanie Ghidra wyposażone jest między innymi w dekompilator, którego kod źródłowy właśnie trafił do repozytorium Github, co może wywołać sporo zamieszania w świecie analizy wstecznej i zmusić developerów radare2 do większego wysiłku.
foxtrot_charlie
JĘZYKI PROGRAMOWANIA
Wyrównanie pamięci w C++: koniec (problemów) jest bliski! (>>więcej o tym artykule<<)
Kwestie związane z wyrównaniem pamięci (ang. memory alignment) potrafią mieć niebagatelny wpływ na wydajność kodu, a czasami także na jego stabilność. Jeszcze do niedawna standard języka C++ dość wstrzemięźliwie określał narzędzia, za pomocą których programista mógł specyfikować wyrównanie struktur danych. Lukę uzupełniały same kompilatory, dostarczając – z definicji nieprzenośnych – rozszerzeń i atrybutów. Przenośność można było uzyskać poprzez mozolne i ostrożne implementowanie własnych mechanizmów alokacji pamięci. Dopiero standard C++17 został wzbogacony o elementy umożliwiające przenośne specyfikowanie wymagań dotyczących wyrównania pamięci.
Bartosz Szreder
PROGRAMOWANIE URZĄDZEŃ MOBILNYCH
Eksport kodu źródłowego z projektu Android do pliku HTML przy użyciu skryptu bash
W trakcie nauki programowania lub podczas testowania różnych rozwiązań zwykle tworzymy wiele małych projektów. Później, podczas pracy nad czymś poważniejszym, może pojawić się potrzeba zrobienia czegoś, „co już kiedyś chyba pisaliśmy”. Przeszukiwanie starych projektów będzie łatwiejsze, jeśli dla każdego z nich stworzymy prostą stronę HTML z odpowiednimi linkami. W tym artykule chciałbym zaproponować takie rozwiązanie.
Maciej Wojdak
PROGRAMOWANIE APLIKACJI WEBOWYCH
WebXR – immersyjna rzeczywistość na stronach internetowych
Wirtualna czy rozszerzona rzeczywistość – swego czasu zapowiadane jako rewolucja, która wpłynie na każdy aspekt naszego życia. Korporacje stanęły do wyścigu zbrojeń, dzięki czemu w nasze ręce trafiły takie narzędzia jak HoloLens, Oculus Rift czy Playstation VR. Ostatecznie pomimo całego szumu, jaki występował wokół tych pojęć – wciąż pozostają one niszą lub ciekawostką na stoiskach firm IT podczas targów pracy. Czym zatem w tym wszystkim jest pojęcie WebXR i jakie problemy pomoże nam rozwiązać?
Igor Podlawski
WYWIAD
Rozmowy o Soft Skillach w IT z Michałem Bartyzelem
Chcesz być bezpieczny? Zacznij od zmiany myślenia. Rozmowa z Piotrem Koniecznym
Ucz się i idź na staż, by rozwijać przyszłość!
ALGORYTMIKA
BTree – jak działa i dlaczego nadaje się do baz danych (>>więcej o tym artykule<<)
BTree jest uporządkowaną strukturą danych podobną do zrównoważonego binarnego drzewa przeszukiwań. Podstawowa różnica polega na tym, że węzły w BTree mogą posiadać więcej niż dwoje dzieci. Drzewiasta forma sprawia, że podstawowe operacje, takie jak wstawianie, usuwanie i wyszukiwanie elementu, zajmują czas proporcjonalny do wysokości drzewa, czyli O(log(liczba elementów w strukturze)). Zwiększone rozgałęzienie BTree sprawia, że jego wysokość jest zdecydowanie mniejsza niż wysokość zrównoważonego binarnego drzewa przeszukiwań zawierającego te same elementy. Sprawia to, że – mimo tej samej klasy złożoności operacji na tych strukturach danych – BTree w wielu zastosowaniach, takich jak bazy danych czy systemy plików, charakteryzuje się znacząco większą wydajnością.
Piotr Jastrzębski
Wybrane algorytmy i struktury danych. Część 5
Z perspektywy algorytmów i struktur danych żywot przeciętnego programisty jest dosyć nudny, bo zamyka się przeważnie na generycznej wersji List.
Tymczasem my zostawiliśmy ten typ już daleko za sobą i zdążyliśmy poznać znacznie więcej ciekawych struktur, jak na przykład listy, kopce, tablice haszujące czy drzewa. Czas wykonać kolejny krok – tym razem poznamy jedną z najbardziej elastycznych struktur danych, jaką jest graf.
Wojciech Sura
INŻYNIERIA OPROGRAMOWANIA
Event Storming – pierwszy krok do DDD? (>>więcej o tym artykule<<)
Chaos w projekcie. Odwieczne starcia programistów z ludźmi „od biznesu”. Legacy takie, że strach patrzeć. Greenfield robiony na hura. Takie sytuacje znamy wszyscy. A gdyby tak spróbować do analizy wymagań projektowych podejść w sposób nieco inny, nastawiony na wymianę informacji między programistami a biznesem? To właśnie myśl przewodnia Event Stormingu. Z tego artykułu dowiemy się, czym jest Event Storming, jak przebiega i jakie korzyści może wnieść do naszego projektu.
Justyna Klimaszewska-Stępniewska
Model C4, czyli cztery kroki do udokumentowania architektury oprogramowania
Czy można zobrazować i udokumentować architekturę oprogramowania w zaledwie czterech krokach? Zgodnie z założeniami modelu C4 większość systemów można przedstawić za pomocą maksymalnie czterech diagramów w sposób na tyle szczegółowy, że umożliwi on implementację architektury
systemowej przez zespoły programistyczne. Postanowiliśmy sprawdzić te założenia – przedstawiamy zarówno zasady dokumentowania architektury, jak i szczegółowy przykład użycia C4 w praktyce.
Krzysztof Grel, Justyna Klimaszewska-Stępniewska
STREFA CTF
Writeup Watchmen – CONFidence 2019 Teaser
Niedawno – po roku przerwy – odbył się kolejny CTF z marką CONFidence. Tym razem zmienił się organizator – zamiast drużyny Dragon Sector1 (który zajmuje się organizowaniem Dragon CTF na konferencji PWNing3) konkurs został przygotowany przez zespół p4. Na zawodników czekało 16 zadań z różnych kategorii. Najliczniej reprezentowana była kategoria „reverse engineering” i to na zadaniu właśnie z tej kategorii skupimy się w poniższym artykule.
Jarosław Jedynak
KLUB DOBREJ KSIĄŻKI
C++. Podróż po języku dla zaawansowanych. Wydanie II
Rafał Kocisz