REKLAMA

Programista 12/2017 (67) – Techniki wstrzykiwania kodu do procesów Windows – spis treści

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. Wydanie dostępne jest też w salonach Empik do końca lutego 2017 r.

JĘZYKI PROGRAMOWANIA

Java 8 dla Androida (>>więcej o tym artykule<<)

Premiera Javy w wersji 9 już za nami, tymczasem programiści Androida wciąż zmuszeni są do korzystania z wersji 7. Przez pewien czas Google próbowało wprowadzić możliwość pisania aplikacji w Javie 8 przy użyciu Jacka, ale w końcu wycofali się z tego pomysłu i narzędzie to przestało być wspierane. W odpowiedzi na zapotrzebowanie na nowoczesny język programowania Android Studio w wersji 3 wprowadza pełne wsparcie dla języka Kotlin, opracowanego przez ekipę z JetBrains. Aby jednak programiści, którzy chcą pozostać przy Javie, nie czuli się zostawieni samym sobie, wprowadzono również częściowe wsparcie dla mechanizmów językowych obecnych w Javie 8.

Wojciech Sura

PROGRAMOWANIE URZĄDZEŃ MOBILNYCH

Programowanie aplikacji dla tvOS z wykorzystaniem Xamarin

Apple TV to cyfrowy odtwarzacz multimedialny, który umożliwia oglądanie treści multimedialnych w technologii 4K HDR. Apple TV jest kontrolowany przed dedykowany system operacyjny tvOS, udostępniający interfejs programistyczny, który pozwala programistom tworzyć aplikację na tę platformę. W tym artykule opiszę, w jaki sposób można implementować takie aplikacje za pomocą Visual Studio for Mac i narzędzi Xamarin.

Dawid Borycki

PROGRAMOWANIE SYSTEMOWE

Czas na przerwanie (>>więcej o tym artykule<<)

Obsługa przerwań jest jedną z kluczowych operacji, z jaką musi poradzić sobie system operacyjny. Implementacja przerwań w Linuksie jest zależna od architektury całego systemu, a w szczególności od procesora, kontrolera/kontrolerów przerwań i sposobu ich połączenia. Niniejszy artykuł podzielony jest na dwie części. W pierwszej krótko opisano popularnie stosowany w systemach ARMowych kontroler przerwań GIC. Druga natomiast traktuje o obsłudze przerwań w Linuksie, przybliżając takie zagadnienia jak: domeny przerwań, połączenia kaskadowe, rozdzielenie obsługi przerwania na części (tzw. top, bottom halves), a także trasowanie przerwań. W artykule przybliżono zarówno mechanizmy generyczne, jak i zależne od architektury – skupiono się głównie na SoCach ARM/ARM64 oraz kontrolerach przerwań typu GIC.

Grzegorz Jaszczyk

PROGRAMOWANIE APLIKACJI WEBOWYCH

Progressive Web Apps – aplikacje webowe offline

Czy aplikacja webowa może działać offline, zachowując swoją funkcjonalność? Czy może z powodzeniem zastąpić natywną aplikacje mobilną? Jeszcze wczoraj odpowiedzielibyśmy dwa razy „nie”, ale dziś mamy zupełnie inne możliwości. W tym artykule pokażę, jak przy użyciu najnowszych przeglądarek internetowych oraz odrobiny JavaScriptu tchnąć życie w aplikacje webowe nawet po ich odłączeniu od sieci.

Paweł Łukaszuk

INŻYNIERIA OPROGRAMOWANIA

Tajemnica fraktali

Fraktale były znane człowiekowi jeszcze w czasach, zanim opisali je matematycy. Wielu artystów wykorzystywało w swoich pracach elementy, które składały się z mniejszych identycznych składników. W otaczającej nas przyrodzie istnieje sporo naturalnych fraktali. Takimi przykładami są rośliny, np. paproć, drzewa, brokuł – który składa się z coraz mniejszych odpowiedników dużego kwiatu. Podobnie wyglądają liście paproci. Celem napisania artykułu jest wyjaśnienie czytelnikowi matematycznych podstaw konstruowania fraktali w przystępny sposób oraz wyjaśnienie sensu badań nad nimi. W artykule zaprezentowano także przykład kodu, który można wykorzystać w celu tworzenia fraktali w liczbach zespolonych. Zakładamy, że czytelnik zna podstawowe pojęcia analizy matematycznej.

Marek Żukowicz

Modelowanie domeny z użyciem Entity Framework Core 2.0

Dobre praktyki DDD zalecają separację modelu dziedzinowego od modelu danych. Długi czas programiści .NET korzystający z Entity Framework mieli z tym problem, gdyż nie istniał łatwy sposób na pozbycie się publicznych getterów/setterów czy kluczy głównych/ obcych z encji w modelu dziedziny. W artykule zilustrowano, w jaki sposób możemy wykorzystać Entity Framework Core 2 do implementacji modeli domenowych w jak największym stopniu niezależnych od bazy danych czy biblioteki ORM.

Marek Zając

TESTOWANIE I ZARZĄDZANIE JAKOŚCIĄ

Źródła niestabilności w automatycznych testach regresyjnych
Jak ich unikać i co zrobić, gdy już wystąpią

W pracy testera automatyzującego niezwykle ważna jest jakość tworzonego przez niego kodu, tak żeby był on stabilny, działał poprawnie, weryfikował działanie testowanego systemu, a co najważniejsze – dawał pewność wszystkim członkom projektu, że jest w stanie pokazywać faktyczny stan jakości testowanej aplikacji. Nierzadko dzieje się tak, że testy regresyjne działają w sposób losowy albo nasza regresja jest ciągle czerwona i zieleni się dopiero tuż przed wydaniem aplikacji. W niniejszym artykule chciałbym pochylić się nad przyczynami takiego stanu i zaproponować pewne metody jego unikania oraz naprawiania, jeśli taka sytuacja już zaistnieje.

Wojciech Tański

BEZPIECZEŃSTWO

Techniki wstrzykiwania kodu do procesów Windows (>>więcej o tym artykule<<)

Umieszczanie złośliwego kodu w nieszkodliwych procesach jest szeroko wykorzystywaną funkcjonalnością złośliwego oprogramowania w celu obchodzenia systemów AV/HIPS. Pierwsze techniki tego typu pojawiły się ponad 15 lat temu i „z marszu” zdobyły uznanie wśród osób skupionych wokół tematyki tworzenia malware’u. Przez ostatnie dwa lata pojawiły się dwie nowe techniki, wykorzystujące zapomniane mechanizmy Windows, które pozwalają na uruchomienie kodu tylko z pamięci operacyjnej. Umieszczenie pliku wykonywalnego w systemie plików ofiary nie jest wymagane – jest to tzw. „fileless malware”. Nietrudno się domyślić, że wszystkie mechanizmy heurystyczne silników antywirusowych nie miały żadnych szans w starciu z nimi. W tym artykule omówię najpopularniejsze oraz najnowsze mechanizmy służące do ukrywania kodu pośród nieszkodliwych procesów wraz z przykładowymi implementacjami.

Kamil Frankowicz

STREFA CTF

SECCON 2017 Quals – SqlSRF

Czytelnicy magazynu „Programista”, szczególnie ci trochę starsi, mogą pamiętać jeszcze perełkę polskiej kinematografii w postaci filmu „Haker” z roku 2002. Sam film nie odniósł co prawda wielkiego sukcesu, a średnia ocen 5.3/10 w serwisie filmweb.pl raczej nie zachęca do jego oglądania, niemniej zapisał się on na kartach historii słynną sceną, podczas której dwóch hakerów omawia potencjalne metody ataku na mocno zabezpieczony serwer. Jedna z postaci sugeruje wtedy przeprowadzenie ataku „emacsem przez sendmail”, którego szczegóły po dziś dzień nie są niestety znane. Nie jesteśmy, co prawda, w stanie rozwikłać tej tajemnicy, ale w poniższym artykule przedstawimy zbliżony tematycznie atak „wgetem przez postfixa” jako rozwiązanie dla zadania SqlSRF z tegorocznych kwalifikacji do japońskich zawodów SECCON.

Stanisław Podgórski, Michał Praszmo