Skip to main content

300012695

Page 1

Księgarnia PWN: Mateusz Jurczyk, Gynvael Coldwind - Praktyczna inżynieria wsteczna

PW

N

SA

Spis treści

Wstęp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

ct

1.4.

w

o

1.3.

N

au

1.2.

Wywoływanie funkcji w językach (bardzo) niskiego poziomu . . . . . . . . . . . 21 1.1.1. CALL, RET i konwencje wywołań . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.1.2. Konwencje wywołań x86. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.1.3. Konwencje wywołań x86-64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Struktury.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.2.1. „Zgadywanie” wielkości i ułożenia elementów struktury w pamięci. . . . 30 1.2.2. Rozpoznawanie budowy struktur lokalnych i globalnych . . . . . . . . . 30 1.2.3. Rozpoznawanie budowy struktur dynamicznie alokowanych. . . . . . 32 Klasy, obiekty, dziedziczenie i tablice wirtualne.. . . . . . . . . . . . . . . . . . . . . . 34 1.3.1. Prosta klasa a struktura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 1.3.2. Obiekty = struktury + funkcje + thiscall. . . . . . . . . . . . . . . . . . . . . . 38 1.3.3. Wszystko zostaje w rodzinie, czyli dziedziczenie . . . . . . . . . . . . . . . . 38 Podsumowanie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

ko w

1.1.

e

1. Funkcje, struktury, klasy i obiekty na niskim poziomie. . . . . . . . . . . . . . . . . . . . . . . 19

2. Środowisko uruchomieniowe na systemach GNU/Linux. . . . . . . . . . . . . . . . . . . . . 43

Wstęp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Pliki wykonywalne ELF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.2.1. Identyfikacja systemu i architektury docelowej . . . . . . . . . . . . . . . . . 46 2.2.2. Segmenty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.2.3. Segment PT_LOAD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.2.4. Segment PT_DYNAMIC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.2.5. Sekcja .dynamic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.2.5.1. Deklaracja bibliotek zależnych. . . . . . . . . . . . . . . . . . . . . . . 57 2.2.5.2. Wczesna inicjalizacja programu. . . . . . . . . . . . . . . . . . . . . . 59 2.3. Środowisko uruchomieniowe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 2.3.1. Kod PIC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 2.3.2. Tablice GOT i PLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 2.3.3. Program ładujący ld.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

W

yd

aw ni

2.1. 2.2.

5

Inzynieria.indd 5

06.10.2016 12:25


Turn static files into dynamic content formats.

Create a flipbook
300012695 by WN PWN - Issuu