Asembler. Programowanie - ebook
Asembler. Programowanie - 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!
Spis treści
- 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
- 3.1. Visual Studio i rozszerzenie do programowania w Asemblerze
- 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
- Typy całkowite
- 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
- 13.1. Podstawowe narzędzia
- 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
- 19.1. Instrukcje transferu danych
- Zakończenie
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-6223-9 |
Rozmiar pliku: | 9,1 MB |