-
19-07-2009, 12:09 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Sự khác nhau giữa System Service Dispatch Table và System Service Descriptor Table ?
Hi all,
Theo mình biết trong kernel Windows thì có 1 Table là SSDT, trong SSDT có cấu trúc KeServiceDescriptorTable, chứa real address của tất cả Native API trong Windows. Tuy nhiên khi search và đọc tài liệu thì có 2 khái niệm SSDT.
1 cái là : System Service Descriptor Table
còn 1 cái là : System Service Dispatch Table
Vậy cái nào là cái theo mình diễn giải ở trên ? Còn cái còn lại có ý nghĩa như thế nào ?
Nhờ các bạn giải thích giúp mình
ThanxView more random threads:
- Cannot convert to LPCTSTR - Lỗi này giải quyết sao đây
- Không tạo được activeX control trên VC++ 2008, mặc dù vẫn chạy tốt với VC++ 6
- Làm sao để lấy được kích thước của Resource khi đã Load
- Lọc biên ảnh bằng OpenCV như thế nào?
- bị lổi khi kết nối sqlserver200 với VC++6.0
- Viết chương trình chơi cờ caro qua mạng LAN. Help?
- làm sao hiển text lên background desktop?
- Xuất dữ liệu ra ra LISTBOX trong Thread ????
- Hướng dẫn sử dụng Crypt32.dll để làm việc với Certificates Authority
- Bài toán duyệt cây nhị phân
-
19-07-2009, 04:16 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
cái bạn đang nói là System Service Descriptor Table
Mã:typedef struct ServiceDescriptorEntry { unsigned int *ServiceTableBase; unsigned int *ServiceCounterTableBase; unsigned int NumberOfServices; unsigned char *ParamTableBase; } ServiceDescriptorTableEntry_t, *PServiceDescriptorTableEntry_t;
còn đây là định nghĩa của nó,đơn giản được hiểu thế này: System Service Descriptor Table là tập hợp bảng các địa chỉ của các hàm trong kernel nằm dưới kernel của hệ thống,được Export từ File Ntoskrnl.exe
The KeServiceDescriptorTable is a table exported by the kernel. The table contains a pointer to the portion of the SSDT that contains the core system services implemented in Ntoskrnl.exe, which is a major piece of the kernel. The KeServiceDescriptorTable also contains a pointer to the SSPT.
The Windows executive runs in kernel mode and provides native support to all of the operating system's subsystems: Win32, POSIX, and OS/2. These native system services' addresses are listed in a kernel structure called the System Service Dispatch Table (SSDT).[5] This table can be indexed by system call number to locate the address of the function in memory. Another table, called the System Service Parameter Table (SSPT),[6] specifies the number of bytes for the function parameters for each system service.
đây là hình ảnh minh họa em nó ...
-
20-07-2009, 09:32 AM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Sau một hồi đọc nhiều tại liệu tổng hợp lại thì mình đã hiểu
Thanx các bạn [IMG]images/smilies/biggrin.png[/IMG]
-
20-07-2009, 03:38 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Hiểu thì cậu hãy chia sẻ cho mọi người đi,tại sao lại có 4 SystemServiceDescriptors trong 1 SystemServiceDescriptorTable
mỗi cái đó có nhiệm vụ gì
-
20-07-2009, 07:01 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Hix, mình còn hơi confuse về mối quan hệ của KeServiceDescriptorTable và SSDT, cụ thể KeServiceDescriptorTable là 1 structure nằm trong SSDT hay là sao nhỉ ? Bạn có thể nói rõ hơn 1 tý về cái này ko ?
Thanx
-
20-07-2009, 07:31 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mã:KeServiceDescriptorTable
mình còn hơi confuse về mối quan hệ của KeServiceDescriptorTable và SSDT
chính nó đây
Mã:typedef struct ServiceDescriptorEntry { unsigned int *ServiceTableBase; unsigned int *ServiceCounterTableBase; unsigned int NumberOfServices; unsigned char *ParamTableBase; } ServiceDescriptorTableEntry_t, *PServiceDescriptorTableEntry_t;
-
20-07-2009, 07:37 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Hi bạn,
Theo bạn nói thì struct của SSDT / KeServiceDescriptorTable là :
Mã:typedef struct ServiceDescriptorEntry { unsigned int *ServiceTableBase; unsigned int *ServiceCounterTableBase; unsigned int NumberOfServices; unsigned char *ParamTableBase; } ServiceDescriptorTableEntry_t, *PServiceDescriptorTableEntry_t;
Struct của SSDT là :
Mã:typedef struct SystemServiceDescriptorTable { SSD SystemServiceDescriptors[4]; // The array of 4 SSDs. } SSDT, *LPSSDT;
Mã:typedef struct SystemServiceDescriptor { LPSSTAT lpSystemServiceTableAddressTable; // Pointer to the Address Table // ( SSTAT ) structure of the SST. BOOL bUnknown; // ( ? ) Always set to FALSE. DWORD dwSystemServiceTableNumEntries; // Number of entries in the SST. LPSSTPT lpSystemServiceTableParameterTable; // Pointer to the Parameter Table // ( SSTPT ) structure of the SST. } SSD, *LPSSD;
Thanx bạn nhìu
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...