Ta witryna korzysta z plików cookies. Korzystając z witryny akceptujesz: polityka prywatności.   [×]
Online: 0x011 (17)

haker.info – Etyczny hacking🕊️

Spreading knowledge like a virus.

⚙️ Co to jest wywołanie systemowe SYSCALL?

🕰

Jako, że Native API jest mostem pomiędzy trybem użytkownika (ang. user mode, ring 3), a trybem jądra systemu (ang. kernel mode, ring 0), to powinno zawierać jakiś mechanizm przekazywania wywołań do jądra systemu. Wykonywane jest to za pomocą rozkazu procesora SYSCALL. A najlepszym wyjaśnieniem będzie podejrzenie wnętrza wybranej funkcji Native API. Przykładowym programem może być systemowy Kalkulator.

Poprzez wydanie polecenia u ntdll!NtCreateFile możliwe jest wyświetlenie wnętrza funkcji NtCreateFile w języku Asembler. Otrzymany kod po deasemblacji przedstawia rysunek.

Polecenie u (przypis [2]) w narzędziu WinDbg pozwala dokonać deasemblacji, czyli otrzymania listingu w języku Asembler wybranego fragmentu kodu (np. funkcji czy adresu w pamięci).

We wnętrzu funkcji NtCreateFile przedstawionym jako kod w Asemblerze na rysunku można zauważyć między innymi:

  • przekazanie argumentu z rejestru RCX do R10 (rozkaz SYSCALL niszczy [3] zawartość rejestru RCX),
  • wpisanie numeru wywołania do rejestru EAX (tutaj 55h),
  • instrukcje sprawdzające (TEST, JNE),
  • wywołanie systemowe poprzez rozkaz SYSCALL,
  • (...)

Dla porównania można wyświetlić wnętrze innej funkcji np. NtQuerySystemInformation (rysunek 5.21). Tutaj numer wywołania SYSCALL w rejestrze EAX to 36h.

Na poprzednich rysunkach przedstawiono jak wygląda wywołanie systemowe za pomocą rozkazu procesora SYSCALL na przykładzie wyświetlenia wnętrza dwóch wybranych funkcji Native API. Należy pamiętać, że numery wywołań (wartość przekazywana przez rejestr EAX) mogą zmieniać się wraz w wersjami systemu Windows, gdyż są to mechanizmy wewnętrzne i nie jest tu wymagane zapewnianie kompatybilności. Dla programistów aplikacji jest Win32 API, natomiast Native API oraz mechanizm SYSCALL są stosowane przez specjalistyczne programy wymagające tego lub wirusy komputerowe.



Wykaz literatury (bibliografia)

[1] Dawid Farbaniec, 2021 – Asembler x64. Laboratorium, ISBN: 9788382457032
[2] Microsoft Corporation, 2017 – u, ub, uu (Unassemble), https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/u--unassemble- [dostęp: 31.08.2020 r.]
[3] Intel Corporation, 2019 – Intel 64 and IA-32 Architectures Software Developer's Manual

Komentarze czytelników

Kontakt

mgr inż. Dawid Farbaniec  //  haker.iиfø

E-mail:
office@haker.info

Odwiedź mnie również na:

 

Wyrazy uznania: 📜 Credits page

Wszystkie treści umieszczone na tej witrynie są chronione prawem autorskim. Surowo zabronione jest kopiowanie i rozpowszechnianie zawartości tej witryny bez zgody autora. Wszelkie opublikowane tutaj treści (w tym kody źródłowe i inne) służą wyłącznie celom informacyjnym oraz edukacyjnym. Właściciele tej witryny nie ponoszą odpowiedzialności za ewentualne niezgodne z prawem wykorzystanie zasobów dostępnych w witrynie. Użytkownik tej witryny oświadcza, że z zamieszczonych tutaj danych korzysta na własną odpowiedzialność. Wszelkie znaki towarowe i nazwy zastrzeżone zostały użyte jedynie w celach informacyjnych i należą wyłącznie do ich prawnych właścicieli. Autor tej witryny w czasie tworzenia treści nie działa w imieniu firm, których technologie czy produkty opisuje — chyba, że jest to jasno oznaczone. Korzystając z zasobów witryny haker.info oświadczasz, że akceptujesz powyższe warunki oraz politykę prywatności.