Dwie struktury PEB w procesie


Struktura PEB zawiera podstawowe informacje o procesie działającym w systemie Windows, m.in.:

  • informację, czy do procesu jest podczepiony debugger,
  • Informację o inni poleceń, jaka została użyta do stworzenia procesu,
  • informację o modułach załadowanych do pamięci procesu.

Oficjalny opis znaczenia poszczególnych pól jest na MSDN, a bardziej rozbudowany, ale nieoficjalny na ntinternals.net lub geoffchappell.com.

Jak pobrać adres struktury PEB obcego procesu?

Aby pobrać adres stryktury PEB, możemy wykorzystać funkcję NtQueryInformationProcess.

 

Jeśli ProcessInformationClass ustawimy na zero oraz w ProcessInformation przekażemy wskaźnik na strukturę PROCESS_BASIC_INFORMATION, to w polu PebBaseAddress poznamy adres struktury PEB w przestrzeni wirtualnej procesu właściciela.

Ile struktur PEB ma proces?

Odpalamy naszą 32-bitową aplikację na 64-bitowym systemie, następnie kompilujemy kolejną aplikację, która będzie pytała o adres PEB w pierwszym procesie. Okazuje się, że uzyskany wynik zależy od tego, jak kompilowaliśmy proces analizujący.

Jeśli wywołaliśmy funkcję z procesu 32-bitowego, to uzyskamy inny adres niż wtedy, gdy nasz proces analizujący jest 64-bitowy.

Czyli co – aplikacje WOW64 mają dwie struktury PEB? Tak, i obie zawierają ciekawe informacje, a są względem siebie przesunięte dokładnie o 0x1000 bajtów. Warto dodać, że to są obie pełnoprawne struktury: jedna to 32-bitowa struktura, taka jak w procesie 32-bitowym, wyrównana do 4 bajtów, kolejna to struktura WOW64, wyrównana do 8 bajtów.

Adresy struktur PEB w procesie WOW64

image1

Zawartość obydwu struktur PEB

image3image2

Czy to dotyczy tylko PEB?

Inne ważne struktury systemowe są również zduplikowane. Mamy po dwie struktury TEB dla każdego wątku oraz osobne stosy i sterty dla kodu 32-bitowego i 64-bitowego.

image4

Dodaj komentarz

Twój adres email nie zostanie opublikowany.