Szczegóły ebooka

Asembler. Programowanie

Asembler. Programowanie

Dawid Farbaniec

Ebook

Asembler naprawdę jest dla każdego!

  • Masz zamiar nauczyć się programować niskopoziomowo?
  • Chcesz poznać język Asembler dla architektury x86-64?
  • Pragniesz wykorzystać przydatne narzędzia programistyczne?

Jeśli chociaż na jedno z powyższych pytań odpowiedziałeś twierdząco, jesteś na dobrej drodze! Książka Asembler. Programowanie bezboleśnie i szybko wprowadzi Cię w tajniki programowania niskopoziomowego, nauczy instrukcji języka Asembler, przedstawi podstawowe informacje o sposobach zapisu liczb i kodowania znaków, zaprezentuje architekturę x86-64 i zasadę działania kompilatorów, a także pokaże narzędzia programistyczne, które z pewnością wzbogacą Twój warsztat.

Dzięki lekturze dowiesz się, jak za pomocą Asemblera tworzyć aplikacje działające w systemach Windows, jak korzystać w nich z danych tekstowych, plików i usług sieciowych, a także jak skutecznie łączyć je z programami napisanymi w języku C++. Poznasz też podstawy Asemblera MSIL/CIL i WebAssembly, jak również sposoby wykorzystania tego języka w inżynierii odwrotnej kodu oraz narzędzia, które mogą się do tego przydać. Całość uzupełnia wyczerpujący opis instrukcji procesorów x86(-64) wraz z praktycznymi przykładami ich zastosowania.

  • Systemy liczbowe i kodowanie znaków
  • Podstawy działania kompilatorów
  • Architektura procesorów x86(-64)
  • Przegląd narzędzi programistycznych
  • Podstawy Asemblera x86 i x86-64
  • Zmienne, stałe, typy i struktury
  • Instrukcje sterujące i wywoływanie funkcji
  • Korzystanie z konsoli i okien dialogowych
  • Zastosowanie danych tekstowych
  • Użycie plików i funkcji sieciowych
  • Łączenie Asemblera z kodem C++
  • Asembler i inżynieria odwrotna kodu
  • Podstawy Asemblera platformy .NET
  • Podstawy WebAssembly
  • Opis instrukcji procesorów x86(-64)

Rozwiń skrzydła! Naucz się Asemblera!

  • Słowem wstępu
    • O książce
    • O autorze
  • Część I Wprowadzenie
  • Rozdział 1. Od początku
    • 1.1. Systemy liczbowe
    • 1.2. Liczby ze znakiem i bez znaku
      • Wartość rozszerzona z zachowaniem znaku
    • 1.3. Kod ASCII i Unicode
    • 1.4. Systemy operacyjne Windows
    • 1.5. Podstawy działania kompilatorów
  • Rozdział 2. Architektura procesorów x86(-64)
    • 2.1. Tryby pracy
    • 2.2. Rejestry procesora
    • 2.3. Pamięć operacyjna
    • 2.4. Stos
    • 2.5. Tryby adresowania
    • 2.6. Kod maszynowy
    • 2.7. Format kodowania instrukcji
    • 2.8. Przerwania
    • 2.9. Zestawy instrukcji
    • 2.10. Koprocesor
  • Rozdział 3. Narzędzia programistyczne
    • 3.1. Visual Studio i rozszerzenie do programowania w Asemblerze
      • Tworzenie projektu MASM w Visual Studio
    • 3.2. Alternatywne podejście wyodrębnienie narzędzi konsolowych
    • 3.3. Edytor zasobów
    • 3.4. Edytor heksadecymalny
    • 3.5. Debugger
  • Rozdział 4. Wstęp do Asemblera x86
    • 4.1. Trochę historii Asembler dla 16-bitowego podsystemu MS-DOS
    • 4.2. Program Witaj, 32-bitowy świecie Asemblera!
    • 4.3. Składnia wysokopoziomowa w Asemblerze
  • Rozdział 5. Wstęp do Asemblera x86-64
    • 5.1. Program Witaj, 64-bitowy świecie Asemblera!
    • 5.2. Debugger analiza programu krok po kroku
    • 5.3. Zmienne i stałe
      • Typy całkowite
        • Zmienne o rozmiarze bajta lub ciągu bajtów
        • Zmienne o rozmiarze słowa
        • Zmienne o rozmiarze podwójnego słowa
        • Zmienne o rozmiarze poczwórnego słowa
        • Zmienne o rozmiarze sześciu bajtów
        • Zmienne o rozmiarze dziesięciu bajtów
        • Zmienna o rozmiarze szesnastu bajtów
      • Typy zmiennoprzecinkowe
      • Struktury
      • Stałe
    • 5.4. Instrukcje skoku warunkowego i bezwarunkowego
    • 5.5. Etykiety nazwane i anonimowe
    • 5.6. Metody tworzenia pętli
    • 5.7. Konwencje wywoływania funkcji
    • 5.8. Tworzenie własnych funkcji (procedur)
  • Część II Programowanie w Asemblerze x86-64 dla Windows
  • Rozdział 6. Podstawy programowania aplikacji Windows
    • 6.1. Tworzenie konsoli tekstowej
    • 6.2. Pobieranie i wyświetlanie danych
    • 6.3. Kolory tła i tekstu w konsoli
    • 6.4. Tworzenie okna dialogowego
    • 6.5. Kontrolki interfejsu graficznego użytkownika
  • Rozdział 7. Napisy (ciągi znaków)
    • 7.1. Deklaracja ciągów znaków
    • 7.2. Dyrektywa byte ptr [] i podobne
    • 7.3. Kopiowanie napisów
  • Rozdział 8. Informacje o środowisku pracy
    • 8.1. Identyfikacja procesora
    • 8.2. Odczytywanie wersji systemu
  • Rozdział 9. Praca z plikami
    • 9.1. Tworzenie plików i folderów
    • 9.2. Zapis danych do pliku
    • 9.3. Odczyt danych z pliku
    • 9.4. Ustawianie wskaźnika pliku
    • 9.5. Usuwanie plików
    • 9.6. Zamykanie uchwytu pliku
  • Rozdział 10. Podstawy wielozadaniowości
    • 10.1. Wątki
    • 10.2. Procesy
    • 10.3. Czasomierz
  • Rozdział 11. Programowanie sieciowe
    • 11.1. Obsługa protokołu FTP
    • 11.2. Gniazda systemu Windows
      • Funkcje WinSock
      • Aplikacja w architekturze klient serwer
  • Rozdział 12. Łączenie Asemblera z językiem C++
    • 12.1. Funkcje Asemblera w projekcie Visual C++
    • 12.2. Funkcje wewnętrzne (ang. intrinsics) w Visual C++
      • Przykład użycia funkcji wewnętrznej (ang. intrinsic)
  • Część III Asembler x86-64 w inżynierii odwrotnej kodu (RCE)
  • Rozdział 13. Narzędzia używane w RCE
    • 13.1. Podstawowe narzędzia
      • Odpluskwiacz (ang. debugger)
      • Deasembler (ang. disassembler)
      • Edytor szesnastkowy (heksadecymalny)
      • Identyfikator plików
      • Edytor zasobów (ang. resource editor)
      • Dekompilator (ang. decompiler)
    • 13.2. Więcej narzędzi szybsza praca
  • Rozdział 14. Format plików Portable Executable
    • 14.1. Ogólna budowa pliku PE
    • 14.2. Przeglądanie struktury pliku PE
  • Rozdział 15. Proste metody utrudniające analizę
    • 15.1. Szyfrowanie napisów
    • 15.2. Wykrywanie narzędzi typu debugger
    • 15.3. Dynamiczne wywoływanie funkcji API
    • 15.4. Wykrywanie okna określonego narzędzia
    • 15.5. Śmieciowy kod (ang. junk code)
  • Rozdział 16. Modyfikacja plików wykonywalnych PE
    • 16.1. Modyfikacja kodu w debuggerze
    • 16.2. Modyfikacja kodu w edytorze szesnastkowym
    • 16.3. Tworzenie programu typu crack
  • Część IV Inne odmiany języka Asembler
  • Rozdział 17. Wprowadzenie do MSIL/CIL Asemblera platformy .NET
    • 17.1. MSIL/CIL informacje ogólne
    • 17.2. Program Witaj, świecie! w Asemblerze MSIL
    • 17.3. Dekompilacja uzyskanie kodu pośredniego z pliku EXE
      • Metody ochrony przed dekompilacją i analizą
  • Rozdział 18. Wprowadzenie do WebAssembly Asemblera dla aplikacji webowych
    • 18.1. WebAssembly informacje ogólne
    • 18.2. Program Witaj, świecie WebAssembly!
  • Część V Instrukcje procesorów x86(-64)
  • Rozdział 19. Asembler x86(-64) instrukcje ogólnego przeznaczenia
    • 19.1. Instrukcje transferu danych
      • Instrukcja MOV
      • Instrukcje kopiowania warunkowego CMOVcc
      • Instrukcja XCHG
      • Instrukcja BSWAP
      • Instrukcja XADD
      • Instrukcja CMPXCHG
      • Instrukcje CMPXCHG8B/CMPXCHG16B
      • Instrukcja PUSH
      • Instrukcja POP
      • Instrukcje PUSHA/PUSHAD
      • Instrukcje POPA/POPAD
      • Instrukcje CWD/CDQ/CQO
      • Instrukcje CBW/CWDE/CDQE
      • Instrukcje MOVSX/MOVSXD
      • Instrukcja MOVZX
    • 19.2. Instrukcje arytmetyczne
      • Instrukcja ADCX
      • Instrukcja ADOX
      • Instrukcja ADD
      • Instrukcja ADC
      • Instrukcja SUB
      • Instrukcja SBB
      • Instrukcja IMUL
      • Instrukcja MUL
      • Instrukcja IDIV
      • Instrukcja DIV
      • Instrukcja INC
      • Instrukcja DEC
      • Instrukcja NEG
      • Instrukcja CMP
    • 19.3. Instrukcje logiczne
      • Instrukcja AND
      • Instrukcja OR
      • Instrukcja XOR
      • Instrukcja NOT
    • 19.4. Instrukcje przesunięć i obrotów
      • Instrukcje SAL/SHL
      • Instrukcja SAR
      • Instrukcja SHR
      • Instrukcja RCL
      • Instrukcja RCR
      • Instrukcja ROL
      • Instrukcja ROR
      • Instrukcja SHRD
      • Instrukcja SHLD
    • 19.5. Instrukcje do operacji na bitach i bajtach
      • Instrukcja BT
      • Instrukcja BTS
      • Instrukcja BTR
      • Instrukcja BTC
      • Instrukcja BSF
      • Instrukcja BSR
      • Instrukcje SETcc
      • Instrukcja TEST
      • Instrukcja CRC32
      • Instrukcja POPCNT
    • 19.6. Instrukcje manipulacji bitowych
      • Instrukcja ANDN
      • Instrukcja BEXTR
      • Instrukcja BLSI
      • Instrukcja BLSMSK
      • Instrukcja BLSR
      • Instrukcja BZHI
      • Instrukcja LZCNT
      • Instrukcja MULX
      • Instrukcja PDEP
      • Instrukcja PEXT
      • Instrukcja RORX
      • Instrukcje SARX, SHLX, SHRX
      • Instrukcja TZCNT
    • 19.7. Instrukcje kontroli przepływu
      • Instrukcja JMP
      • Instrukcje Jcc
      • Instrukcje LOOP/LOOPcc
      • Instrukcja CALL
      • Instrukcja RET
    • 19.8. Instrukcje do operacji na napisach
      • Instrukcje MOVS*
      • Instrukcje CMPS*
      • Instrukcje LODS*
      • Instrukcje STOS*
      • Instrukcje SCAS*
    • 19.9. Instrukcje wejścia-wyjścia
      • Instrukcja IN
      • Instrukcja OUT
      • Instrukcje INS*
      • Instrukcje OUTS*
    • 19.10. Instrukcje kontroli flag
    • 19.11. Instrukcje różne
      • Instrukcja LEA
      • Instrukcja NOP
      • Instrukcja UD2
      • Instrukcja CPUID
      • Instrukcja MOVBE
  • Zakończenie
  • Tytuł: Asembler. Programowanie
  • Autor: Dawid Farbaniec
  • ISBN: 978-83-283-6223-9, 9788328362239
  • Data wydania: 2019-08-20
  • Format: Ebook
  • Identyfikator pozycji: asempr
  • Wydawca: Helion