IRON
23-09-2002, 10:06
hê, hôm nay học về registry nhé. Cái registry này có thể dùng để hack cũng như để bảo vệ máy mình một cách tốt hơn. Nếu bạn là một hacker, bạn có thể lợi dụng vào cái này để phá hoại. Còn nếu bạn muốn bảo vệ máy ư ? Cũng phải dùng đến nó. Trước tiên ta phải hiểu registry là cái gì mới được.
Registry là cơ sở dữ liệu dùng để chứa đựng các thiết đặt cho phiên bản 32 bit của Microsoft Windows bao gồm Windows 95, 98, ME và NT/2000. Nó chứa đựng những thông tin và thiết đặt của các phần cứng, phần mềm, người dùng và sở thích riêng của người sử dụng Windows. Bất cứ khi nào người sử dụng Windows thay đổi các thiết đặt trong Control Panel, File Associations, System Policies, cài đặt phần mềm hoặc thay đổi phần cứng ... những thay đổi này sẽ được ghi lại và chứa đựng trong Registry.
Những file vật lý tạo nên Registry được lưu trữ ở những nơi khác nhau phụ thuộc vào phiên bản Windows mà bạn đang dùng. Dưới Windows 95, 98 và ME nó chứa đựng trong hai file ẩn là User.dat và System.dat trong khi dưới Windows NT/2000 những file này được chứa đựng trong thư mục %SystemRoot%\System32\Config. Bạn không thể nào hiệu chỉnh, sửa chữa những file này một cách trực tiếp. Để thay đổi Registry, bạn phải sử dụng một công cụ được biết đến là trình biên tập Registry Editor, thường được gọi tắt là Regedit
Cấu trúc của Registry
Registry có một cấu trúc đẳng cấp, thoạt nhìn bạn trông thấy có vẽ phức tạp nhưng thật ra cấu trúc của Registry cũng giống như cấu trúc của các thư mục trên đĩa cứng của bạn, với Regedit thì cũng tương tự như Windows Explorer
Mỗi nhánh chính (được biểu thị bằng một icon folder trong khung bên trái của Registry Editor) được gọi là một Hive, mỗi Hive chứa đựng nhiều Key (từ khóa). Mỗi Key có thể chứa đựng nhiều Key khác (đôi khi được xem như là Sub-Key) và các Value (giá trị). Value là nơi chứa đựng các thông tin thực tế được lưu trữ trong Registry. Có 3 kiểu giá trị là: String, Binary và DWORD. Việc sử dụng những giá trị này phụ thuộc vào ngữ cảnh.
Có 6 nhánh chính, mỗi nhánh chứa đựng những thông tin đặc biệt lưu trữ trong Registry
HKEY_CLASSES_ROOT
Nhánh này theo dõi những tập tin liên kết (File Association), dữ liệu thông tin về các đối tượng lớp, hệ điều hành và các phím tắt.
HKEY_CURRENT_USER
Nhánh này liên kết với khu vực của nhánh HKEY_USERS.
Nội dung của nhánh này tùy thuộc vào những người dùng hiện đăng nhập máy tính.
Nhánh này lưu lại các sở thích và các xác lập liên quan đến các ứng dụng dành riêng cho từng người sử dụng máy.
HKEY_LOCAL_MACHINE
Nhánh này chứa đựng các thông tin đặc biệt về máy tính bao gồm phần cứng, phần mềm và cấu hình của máy tính.
Thông tin này được sử dụng cho tất cả các người dùng máy tính.
HKEY_USERS
Nhánh này chứa đựng những sở thích riêng lẽ của từng người dùng máy tính, mỗi người dùng được đại diện bởi một từ khóa con SID , được định vị dưới nhánh chính.
HKEY_CURRENT_CONFIG
Nhánh này liên kết với khu vực của nhánh HKEY_LOCAL_MACHINE dành riêng cho cấu hình của phần cứng hiện hành.
HKEY_DYN_DATA
Nhánh này hướng về một phần của nhánh HKEY_LOCAL_MACHINE, được dùng cho đặc tính Plug and Play của Windows.
Mục này là dymanic và sẽ thay đổi một khi bạn gắn thêm hoặc tháo gỡ thiết bị phần cứng ra khỏi hệ thống.
Các giá trị trong Registry
Mỗi giá trị Registry được lưu trữ dưới dạng 1 trong 5 kiểu dữ liệu khác nhau :
REG_SZ (STRING VALUE)
Kiểu này là một chuỗi chuẩn, được dùng để đại diện cho các giá trị văn bản có thể đọc được
REG_BINARY
Kiểu này lưu trữ giá trị như dữ liệu nhị phân thô. Hầu hết các thông tin về thành phần phần cứng được lưu trữ dưới dạng giá trị Binary và có thể được biểu thị bằng định dạng thập lục phân.
REG_DWORD
Kiểu này đại diện dữ liệu bằng một số 4 byte và thường sử dụng cho những giá trị logic, chẳng hạn "0" là vô hiệu hóa còn "1" là cho phép. Đồng thời nhiều tham số cho các driver của phần cứng và các dịch vụ về Internet được biểu thị bằng kiểu giá trị này.
Trong REGEDT32 biểu thị bằng định dạng nhị phân, thập phân và thập lục phân còn trong REGEDIT là định dạng thập phân và thập lục phân.
REG_EXPAND_SZ
Kiểu này là một chuỗi dữ liệu có thể mở rộng, chuỗi chứa đựng một biến sẽ được thay thế khi được gọi bởi một trình ứng dụng.
Ví dụ, cho giá trị sau, chuỗi %SystemRoot% sẽ thay thế bằng định vị thực tế của thư mục chứa đựng các file hệ thống trong Windows NT (kiểu này chỉ được dùng trong các trình biên tập Registry tiên tiến như REGEDT32)
REG_MULTI_SZ
Kiểu này là một chuỗi đa nhiệm được dùng để đại diện cho những giá trị có chứa danh sách hoặc chứa nhiều giá trị (kiểu này chỉ được dùng trong các trình biên tập Registry tiên tiến như REGEDT32)
Registry là cơ sở dữ liệu dùng để chứa đựng các thiết đặt cho phiên bản 32 bit của Microsoft Windows bao gồm Windows 95, 98, ME và NT/2000. Nó chứa đựng những thông tin và thiết đặt của các phần cứng, phần mềm, người dùng và sở thích riêng của người sử dụng Windows. Bất cứ khi nào người sử dụng Windows thay đổi các thiết đặt trong Control Panel, File Associations, System Policies, cài đặt phần mềm hoặc thay đổi phần cứng ... những thay đổi này sẽ được ghi lại và chứa đựng trong Registry.
Những file vật lý tạo nên Registry được lưu trữ ở những nơi khác nhau phụ thuộc vào phiên bản Windows mà bạn đang dùng. Dưới Windows 95, 98 và ME nó chứa đựng trong hai file ẩn là User.dat và System.dat trong khi dưới Windows NT/2000 những file này được chứa đựng trong thư mục %SystemRoot%\System32\Config. Bạn không thể nào hiệu chỉnh, sửa chữa những file này một cách trực tiếp. Để thay đổi Registry, bạn phải sử dụng một công cụ được biết đến là trình biên tập Registry Editor, thường được gọi tắt là Regedit
Cấu trúc của Registry
Registry có một cấu trúc đẳng cấp, thoạt nhìn bạn trông thấy có vẽ phức tạp nhưng thật ra cấu trúc của Registry cũng giống như cấu trúc của các thư mục trên đĩa cứng của bạn, với Regedit thì cũng tương tự như Windows Explorer
Mỗi nhánh chính (được biểu thị bằng một icon folder trong khung bên trái của Registry Editor) được gọi là một Hive, mỗi Hive chứa đựng nhiều Key (từ khóa). Mỗi Key có thể chứa đựng nhiều Key khác (đôi khi được xem như là Sub-Key) và các Value (giá trị). Value là nơi chứa đựng các thông tin thực tế được lưu trữ trong Registry. Có 3 kiểu giá trị là: String, Binary và DWORD. Việc sử dụng những giá trị này phụ thuộc vào ngữ cảnh.
Có 6 nhánh chính, mỗi nhánh chứa đựng những thông tin đặc biệt lưu trữ trong Registry
HKEY_CLASSES_ROOT
Nhánh này theo dõi những tập tin liên kết (File Association), dữ liệu thông tin về các đối tượng lớp, hệ điều hành và các phím tắt.
HKEY_CURRENT_USER
Nhánh này liên kết với khu vực của nhánh HKEY_USERS.
Nội dung của nhánh này tùy thuộc vào những người dùng hiện đăng nhập máy tính.
Nhánh này lưu lại các sở thích và các xác lập liên quan đến các ứng dụng dành riêng cho từng người sử dụng máy.
HKEY_LOCAL_MACHINE
Nhánh này chứa đựng các thông tin đặc biệt về máy tính bao gồm phần cứng, phần mềm và cấu hình của máy tính.
Thông tin này được sử dụng cho tất cả các người dùng máy tính.
HKEY_USERS
Nhánh này chứa đựng những sở thích riêng lẽ của từng người dùng máy tính, mỗi người dùng được đại diện bởi một từ khóa con SID , được định vị dưới nhánh chính.
HKEY_CURRENT_CONFIG
Nhánh này liên kết với khu vực của nhánh HKEY_LOCAL_MACHINE dành riêng cho cấu hình của phần cứng hiện hành.
HKEY_DYN_DATA
Nhánh này hướng về một phần của nhánh HKEY_LOCAL_MACHINE, được dùng cho đặc tính Plug and Play của Windows.
Mục này là dymanic và sẽ thay đổi một khi bạn gắn thêm hoặc tháo gỡ thiết bị phần cứng ra khỏi hệ thống.
Các giá trị trong Registry
Mỗi giá trị Registry được lưu trữ dưới dạng 1 trong 5 kiểu dữ liệu khác nhau :
REG_SZ (STRING VALUE)
Kiểu này là một chuỗi chuẩn, được dùng để đại diện cho các giá trị văn bản có thể đọc được
REG_BINARY
Kiểu này lưu trữ giá trị như dữ liệu nhị phân thô. Hầu hết các thông tin về thành phần phần cứng được lưu trữ dưới dạng giá trị Binary và có thể được biểu thị bằng định dạng thập lục phân.
REG_DWORD
Kiểu này đại diện dữ liệu bằng một số 4 byte và thường sử dụng cho những giá trị logic, chẳng hạn "0" là vô hiệu hóa còn "1" là cho phép. Đồng thời nhiều tham số cho các driver của phần cứng và các dịch vụ về Internet được biểu thị bằng kiểu giá trị này.
Trong REGEDT32 biểu thị bằng định dạng nhị phân, thập phân và thập lục phân còn trong REGEDIT là định dạng thập phân và thập lục phân.
REG_EXPAND_SZ
Kiểu này là một chuỗi dữ liệu có thể mở rộng, chuỗi chứa đựng một biến sẽ được thay thế khi được gọi bởi một trình ứng dụng.
Ví dụ, cho giá trị sau, chuỗi %SystemRoot% sẽ thay thế bằng định vị thực tế của thư mục chứa đựng các file hệ thống trong Windows NT (kiểu này chỉ được dùng trong các trình biên tập Registry tiên tiến như REGEDT32)
REG_MULTI_SZ
Kiểu này là một chuỗi đa nhiệm được dùng để đại diện cho những giá trị có chứa danh sách hoặc chứa nhiều giá trị (kiểu này chỉ được dùng trong các trình biên tập Registry tiên tiến như REGEDT32)