Bộ xử lý máy tính có hai chế độ hoạt động: user mode (chế độ người dùng) và kernel mode (chế độ nhân). Ứng dụng chạy ở user mode, trong khi hệ điều hành vận hành ở kernel mode để quản lý tài nguyên. Khi ứng dụng cần thực hiện tác vụ như tạo file, nó phải chuyển sang cho kernel để xử lý.

Minh họa các thành phần:

Giải thích:

  1. User Processes: Đây là các chương trình hoặc ứng dụng do người dùng khởi chạy, chẳng hạn như Google Chrome hoặc Notepad.
  2. Subsystem DLLs: Các thư viện động (DLL) này chứa API mà các user processes có thể gọi đến. Ví dụ, kernel32.dll cung cấp Windows API (WinAPI) có tên là CreateFile để tạo file. Một số DLL phổ biến khác bao gồm: ntdll.dll, advapi32.dll, và user32.dll.
  3. Ntdll.dll: Đây là DLL ở tầng thấp nhất trong user mode, đóng vai trò đặc biệt trong việc chuyển đổi từ user mode sang kernel mode. Nó thường được gọi là Native API hoặc NTAPI.
  4. Executive Kernel: Đây là phần lõi của hệ điều hành, chịu trách nhiệm điều phối các driver và module trong kernel mode để thực hiện các tác vụ. Phần lớn nhân của Windows được lưu trữ trong tệp ntoskrnl.exe, nằm tại thư mục C:\Windows\System32.

Ví dụ:

Đầu tiên, ứng dụng gọi hàm CreateFileW thuộc WinAPI có trong kernel32.dll:

Sau đó, kernel32.dll sẽ gọi hàm NTAPI tương đương là NtCreateFile có trong ntdll.dll:

Cuối cùng, ntdll.dll sẽ sử dụng sysenter (x86) hoặc syscall (x64) để chuyển đổi việc thực thi sang cho kernel mode. Cụ thể hơn, hàm NtCreateFile sẽ gọi các driver hoặc module cần thiết để thực hiện tạo file:

Info

Các ứng dụng có thể gọi trực tiếp các hàm native mà không cần thông qua WinAPI vì WinAPI cũng chỉ là một wrapper bên ngoài NTAPI. Tuy nhiên, NTAPI khó sử dụng hơn do nó không có nhiều tài liệu và có thể bị thay đổi bất cứ lúc nào mà không có cảnh báo trước.

list
from outgoing([[MalDev - Windows Architecture]])
sort file.ctime asc

Resources