Niebieski lis. Polecenia procesorów Arm i inżynieria wsteczna - ebook
Niebieski lis. Polecenia procesorów Arm i inżynieria wsteczna - 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
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
- Wprowadzenie do asemblera
- 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
- Ogólna architektura systemu operacyjnego
- 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ą
- Operacje przesunięcia i obrotu
- 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
- Rozkazy rozgałęziające
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
- Narzędzia do analizy statycznej
- 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
- Debugowanie w wierszu poleceń
- 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
- Podstawowe informacje
Skorowidz
Kategoria: | Inne |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-289-0676-1 |
Rozmiar pliku: | 17 MB |