Inzynieria_odwrotna_w_praktyce_Narzedzia_i_techniki_inodpr.pdf

(1837 KB) Pobierz
Tytuł oryginału: Practical Reverse Engineering x86, x64, ARM, Windows® Kernel, Reversing Tools, and
Obfuscation
Tłumaczenie: Konrad Matuk
ISBN: 978-83-283-0678-3
Copyright © 2014 by Bruce Dang.
Published by John Wiley & Sons, Inc., Indianapolis, Indiana.
All rights reserved. This translation published under license with the original publisher John Wiley & Sons,
Inc.
Translation copyright © 2015 by Helion S.A.
No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by
any means, electronic, mechanical, photocopying, recording, scanning or otherwise, without either the prior
written permission
of the Publisher
Wiley and the Wiley logo are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its
affiliates, in the United States and other countries, and may not be used without written permission. All
other trademarks are the property of their respective owners. John Wiley & Sons, Inc. is not associated with
any product or vendor mentioned in this book.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie
ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji
zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/inodpr
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis treści
O autorach
O korektorze merytorycznym
Podziękowania
Wstęp
Rozdział 1.
Architektura x86 i x64
Rejestry i typy danych
Zbiór instrukcji
Składnia
Przenoszenie danych
Ćwiczenie
Operacje arytmetyczne
Operacje stosu i wywoływanie funkcji
Ćwiczenia
Sterowanie wykonywanym programem
Mechanizm systemowy
Translacja adresów
Przerwania i wyjątki
Analiza krok po kroku
Ćwiczenia
x64
Rejestry i typy danych
Przenoszenie danych
Adresowanie kanoniczne
Wywołanie funkcji
Ćwiczenia
9
11
13
17
21
22
23
24
25
30
31
32
36
37
44
45
47
47
54
55
55
56
56
57
57
5
Kup książkę
Poleć książkę
6
Spis treści
Rozdział 2.
Architektura ARM
Podstawowe funkcje
Typy danych i rejestry
Opcje systemu i ustawienia
Instrukcje — wprowadzenie
Ładowanie i zapisywanie danych
Instrukcje LDR i STR
Inne zastosowania instrukcji LDR
Instrukcje LDM i STM
Instrukcje PUSH i POP
Funkcje i wywoływanie funkcji
Operacje arytmetyczne
Rozgałęzianie i wykonywanie warunkowe
Tryb Thumb
Polecenia switch-case
Rozmaitości
Kompilacja just-in-time i samomodyfikujący się kod
Podstawy synchronizacji
Mechanizmy i usługi systemowe
Instrukcje
Analiza krok po kroku
Co dalej?
Ćwiczenia
59
60
63
65
66
67
67
71
72
76
77
80
81
85
85
87
87
88
89
91
91
98
98
Rozdział 3.
Jądro systemu Windows
Podstawy systemu Windows
Rozkład pamięci
Inicjalizacja procesora
Wywołania systemowe
Poziom żądań przerwania urządzenia
Pule pamięci
Listy deskryptorów pamięci
Procesy i wątki
Kontekst wykonywania
Podstawy synchronizacji jądra
Listy
Szczegóły implementacji
Analiza krok po kroku
Ćwiczenia
107
108
108
109
111
123
125
126
126
128
129
130
131
138
142
Kup książkę
Poleć książkę
Spis treści
7
Wykonywanie asynchroniczne i ad hoc
Wątki systemowe
Elementy robocze
Asynchroniczne wywoływanie procedur
Opóźnione wywoływanie procedur
Timery
Wywołania zwrotne procesów i wątków
Procedury zakończenia
Pakiety żądań wejścia-wyjścia
Struktura sterownika
Punkty rozpoczęcia
Obiekty sterownika i urządzenia
Obsługa pakietów IRP
Popularne mechanizmy zapewniające komunikację
pomiędzy kodem użytkownika a kodem jądra
Inne mechanizmy systemowe
Analiza krok po kroku
Rootkit w architekturze x86
Rootkit w architekturze x64
Dalszy rozwój
Ćwiczenia
Rozwijanie pewności siebie i utrwalanie wiadomości
Poszerzanie horyzontów
Analiza prawdziwych sterowników
146
147
148
150
154
158
159
161
162
164
165
166
167
168
170
173
173
188
195
196
197
198
201
Rozdział 4.
Debugowanie i automatyzacja
Narzędzia i podstawowe polecenia służące do debugowania
Określanie ścieżki plików symboli
Okna debugera
Obliczanie wartości wyrażenia
Zarządzanie procesami i debugowanie zdarzeń
Rejestry, pamięć i symbole
Punkty wstrzymania
Kontrolowanie procesów i modułów
Inne polecenia
Skrypty i debugowanie
Pseudorejestry
Aliasy
Język
Pliki skryptów
Skrypty jako funkcje
Przykładowe skrypty przydatne podczas debugowania
203
204
205
205
206
210
214
223
226
229
230
231
233
240
251
255
260
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin