Szczegóły ebooka

Niebieski lis. Polecenia procesorów Arm i inżynieria wsteczna

Niebieski lis. Polecenia procesorów Arm i inżynieria wsteczna

Maria Markstedter

Ebook

Procesory ARM są coraz popularniejsze w urządzeniach mobilnych, laptopach i serwerach. Rosnąca popularność czyni je interesującymi dla badaczy bezpieczeństwa. Specjaliści z tej branży często używają technik inżynierii wstecznej podczas badania plików binarnych. W tym celu konieczne jest zapoznanie się z poleceniami asemblera ARM.

Książkę szczególnie docenią analitycy bezpieczeństwa, którzy chcą się zapoznać z zestawem poleceń ARM i zdobyć wiedzę umożliwiającą im efektywne korzystanie z technik inżynierii wstecznej. Poza zestawem potrzebnych poleceń znalazło się w niej mnóstwo przydatnych informacji. Znajdziesz tu przegląd podstawowych zagadnień związanych z systemem operacyjnym, wyjaśnienie, czym są polecenia asemblera i na czym polega proces kompilacji pliku, a także opis mechanizmów działania poleceń służących do przetwarzania danych, dostępu do pamięci i kontroli przepływu sterowania. W kolejnych rozdziałach zapoznasz się z przeglądem technik inżynierii wstecznej, takich jak analiza statyczna i dynamiczna, jak również z kompleksowym omówieniem złośliwego oprogramowania, które może ją utrudniać.

W książce:

  • wprowadzenie do architektury ARM
  • zestawy poleceń: A64, A32 i T32, a także format plików ELF
  • przegląd wzorców przepływu sterowania w procesorach ARM
  • narzędzia inżynierii wstecznej
  • proces dezasemblowania i debugowania plików binarnych ARM w systemie Linux
  • typowe narzędzia do dezasemblowania i debugowania plików binarnych ARM

Poznaj moc inżynierii wstecznej!

Spis treści

O autorce

Podziękowania

Wprowadzenie

Część I. Asembler procesora Arm

  • Rozdział 1. Wprowadzenie do inżynierii wstecznej
    • Wprowadzenie do asemblera
      • Bity i bajty
      • Kodowanie znaków
      • Kod maszynowy i asembler
      • Asemblacja
    • Języki wysokiego poziomu
    • Dezasemblacja
    • Dekompilacja
  • Rozdział 2. Właściwości formatu plików ELF
    • Struktura programu
    • Języki wysokiego poziomu a języki niskiego poziomu
    • Proces kompilacji
      • Kompilacja pod kątem różnych architektur
      • Asemblacja i linkowanie
    • Struktura pliku ELF
    • Nagłówek pliku ELF
      • Pola informacyjne nagłówka pliku ELF
      • Pola platformy docelowej
      • Pole punktu wejściowego
      • Pola lokalizacji tabel
    • Nagłówki programu ELF
      • Nagłówek programu PHDR
      • Nagłówek programu INTERP
      • Nagłówki programu LOAD
      • Nagłówek programu DYNAMIC
      • Nagłówek programu NOTE
      • Nagłówek programu TLS
      • Nagłówek programu GNU_EH_FRAME
      • Nagłówek programu GNU_STACK
      • Nagłówek programu GNU_RELRO
    • Nagłówki sekcji pliku ELF
      • Metasekcje pliku ELF
      • Główne sekcje pliku ELF
      • Symbole
    • Sekcja dynamiczna i ładowanie dynamiczne
      • Ładowanie zależności (NEEDED)
      • Relokacje programu
      • Sekcje inicjalizacji i terminacji programu
    • Pamięć lokalna wątków
      • Model dostępu local-exec
      • Model dostępu TLS initial-exec
      • Model dostępu TLS general-dynamic
      • Model dostępu TLS local-dynamic
  • Rozdział 3. Podstawy systemu operacyjnego
    • Ogólna architektura systemu operacyjnego
      • Tryb użytkownika a tryb jądra
      • Procesy
      • Wywołania systemowe
      • Wątki
    • Zarządzanie pamięcią procesu
      • Strony pamięci
      • Zabezpieczenia pamięci
      • Pamięć anonimowa i mapowana
      • Randomizacja układu przestrzeni adresowej
      • Implementacje stosu
      • Pamięć współdzielona
  • Rozdział 4. Architektura Arm
    • Architektury i profile
    • Architektura Armv8-A
      • Poziomy wyjątków
      • Stany wykonywania Armv8-A
    • Stan wykonywania AArch64
      • Zestaw rozkazów A64
      • Rejestry AArch64
      • PSTATE
    • Stan wykonywania AArch32
      • Zestawy rozkazów A32 i T32
      • Rejestry AArch32
      • Rejestr bieżącego stanu programu
      • Rejestry stanu wykonywania
  • Rozdział 5. Rozkazy przetwarzania danych
    • Operacje przesunięcia i obrotu
      • Przesunięcie logiczne w lewo
      • Przesunięcie logiczne w prawo
      • Przesunięcie arytmetyczne w prawo
      • Obrót w prawo
      • Obrót w prawo z przeniesieniem
      • Formy rozkazów
      • Operacje manipulacji bitami
    • Operacje logiczne
      • Binarna operacja AND
      • Binarna operacja OR
      • Binarna operacja OR wykluczającego
    • Operacje arytmetyczne
      • Dodawanie i odejmowanie
      • Porównywanie
    • Operacje mnożenia
      • Operacje mnożenia w zestawie A64
      • Operacje mnożenia w zestawach A32/T32
    • Operacje dzielenia
    • Operacje przeniesienia
      • Przeniesienie stałej wartości bezpośredniej
      • Przeniesienie rejestru
      • Przeniesienie z negacją
  • Rozdział 6. Rozkazy dostępu do pamięci
    • Podstawowe informacje
    • Tryby adresowania i formy offsetu
      • Adresowanie z offsetem
      • Tryb preindeksowany
      • Adresowanie postindeksowane
      • Adresowanie literałowe (względem PC)
    • Rozkazy ładowania i zapisu
      • Ładowanie i zapis słów i podwójnych słów
      • Ładowanie i zapis półsłów lub bajtów
      • Ładowanie i zapis wielu wartości (A32)
      • Ładowanie i zapis par (A64)
  • Rozdział 7. Wykonywanie warunkowe
    • Wykonywanie warunkowe - informacje ogólne
    • Kody warunkowe
      • Flagi warunkowe NZCV
      • Kody warunkowe
    • Rozkazy warunkowe
      • Rozkaz IT w Thumb
    • Rozkazy ustawiające flagi
      • Przyrostek rozkazu S
      • Rozkazy testowania i porównywania
    • Rozkazy wyboru warunkowego
    • Rozkazy porównywania warunkowego
      • Operacje warunkowe z logicznym AND i rozkazem CCMP
      • Operacje warunkowe z logicznym OR i rozkazem CCMP
  • Rozdział 8. Kontrola przepływu sterowania
    • Rozkazy rozgałęziające
      • Rozgałęzienia warunkowe i pętle
      • Rozgałęzienia z testem i porównaniem
      • Rozgałęzienia tabelowe
      • Rozgałęzienie i zamiana
      • Rozgałęzienia do podprocedur
    • Funkcje i podprocedury
      • Standard wywoływania procedur
      • Rejestry ulotne i nieulotne
      • Argumenty i wartości zwrotne
      • Przekazywanie większych wartości
      • Funkcje liście i funkcje niebędące liśćmi

Część II. Inżynieria wsteczna

  • Rozdział 9. Środowiska Arm
    • Płytki Arm
    • Emulator QEMU
      • Emulacja w trybie użytkownika QEMU
      • Pełna emulacja systemu w QEMU
  • Rozdział 10. Analiza statyczna
    • Narzędzia do analizy statycznej
      • Narzędzia wiersza poleceń
      • Dezasemblery i dekompilatory
      • Binary Ninja Cloud
    • Przykład analizy wywołania przez referencję
    • Analiza przepływu sterowania
      • Funkcja main
      • Podprocedura
      • Konwersja na char
      • Instrukcja if
      • Dzielenie współczynnika
      • Pętla for
    • Analiza algorytmu
  • Rozdział 11. Analiza dynamiczna
    • Debugowanie w wierszu poleceń
      • Polecenia GDB
      • Konfiguracja GDB
      • Rozszerzenie GEF debugera GDB
      • Radare2
    • Debugowanie zdalne
      • Radare2
      • IDA Pro
    • Debugowanie błędu pamięci
    • Debugowanie procesu w GDB
  • Rozdział 12. Inżynieria wsteczna programów arm64 w systemie macOS
    • Podstawowe informacje
      • Pliki binarne arm64 dla systemu macOS
      • Program powitalny dla systemu macOS (arm64)
    • Polowanie na złośliwe pliki binarne arm64
    • Analiza złośliwego oprogramowania arm64
      • Techniki utrudniające analizę
      • Logika utrudniająca debugowanie (przez ptrace)
      • Logika utrudniająca debugowanie (przez sysctl)
      • Zabezpieczenie przed maszynami wirtualnymi (stan SIP i wykrywanie artefaktów maszyny wirtualnej)
    • Podsumowanie

Skorowidz

  • Tytuł: Niebieski lis. Polecenia procesorów Arm i inżynieria wsteczna
  • Autor: Maria Markstedter
  • Tytuł oryginału: Blue Fox: Arm Assembly Internals and Reverse Engineering
  • Tłumaczenie: Łukasz Piwko
  • ISBN: 978-83-289-0676-1, 9788328906761
  • Data wydania: 2024-03-26
  • Format: Ebook
  • Identyfikator pozycji: nielis
  • Wydawca: Helion
  • Kategoria wiekowa: 14+