Recenzje

Cpp. Elementarz hakera

Już jakiś czas temu zainteresowałem się pisaniem programowaniem w języku c++ i zacząłem szukać książki, która nauczy mnie podstaw. W księgarni znalazłem kilka książek na ten temat, ale moją uwagę zwrócił jeden tytuł. „C++ Elementarz hakera” to brzmi ciekawie. Kupiłem ją i od razu zabrałem się za czytanie. Oto co w niej znalazłem.

C++ Elementarz hakera


Napisał: Michael Flenov
Przetłumaczył: Przemysław Szeremiota
Rok wydania: 2005
Zawiera CD: Tak
Cena: ok 40zł

cpelha.jpg

"C++. Elementarz hakera" -- spis treści:

Wstęp (7)

Wprowadzenie (9)


    * O książce (9)
    * Kim jest haker? Jak zostać hakerem? (11)

Rozdział 1. Jak uczynić program zwartym, a najlepiej niewidzialnym? (19)

    * 1.1. Kompresowanie plików wykonywalnych (19)
    * 1.2. Ani okna, ani drzwi... (24)
    * 1.3. Wnętrze programu (30)
          o 1.3.1. Zasoby projektu (31)
          o 1.3.2. Kod źródłowy programu (33)
    * 1.4. Optymalizacja programu (43)
          o Zasada 1. Optymalizować można wszystko (44)
          o Zasada 2. Szukaj wąskich gardeł i słabych ogniw (44)
          o Zasada 3. W pierwszej kolejności optymalizuj operacje często powtarzane (45)
          o Zasada 4. Pomyśl dwa razy, zanim zoptymalizujesz operacje jednorazowe (47)
          o Zasada 5. Poznaj wnętrze komputera i sposób jego działania (48)
          o Zasada 6. Przygotuj tabele gotowych wyników obliczeń i korzystaj z nich w czasie działania programu (49)
          o Zasada 7. Nie ma niepotrzebnych testów (50)
          o Zasada 8. Nie bądź nadgorliwy (50)
          o Podsumowanie (51)
    * 1.5. Prawidłowe projektowanie okien (51)
          o 1.5.1. Interfejs okna głównego (54)
          o 1.5.2. Elementy sterujące (55)
          o 1.5.3. Okna dialogowe (55)

Rozdział 2. Tworzenie prostych programów-żartów (61)

    * 2.1. Latający przycisk Start (62)
    * 2.2. Zacznij pracę od przycisku Start (71)
    * 2.3. Zamieszanie z przyciskiem Start (73)
    * 2.4. Więcej dowcipów z paskiem zadań (76)
    * 2.5. Inne żarty (83)
          o Jak "zgasić" monitor? (83)
          o Jak uruchamiać systemowe pliki CPL? (83)
          o Jak wysunąć tackę napędu CD-ROM? (84)
          o Jak usunąć zegar z paska zadań? (86)
          o Jak ukryć cudze okno? (86)
          o Jak ustawić własną tapetę pulpitu? (87)
    * 2.6. Berek z myszą (88)
          o Szalona mysz (88)
          o Latające obiekty (89)
          o Mysz w klatce (90)
          o Jak zmienić kształt wskaźnika myszy? (91)
    * 2.7. Znajdź i zniszcz (92)
    * 2.8. Pulpit (93)
    * 2.9. Bomba sieciowa (94)

Rozdział 3. Programowanie w systemie Windows (97)

    * 3.1. Manipulowanie cudzymi oknami (97)
    * 3.2. Gorączkowa drżączka (102)
    * 3.3. Przełączanie ekranów (103)
    * 3.4. Niestandardowe okna (107)
    * 3.5. Finezyjne kształty okien (113)
    * 3.6. Sposoby chwytania nietypowego okna (119)
    * 3.7. Ujawnianie haseł (121)
          o 3.7.1. Biblioteka deszyfrowania haseł (122)
          o 3.7.2. Deszyfrowanie hasła (126)
          o 3.7.3. Obróćmy to w żart (128)
    * 3.8. Monitorowanie plików wykonywalnych (130)
    * 3.9. Zarządzanie ikonami pulpitu (132)
          o 3.9.1. Animowanie tekstu (133)
          o 3.9.2. Odświeżanie pulpitu (134)
    * 3.10. Żarty z wykorzystaniem schowka (134)

Rozdział 4. Sieci komputerowe (139)

    * 4.1. Teoria sieci i protokołów sieciowych (139)
          o 4.1.1. Protokoły sieciowe (141)
                + Protokół IP (142)
                + Protokół ARP a protokół RARP (143)
          o 4.1.2. Protokoły transportowe (143)
                + Protokół UDP - szybki (143)
                + Protokół TCP - wolniejszy, ale solidniejszy (144)
                + TCP - zagrożenia i słabości (145)
          o 4.1.3. Protokoły warstwy aplikacji - tajemniczy NetBIOS (145)
          o 4.1.4. NetBEUI (146)
          o 4.1.5. Gniazda w Windows (147)
          o 4.1.6. Protokoły IPX/SPX (147)
          o 4.1.7. Porty (148)
    * 4.2. Korzystanie z zasobów otoczenia sieciowego (148)
    * 4.3. Struktura otoczenia sieciowego (151)
    * 4.4. Obsługa sieci za pośrednictwem obiektów MFC (158)
    * 4.5. Transmisja danych w sieci za pośrednictwem obiektu CSocket (165)
    * 4.6. Bezpośrednie odwołania do biblioteki gniazd (174)
          o 4.6.1. Obsługa błędów (175)
          o 4.6.2. Wczytywanie biblioteki gniazd (175)
          o 4.6.3. Tworzenie gniazda (179)
          o 4.6.4. Funkcje strony serwera (180)
          o 4.6.5. Funkcje strony klienta (184)
          o 4.6.6. Wymiana danych (186)
          o 4.6.7. Zamykanie połączenia (191)
          o 4.6.8. Zasady stosowania protokołów bezpołączeniowych (192)
    * 4.7. Korzystanie z sieci za pośrednictwem protokołu TCP (194)
          o 4.7.1. Przykładowy serwer TCP (194)
          o 4.7.2. Przykładowy klient TCP (199)
          o 4.7.3. Analiza przykładów (202)
    * 4.8. Przykłady wykorzystania protokołu UDP (204)
          o 4.8.1. Przykładowy serwer UDP (204)
          o 4.8.2. Przykładowy klient UDP (205)
    * 4.9. Przetwarzanie odebranych danych (207)
    * 4.10. Wysyłanie i odbieranie danych (209)
          o 4.10.1. Funkcja select (210)
          o 4.10.2. Prosty przykład stosowania funkcji select (211)
          o 4.10.3. Korzystanie z gniazd za pośrednictwem komunikatów systemowych (213)
          o 4.10.4. Asynchroniczna wymiana danych z wykorzystaniem obiektów zdarzeń (220)

Rozdział 5. Obsługa sprzętu (223)

    * 5.1. Parametry podsystemu sieciowego (223)
    * 5.2. Zmiana adresu IP komputera (229)
    * 5.3. Obsługa portu szeregowego (234)
    * 5.4. Pliki zawieszające system (239)


Rozdział 6. Sztuczki, kruczki i ciekawostki (241)

    * 6.1. Algorytm odbioru-wysyłania danych (242)
    * 6.2. Szybki skaner portów (245)
    * 6.3. Stan portów komputera lokalnego (252)
    * 6.4. Serwer DHCP (257)
    * 6.5. Protokół ICMP (260)
    * 6.6. Śledzenie trasy wędrówki pakietu (267)
    * 6.7. Protokół ARP (273)


Podsumowanie (283)

Skorowidz (285)


Moja opinia


Książka według mnie jest dobra. Przygotowuje ona „młode” pokolenie programistów (bo do nich jest skierowana) jak się powinno pisać programy dla systemu Windows. Na stronie helion.pl istniejący tam opis mówi, że jest to książka, która uczy pisania niestandardowych programów w niestandardowy sposób. Jest to prawda. Po przeczytaniu ów książki jesteśmy w stanie napisać program, który „podrzuca” przycisk START, chowa / pokazuje zegar systemowy, które uczą niestandardowego podejścia do programowania oraz bardziej użyteczne takie jak skaner portów oraz program o niestandardowym wyglądzie. Może te programy nie są efektowne czy efektywne ale uczą „kombinowania” to znaczy próbowania tworzenia aplikacji w jak najbardziej efektywny sposób nie opierając się na wytartych szlakach.

Aczkolwiek, żeby zasiąść przed tą książką należy przynajmniej w stopniu podstawowym znać język C++, choć autor tego nie wymaga. „Zielonej” osobie na początku będzie ciężko zrozumieć kod i to co się dzieje za jego pomocą.

Ja mam dobre wspomnienia po przeczytaniu całej książki. Pokazała mi inne drogi programowania, których próżno szukać w kursach itp. Gorąco polecam, bo książka nie jest droga (ok. 40 PLN) a można się z niej dużo nauczyć.

Dlaczego jeszcze warto sięgnąć po tą książkę? Ponieważ jest ona wypełniona w jak najmniejszej części teorią a jak największą częścią przykładami praktycznymi. Są one dobrze opisane i nawet początkujący programista jest w stanie zrozumieć. Myślę, że słowo "Elementarz" w tytule jest adekwatne do treści lektury, ponieważ nie omawia ona jakieś zaawansowane tajniki jeśli chodzi o programowanie, tylko podstawowe instrukcje (najczęściej WinApi) wykorzystane w trochę inny sposób.

Książka zawiera również płytę CD z wszystkimi przykładami z książki (a jest ich trochę) oraz kilka użytecznych programów.

Podsumowanie


Książka jest całkiem dobra, bo opisuje ciekawe rozwiązania w prosty i przejrzysty sposób wykonania. Jednakże pasowałoby, żeby osoba chcąca ją przeczytać miała chociaż zielone pojęcie o C++ i WinApi.

Pozdrawiam

no_solution_found

8 komentarzy

Dynax 2008-03-23 13:59

Mam tą ksiązke i muszę powiedzieć, że gorszej książki dawno nie czytałem :)

jrCoder 2007-09-08 10:10

Ciekawa książka. Inna niż większość tytułów o C++. Zamiast Hello World na 100 sposobów są przykłady programów takich jak choćby te które Wolverine uznał za żenujące. Może gdyby "opakowanie" (tytuł, okładka) było inne to traktowana byłaby bardziej serio.

Marooned 2007-09-07 17:33

"Nu pogodi!" rządzi - Wilk i Zająć wiecznie żywi (teraz to ksywki znanych rosyjskich hakerów) :D

no_solution_found 2007-09-07 15:54

a przeczytałeś przynajmniej wstęp tej książki?

W wprowadzeniu (s. 11) autor opisuje kim wg niego jest haker i wiesz co? To co autor próbuje w tej książce wpoić czytelnikowi pokrywa się z tym co Ty chcesz mi wmówić. Widocznie zasugerowałeś się słowem "haker" w tytule nie mając pojęcia o treści. Michael Flenov też starał się rozróżnić słowo haker i cracker i wyjaśnić, że haker to nie osobą, która łamie zabezpieczenia dla własnej korzyści tylko żeby dowiedzieć się jak dany proces działa.

no_solution_found 2007-09-07 08:56

Wolverine: a kim wg Ciebie jest haker??

Spine: rzeczywiście, ale to jest najwyraźniej taki chwyt marketingowy - żeby więcej osób ją kupiła, a taki napis zachęci czytelników do zakupu książki.

Spine 2007-09-06 14:10

Ciekawy jest też napis na okładce "Elita rosyjskich hakerów prezentuje" :D Przecież to żadna elita :P Elita by się nie ośmieszała w ten sposób...

Wolverine 2007-09-06 12:11

Rozdział 2. Tworzenie prostych programów-żartów (61)

    * 2.1. Latający przycisk Start (62)
    * 2.2. Zacznij pracę od przycisku Start (71)
    * 2.3. Zamieszanie z przyciskiem Start (73)
    * 2.4. Więcej dowcipów z paskiem zadań (76)
    * 2.5. Inne żarty (83)
          o Jak "zgasić" monitor? (83)
          o Jak uruchamiać systemowe pliki CPL? (83)
          o Jak wysunąć tackę napędu CD-ROM? (84)
          o Jak usunąć zegar z paska zadań? (86)
          o Jak ukryć cudze okno? (86)
          o Jak ustawić własną tapetę pulpitu? (87)
    * 2.6. Berek z myszą (88)
          o Szalona mysz (88)
          o Latające obiekty (89)
          o Mysz w klatce (90)
          o Jak zmienić kształt wskaźnika myszy? (91)
    * 2.7. Znajdź i zniszcz (92)
    * 2.8. Pulpit (93)
    * 2.9. Bomba sieciowa (94)

Zenada. Jak rowniez to, ze podaacy sie za informatyka autor nie wie kto to haker.