Magazyn Programista 4/2014

Ukazało się nowe wydanie magazynu Programista 4/2014, którego tematem przewodnim jest .NET Micro Framework.

Magazyn Programista 4/2014

W numerze:

  • Spring Data JPA – jeszcze prostszy dostęp do bazy danych
  • Nasz własny dodatek do przeglądarki Google Chrome
  • Wzorce komunikacji w Cocoa Objective-C
  • Szybka grafika 2D: w głąb króliczej nory
  • Samouczek MonoGame, część 1: podstawowe koncepcje grafiki 3D
  • Screen-Space Ambient Occlusion – metoda symulowania globalnego oświetlenia przy pomocy techniki postprocessing
  • Biblioteka .NET Micro Framework. Programowanie elektroniki dla programistów C#
  • Jak napisać własny debugger w systemie Windows – część 3
  • Brakujący element Agile. Część 3: Coaching
  • Kierunek biznes
  • Zdobyć flagę… PlaidCTF 2014 – zfs
  • Jak całkowicie odmienić sposób programowania, używając refaktoryzacji (część 8)

Obfuscator v2.0

Właśnie wydałem nową wersję swojego oprogramowania Obfuscator v2.0.

Obfuscator służy do modyfikacji kodu źródłowego assemblera (dla składni MASM), w taki sposób, aby wynikowy kod był jak najbardziej skomplikowany do analizy.

Główne okno Obfuscatora

Do tego celu Obfuscator stosuje wiele metod jak:

  • mutacja instrukcji assemblera na serię innych równoznacznych instrukcji
  • zmiana wykonywania ścieżki kodu na nielinearną (skoki w górę i w dół w codeflow)
  • wstawianie nieinwazyjnych konstrukcji kodu utrudniających statyczną i dynamiczną analizę
  • ukrywanie bezpośrednich wywołań funkcji WinAPI
  • wstawianie junków między prawdziwe instrukcje
  • wstawianie fałszywych instrukcji
  • wstawianie celowych wyjątków i bramek SEH, które te wyjątki wyłapują, a utrudniają tracing
  • rozpoznawanie ponad 15000 stałych WinAPI i ich zamiana na postać liczbową, co pozwala mutację instrukcji je wykorzystujących

Kod wyjściowy po zastosowaniu Obfuscatora

Obfuscator to niszowe narzędzie, które stworzyłem dosyć dawno temu w PHP, a obecnie przeszło gruntowne zmiany, praktycznie cały silnik został przepisany, poprawiona została analiza kodu źródłowego, mutacje bazujące na matematycznych transformacjach zostały przepisane z wykorzystaniem biblioteki GMP dla zachowania kompatybilności z typem danych unsigned int, z którym PHP sobie po prostu nie radzi. Dodałem także rozpoznawanie stałych wartości wykorzystywanych w funkcjach WinAPI jak np. MB_ICONINFORMATION, które zostają zamienione na wartości liczbowe, dzięki czemu instrukcje je wykorzystujące mogą być poddane mutacjom.

Jeśli jesteście ciekawi jak to działa, zajrzyjcie na stronę programu, gdzie możecie ściągnąć klienta dla systemu Windows:

https://www.pelock.com/products/obfuscator

Znajdziecie tam też przykładowy skompilowany plik EXE przed i po zastosowaniu Obfuscatora – polecam spojrzeć na kod w IDA, Hiew i spróbować pośledzić go w OllyDbg.

Jeśli macie jakieś pytania, sugestie lub zastrzeżenia – piszcie w komentarzach.

Cybergłupota

Jak wygląda cyberwojna według Gazeta.pl?

Cyberwojna

Cyberwojownicy szykujcie się na studia!

„Nowe kierunki mają rozwijać narodową kryptologię, co doprowadzi do powstania innowacji i własnych, narodowych technologii w zakresie cyberbezpieczeństwa”

Odpowiedź na ten paragraf zamieściłem w tagach postu bo już mi się pisać nie chcę o takich głupotach na co idą podatki skoro sprawdzone rozwiązania dostępne są za darmo…

Magazyn Programista 02/2014 (21)

Wyszedł nowy numer magazynu Programista 02/2014 (21).

magazyn-programista-02-2014

Spis treści:

  • Interface a implementacja
  • Wstęp do WPF – część 2: Stylowanie kontrolek w WPF
  • ASP.NET SignalR – czyli aplikacje czasu bardzo rzeczywistego. Część 2
  • Java 8 – najbardziej rewolucyjna wersja w historii
  • Początki z językiem Fortran
  • Concepts Lite. Rozszerzenie standardu C++14
  • Jak napisać własny debugger w systemie Windows – część 1
  • Badanie jakości kodu C++
  • Refaktoryzacja testów legacy w kierunku wykonywalnych specyfikacji. Część II: Techniki ułatwiające utrzymanie testów
  • Brakujący element Agile Część 1: Feedback
  • Szczyt za szczytem
  • Ghost in the Shellcode 2014 – Pwn Adventure 2
  • Jak całkowicie odmienić sposób programowania, używając refaktoryzacji (część 6)

Filtr na trolla

Bycie trollem internetowym ma swoje plusy i minusy, można kogoś zbluzgać bez powodu i cieszyć się swoją głupotą, czasami jednak administratorzy stron walczą z trollami stosując wymyślne filtry.

Tak jest lub było w przypadku wykrywania znanego „klaczowego” trolla okupującego swego czasu forum 4programmers, sprytny administrator Adam Boduch postanowił walczyć z twórczością trolla stosując taki oto wymyślny filtr:

<?php

/* ... */

Wrapper\Engine::instance()->atInit(function($engine) {
    $is_troll_z_play = has_troll_cookie();

    if ($_SERVER['REQUEST_METHOD'] === 'POST' && @$_GET['mode'] === 'submit') {
        if (isset($_POST['username']) && isset($_POST['content'])) { // tylko anonimow
            $matches_nick = troll_count_matches($_POST['username'], array(
                '/deus/i'               => 2.0,
                '/klacz/i'              => 2.0,
                '/demonical.?monk/i'    => 2.0
            ));
            $pattern_body = array(
                '/(?<!u)rucha/i'        => 1.0,
                '/klacz/i'              => 1.0,
                '/kutas/i'              => 1.0,
                '/sra/i'                => 1.0,
                '/g(ó|o)wn/i'          => 1.0,
                '/sperm/i'              => 1.0,
                '/ss(a|ie)/i'           => 0.5,
                '/wyli(z|ż)/i'         => 0.5,
                '/stajni/i'             => 0.5,
                '/zoofil/i'             => 0.5
            );
            $matches_body = troll_count_matches($_POST['content'], $pattern_body);

            if (isset($_POST['subject'])) { // nowy temat
                $matches_body += 1.5 * troll_count_matches($_POST['subject'], $pattern_body);
                $matches_body += 1.5 * troll_count_matches($_POST['tag'], $pattern_body);
            }
            if ($matches_nick + $matches_body > 2 || has_troll_cookie()) {
                $is_troll_z_play = true;

                $engine->log('contents.log', array(
                    'username'  => $_POST['username'],
                    'content'   => $_POST['content'],
                    'title'     => @$_POST['title'],
                    'tag'       => @$_POST['tag']
                ));
            }
        }
    }
    if ($is_troll_z_play) {
        define('TROLL_Z_PLAY', true);

        unset($_COOKIE['sid']);
        unset($_COOKIE['temp']);
    }
});

/* ... */

Regularne wyrażenia w połączeniu z systemem punktacji pozwoliły raz na zawsze pozbyć się trolla z forum, a Wam prezentuję to jako znakomity pomysł na wykrywanie tego typu niechcianych treści na stronach.

Magazyn Programista 1/2014

Ukazał się nowy numer miesięcznika Programista 1/2014.

Magazyn Programista 1/2014

W numerze:

  • Wprowadzenie do Entity Framework
  • Jak używać IBM Worklight – część 2
  • Wstęp do WPF – część 1
  • Web Crawling oraz Text Mining przy wykorzystaniu RapidMiner
  • PLY oraz Python, czyli sposób na Lexa oraz Yacca
  • Tworzenie usługi sieciowej opartej o Twisted
  • Automatyczne Testowanie Aplikacji JavaScript na przykładzie aplikacji napisanej w Backbone.JS
  • Zakodowana pomoc
  • Receptury projektowe – niezbędnik początkującego architekta
  • Strefa CTF – 30C3 CTF – cableguy
  • Pozyskaj pracownika albo zgiń!
  • Systemy proste, skomplikowane, złożone i chaotyczne, czyli Cynefin.
  • Programowanie równoległe i asynchroniczne w C# 5.0

Zachęcamy do lektury!