XNTSV: Công cụ xem cấu trúc hệ thống Windows
XNTSV là công cụ Windows miễn phí dùng để xem cấu trúc hệ thống như PEB, TEB, PEB_LDR_DATA và EPROCESS với đầy đủ chi tiết từng trường dữ liệu. Nên dùng nếu bạn làm reverse engineering trên tiến trình Windows hoặc phát triển phần mềm bảo vệ và cần biết chính xác cách các cấu trúc chưa được tài liệu hóa đầy đủ này được sắp xếp trên Windows 7 đến Windows 11. Nên bỏ qua nếu mục tiêu của bạn là Windows XP hoặc 2000 — bản hiện tại đã ngừng hỗ trợ hai hệ điều hành này — hoặc nếu bạn cần xuất dữ liệu dạng script thay vì thao tác qua giao diện đồ họa.
XNTSV là gì?
XNTSV là chương trình desktop trên Windows do horsicq phát triển, hiển thị các cấu trúc hệ thống nội bộ mà Windows tạo ra trong quá trình khởi tạo tiến trình, chẳng hạn như PEB, TEB, PEB_LDR_DATA và EPROCESS. Microsoft không tài liệu hóa đầy đủ các cấu trúc này và cách sắp xếp trường dữ liệu của chúng thay đổi theo từng phiên bản Windows, nên XNTSV đọc trực tiếp giá trị thực tế trên hệ thống thay vì dựa vào một bảng tham chiếu cố định. Công cụ này hướng đến người nghiên cứu Windows internals và người làm công cụ chống can thiệp, chống dịch ngược phần mềm.
Tính năng chính
- ✓Hiển thị đầy đủ chi tiết từng trường dữ liệu của PEB, TEB, PEB_LDR_DATA, LDR_DATA_TABLE_ENTRY, RTL_USER_PROCESS_PARAMETERS, EPROCESS và các cấu trúc khác được tạo ra khi Windows khởi tạo một tiến trình.
- ✓Cho phép bạn tự thêm hoặc chỉnh sửa định nghĩa cấu trúc trong file structs/ARCH/custom.json thay vì phải chờ bản cập nhật chính thức.
- ✓Đọc được cấu trúc ở chế độ kernel-mode, miễn là bạn ký driver bằng chứng chỉ hợp lệ hoặc chế độ test-signing của Windows.
- ✓Theo dõi sự khác biệt về cấu trúc giữa từng phiên bản Windows cụ thể, thay vì giả định một cách sắp xếp cố định cho tất cả.
- ✓Là mã nguồn mở theo giấy phép MIT, kèm hướng dẫn build trong docs/BUILD.md nếu bạn muốn tự biên dịch từ mã nguồn.
- ✓Có file changelog.txt trong repo để bạn xem những gì đã thay đổi giữa các bản phát hành trước khi nâng cấp.
Ai được lợi từ XNTSV?
- •Người phân tích ngược file thực thi Windows cần biết chính xác cách bố trí byte của PEB, TEB hoặc EPROCESS trên đúng bản Windows họ đang nhắm tới, thay vì đoán mò từ tài liệu cũ.
- •Người phát triển phần mềm bảo vệ hoặc mã chống can thiệp cần đọc trực tiếp cấu trúc tiến trình chưa được tài liệu hóa, đúng như README của dự án mô tả.
- •Người phát triển driver ở kernel-mode muốn kiểm tra EPROCESS và các cấu trúc liên quan bằng một driver đã ký ở chế độ test.
- •Bất kỳ ai đang duy trì công cụ nội bộ cho phiên bản Windows mà XNTSV chưa có sẵn cấu trúc, có thể tự định nghĩa trường dữ liệu còn thiếu trong custom.json.
Bắt đầu với XNTSV
Tải bản phát hành từ trang GitHub Releases của dự án — đây là nơi chứa file thực thi Windows đã biên dịch sẵn. README dẫn tới một file riêng là docs/RUN.md để hướng dẫn chạy chương trình, và docs/BUILD.md nếu bạn muốn tự biên dịch từ mã nguồn QMake, nhưng nội dung cụ thể của hai file này không nằm trong README, nên các bước dòng lệnh chi tiết chưa được tài liệu hóa rõ ràng ở đây — bạn cần mở các tài liệu đó trên GitHub trước khi chạy.
Điểm mạnh
- ✓Bao quát đúng những cấu trúc (PEB, TEB, PEB_LDR_DATA, LDR_DATA_TABLE_ENTRY, RTL_USER_PROCESS_PARAMETERS, EPROCESS) thường gặp nhất khi làm reverse engineering trên Windows, gom hết vào một chỗ thay vì phải lục tìm rải rác trên các diễn đàn.
- ✓Cơ chế chỉnh sửa custom.json nghĩa là bạn không bị bó buộc vào đúng những cấu trúc mà người bảo trì dự án đã đưa sẵn — bạn có thể tự vá thêm một trường dữ liệu.
- ✓Giấy phép MIT nên bạn có thể đưa vào quy trình reverse engineering hoặc phần mềm bảo vệ thương mại mà không vướng ràng buộc bản quyền.
- ✓Hỗ trợ kernel-mode giúp nó vượt ra ngoài các cấu trúc user-mode như PEB/TEB để chạm tới EPROCESS, phần mà hầu hết công cụ giao diện nhẹ khác bỏ qua.
Hỗ trợ hệ điều hành hiện tại
- △Bản hiện tại không hỗ trợ Windows 2000, XP hay Vista — README hướng người dùng tới một bản XNTSV cũ hơn cho các hệ điều hành này, nên nếu bạn đang duy trì công cụ cho hệ thống XP đời cũ thì bản này không giúp được gì.
- △Xem cấu trúc ở kernel-mode đòi hỏi driver đã ký — bằng chứng chỉ driver hợp lệ hoặc chế độ test-signing của Windows — đây là bước thiết lập thêm mà hầu hết người dùng bỏ qua trên máy sạch.
- △README gọi tài liệu Windows cho các cấu trúc này là không chính thức và nói rằng chúng thay đổi theo từng phiên bản, nghĩa là định nghĩa cấu trúc của XNTSV có thể chậm cập nhật so với một bản Windows vừa ra mắt, cho tới khi ai đó cập nhật lại.
- △Đây là ứng dụng desktop chỉ dành cho Windows, dùng QMake để build, và README không nhắc gì tới Linux, macOS hay chế độ dòng lệnh có thể viết script, nên nó không phù hợp để đưa vào một pipeline tự động.
Công cụ thay thế cho Windows Internals
Câu hỏi thường gặp
XNTSV hiện hỗ trợ Windows 7, Windows 7 SP1, Windows 8, Windows 8.1, Windows Server 2016, 2019 và 2022, cùng tất cả các bản build của Windows 10 và Windows 11 build 22000, theo README của dự án.
XNTSV hỗ trợ xem cấu trúc ở kernel-mode, nhưng README yêu cầu bạn phải ký driver bằng chứng chỉ driver hợp lệ hoặc dùng chứng chỉ test-signing trước khi nó có thể tải lên.
Bạn có thể tự định nghĩa cấu trúc riêng bằng cách chỉnh sửa file custom.json trong thư mục structs/ARCH của dự án, thay vì phải chờ một bản cập nhật chính thức để thêm chúng.
XNTSV được phát hành theo giấy phép MIT, theo thông tin trên repo GitHub của dự án.
XNTSV không hỗ trợ Windows 2000, XP hay Vista ở phiên bản hiện tại — README khuyên bạn dùng một bản phát hành XNTSV cũ hơn nếu cần cấu trúc cho các hệ thống này.
Các bản build của XNTSV được đăng trên trang GitHub Releases tại github.com/horsicq/xntsv/releases, kèm tài liệu riêng để hướng dẫn chạy và build từ mã nguồn.
Vấn đề XNTSV giải quyết
Windows không công bố tài liệu chính thức cho các cấu trúc như PEB, TEB hay EPROCESS, và cách sắp xếp trường dữ liệu của chúng thay đổi theo từng phiên bản, từng bản build — nên người nghiên cứu tiến trình Windows hoặc phải tự dò offset của từng cấu trúc cho mỗi phiên bản Windows, hoặc phải tin vào một tài liệu bên thứ ba vốn đã lỗi thời ngay khi có bản Windows mới. XNTSV giải quyết vấn đề này bằng cách đọc trực tiếp cấu trúc từ hệ thống đang chạy, đồng thời cho phép bạn tự chỉnh sửa định nghĩa cấu trúc trong file structs/ARCH/custom.json khi gặp trường dữ liệu hoặc phiên bản mới mà chưa ai kịp cập nhật tài liệu.
Nên dùng khi nào — và khi nào nên bỏ qua
Nên thử XNTSV nếu bạn làm reverse engineering tiến trình Windows, gia cố phần mềm chống can thiệp, hoặc phát triển driver, và cần thấy các trường dữ liệu PEB/TEB/EPROCESS đúng như cách Windows sắp xếp trên bản build bạn đang nhắm tới — miễn là bạn không ngại dùng một công cụ giao diện đồ họa chỉ chạy trên Windows. Nên bỏ qua nếu bạn dùng Windows XP trở về trước, cần xuất dữ liệu cấu trúc tự động cho một pipeline CI, hoặc chỉ cần vài trường dữ liệu mà WinDbg đã hiển thị sẵn bằng lệnh `!peb` — trường hợp đó thì không đáng để cài thêm công cụ này.
