1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Các chương trình quản lý phòng máy hiện nay ở Việt Nam - 4 pdf

25 353 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 802,33 KB

Nội dung

76 Hình 2-47 Màn hình Server – WorkStation 2.2.7.2.2 Tab Service: 77 Hình 2-48 Màn hình Server – Service 2.2.7.2.3 Tab Administration: Hình 2-49 Màn hình Server – Keylock 78 Hình 2-50 Màn hình Server – Keylog Hình 2-51 Màn hình Server – Message 79 Hình 2-52 Màn hình Server – Apllication Hình 2-53 Màn hình Server – Service 80 Hình 2-54 Màn hình Server – Snapshot 2.3 Cài đặt và thử nghiệm: 2.3.1 Cài đặt: Ứng dụng Server và CafeClient được phát triển sử dụng các công cụ và môi trường sau: + Công cụ phân tích và thiết kế: Rational Rose 2003 + Môi trường cài đặt ứng dụng: Windows XP Professional + Môi trường lập trình: Microsoft Visual Studio 6.0 2.3.2 Thử nghiệm: Chương trình được cài đặt thử nghiệm trên phòng máy của trung tâm mạng Máy Tính Nhất Nghệ - đường Bà Huyện Thanh Quan - với kết quả như sau:. STT Tính năng thử nghiệm Đánh giá 1 Kết nối Tốt 2 Tính cước và các dịch vụ liên quan Tốt 3 Quản trị từ xa Tốt 4 Chụp màn hình tĩnh Tốt 5 Chụp màn hình động Tốt 6 Policy Tùy thuộc vào thiết lập máy phía Client 81 Chương 3 Các kỹ thuật lập trình 3.1 Kỹ thuật lập trình sự kiện và hook Trong quá trình thực hiện phần mềm, có một yêu cầu quản trị hệ thống là người quản trị cần biết lúc này người dùng đang gõ nội dung gì trên bàn phím hoặc anh ta có nhu cầu khóa tạm thời bàn phím hay một số phím nhất định. Các nhu cầu đó dẫn đến tình huống cần một cơ chế quản lý và kiểm soát bàn phím. Trong hệ thống Windows, có một cơ chế đáp ứng như thế : cơ chế hook. 3.1.1 S ự kiện và thông điệp trên HĐH Windows Trước hết, ta phải hiểu thêm về cơ chế thông điệp của hệ điều hành Windows. Đây là cơ chế cho phép các ứng dụng phân loại, lưu trữ, đáp lại tương tác với người dùng cũng như là tương tác lẫn nhau. * Hàng đợi thông điệp : Để lưu trữ, phân loại, tương tác… Hệ điều hành Windows xây dựng hàng đợi thông điệp. Hai loại hàng đợi thông điệp dùng cho mục đích này là: o Hàng đợi hệ thống (System queue). o Hàng đợi ứng dụng (Application queue). Windows có các trình điều khiển thiết bị (Drivers) chịu trách nhiệm cho các dịch vụ ngắt từ thiết bị phần cứng mouse và keyboard. Tại mỗi thời điể m ngắt phát sinh, các Driver này gọi một điểm vào (hàm) đặc biệt trong USER.EXE để chỉ ra rằng một sự kiện vừa xảy ra. Các sự kiện mouse, bàn phím khi xảy ra đều trước hết được lưu vào hàng đợi hệ thống. Mọi tiến trình trong hệ thống đều chia sẻ hàng đợi. Hàng đợi hệ thống chỉ làm một nhiệm vụ duy nhất là ghi nhận các sự kiện mouse, bàn phím (nhấn, rê mouse, nhấn bàn phím…) khi có. 82 Hình 3-1 Hàng đợi ứng dụng Khi một tiến trình được khởi tạo, một hàng đợi đại diện cho nó được tạo ra, hàng đợi này (đôi khi được gọi là hàng đợi tác vụ) được dùng để chứa những thông điệp sẽ được gởi cho các cửa sổ của ứng dụng. Những thông điệp này là những thông điệp được gởi một cách tường minh bằng một trong hai hàm sau : o PostMessage o PostAppMessage Ứng dụng có thể dùng hai hàm là GetMessage và PeekMessage do Windows cung cấp để khảo sát hàng đợi của mình. Hai hàm này cho phép ứng dụng lấy một thông điệp ra khỏi hàng đợi để từ đó phân loại và có những hồi đáp thích hợp với người dùng. 3.1.2 Hook là gì ? Hook là một cơ chế xử lý thông điệp của hệ thống mà một ứng dụng có thể cài đặt một đoạn l ệnh (subroutine) để theo lưu thông thông điệp trên hệ thống và xử lý một số dạng thông điệp nào đó trước khi các thông điệp đến được thủ tục ở cửa sổ đích. 3.1.3 Đặc tính của hook: Hook có xu hướng làm chậm hệ thống vì chúng gia tăng số lượng công việc xử lý của hệ thống cho mỗi thông điệp. Chỉ nên cài đặt hook khi cần thiết, và tháo bỏ ngay khi không dùng nữ a. 83 3.1.4 Các khái niệm trong hook: 3.1.4.1 Hook chains: Hệ thống hỗ trợ nhiều loại hook; mỗi dạng cung cấp khả năng truy cập đến khía cạnh khác nhau của cơ chế xử lý thông điệp. Chẳng hạn, ứng dụng có thể dùng WM_MOUSE hook để kiểm soát lưu thông thông điệp của các thông điệp về mouse. Hệ thống duy trì một hook chain (dãy các hook) riêng rẽ cho mỗi loại hook. Một hook chain là một danh sách các con trỏ trỏ đến các hàm do ứng dụng định nghĩa, đặc biệt riêng gọi là các hook procedure (thủ tục hook). Khi một thông điệp phát sinh mà liên quan đến một loại hook, hệ thống chuyền thông điệp cho mỗi hook procedure tham chiếu từ hook chain, hết cái này đến cái khác. Hoạt động một hook procedure thực hiện tùy thuộc vào loại hook quy định. Các hook procedure cho một số loại hook chỉ có thể quan sát các thông điệp; số còn lại có thể chỉnh sửa thông điệp hay chặn quá trình chuyền thông đ iệp trong hook chain, ngăn thông điệp đến được hook procedure kế tiếp hoặc cửa sổ đích. 3.1.4.2 Hook procedure Để tận dụng khả năng của mỗi loại hook, hệ thống cung cấp một hook procedure và sử dụng hàm SetWindowsHookEx để cài đặt hook procedure vào trong hook chain liên quan. Hook procedure phải theo công thức: LRESULT CALLBACK HookProc( int nCode, WPARAM wParam, LPARAM lParam ); Có thể đặt tên tùy ý, không cần phải đúng là HookProc cho hook procedure. Tham số nCode là mã hook mà hook procedure dùng để quyết định thao tác thực hiện. Giá trị mã hook tùy thuộc vào loại hook; mỗi loại lại có bộ mã hook mang tính chất riêng của nó. Các giá trị của tham số wParam và lParam tùy thuộc 84 mã hook, nhưng chúng đặc biệt chứa thông tin về thông điệp được gởi hay chuyển (post). Hàm SetWindowsHookEx luôn cài đặt một hook procedure ở đầu hook chain. Khi một sự kiện xảy ra mà được quan sát bởi một loại hook, hệ thống sẽ gọi thủ tục ở đầu hook chain liên quan đến hook. Mỗi hook procedure trong chain quyết định có nên chuyển sự kiện sang thủ tục kế tiếp. Một hook procedure chuyển sự kiện sang thủ tục kế bằng cách gọi CallNextHookEx . Chú ý các hook procedure cho một số loại hook chỉ có thể quan sát thông điệp mà thôi. Hệ thống chuyển thông điệp cho mỗi hook procedure, mặc cho mỗi thủ tục có gọi CallNextHookEx. Một hook toàn cục (global hook) kiểm soát các thông điệp cho mọi tiểu trình trên cùng desktop với tiểu trình gọi hook. Một hook riêng cho tiểu trình (thread- specific hook) kiểm sóat các thông điệp cho chỉ riêng tiểu trình đó thôi. Một hook procedure toàn cục có thể được gọi trong ngữ cảnh của bất kỳ ứng dụng trên cùng desktop với tiểu trình gọi, vì vậy thủ tục được gọi phải ở trong một module thư mục liên kết động (dynamic linked library DLL) riêng r ẽ. Một hook procedure riêng cho tiểu trình chỉ được gọi trong ngữ cảnh của tiểu trình liên quan thôi. Nếu ứng dụng cài đặt hook procedure một trong những tiểu trình của nó, hook procedure có thể trong cùng module với phần mã còn lại của ứng dụng hay trong một DLL. Nếu một ứng dụng cài đặt hook procedure cho một tiểu trình của một ứng dụng khác, thủ tục phải ở trong DLL. 3.1.4.3 Các loại hook Mỗi loại hook cho phép ứng dụng quan sát các khía cạnh khác nhau của cơ chế xử lý thông điệp của hệ thống. Các loại hook khả dụng là : • WH_CALLWNDPROC và WH_CALLWNDPROCRET Hooks • WH_CBT Hook • WH_DEBUG Hook • WH_FOREGROUNDIDLE Hook 85 • WH_GETMESSAGE Hook • WH_JOURNALPLAYBACK Hook • WH_JOURNALRECORD Hook • WH_KEYBOARD_LL Hook • WH_KEYBOARD Hook • WH_MOUSE_LL Hook • WH_MOUSE Hook • WH_MSGFILTER và WH_SYSMSGFILTER Hooks • WH_SHELL Hook Trong các hook kể trên, ta chỉ cần chú ý ba hook dành cho xử lý sự kiện bàn phím WH_GETMESSAGE, WH_KEYBOARD, WH_KEYBOARD_LL. 3.1.4.3.1 WH_GETMESSAGE Hook Hook cho phép quan sát các thông điệp sẽ trả về bởi các hàm GetMessage và PeekMessage , có thể dùng hook để quan sát các dữ liệu nhập từ mouse và bàn phím và các loại thông điệp khác từ hàng đợi thông điệp. 3.1.4.3.2 WH_KEYBOARD_LL Hook Cho phép kiểm soát các sự kiện nhập từ bàn phím sẽ được chuyển đi trong hàng đợi thông điệp. 3.1.4.3.3 WH_KEYBOARD Hook Cho phép kiểm soát dòng lưu thông các thông điệp WM_KEYDOWN, WM_KEYUP sẽ trả bởi hàm GetMessage hay PeekMessage. Hook cũng có thể được dùng để kiểm soát các sự kiện nhập từ bàn phím sẽ được chuyển đi trong hàng đợi thông điệp. 3.1.5 Tiếp cận vấn đề: Như vậy, ta phải tạo một hook có khả năng chặn bắt các sự kiện bàn phím, ghi nhận, cho phép hoặc hủy bỏ trước khi các thông điệp bàn phím đến được cửa sổ [...]... Nhấn Start, chạy Run, mở gõ chương trình cần chạy c Chạy My Computer, dò chương trình trong cây thư mục d Mở Windows Explorer, dò chương trình trong cây thư mục e … 4 Khi sử dụng xong chương trình, người dùng đóng chương trình lại 5 Quay trở lại bước 2 Vòng lặp sẽ xảy ra cho đến khi người dùng sử dụng xong máy tính 6 Tắt máy tính Các bước 1 và 6 có thể được bỏ qua Ta sẽ xem xét các bước từ 2 đến 6 Dễ... thông thường các phòng máy chỉ cần hai thiết bị nêu 96 trên là đủ Vì vậy, ta sẽ xem xét các tương tác của người dùng để sử dụng máy tính bằng hai thiết bị trên Sau khi khảo sát, quy trình sử dụng máy thông thường sẽ là: 1 Bật máy lên 2 Nếu có icon chương trình cần chạy trên desktop, kích hoạt chương trình 3 Nếu chương trình không có trên desktop, người dùng sẽ lục tìm trên máy bằng nhiều cách khác nhau... cần Chương trình hoàn chỉnh còn có thêm khả năng sử dụng hook cho đồng thời tối đa 256 tiến trình và tối đa 10 24 bộ kiểm sóat Phần việc còn lại chỉ cần thay đổi một ít mã nguồn để tích hợp vài chương trình chính 95 Hình 3-5 Tinh chế 3 3.2 Xây dựng màn hình che: Trong quá trình thực hiện phần mềm, có một yêu cầu cần thiết cho chương trình quản lý phòng máy là cần phải ngăn chặn người dùng không dùng máy. .. Windows cung cấp Các hàM API này được nêu rõ trong Phụ lục Các hàm API hữu ích sử dụng trong chương trình gồm: SetWindowsHookEx (cài đặt hook), UnhookWindowsHookEx (gở bỏ hook), CallNextHookEx (truyền cho hook kế) Các hàm API của Windows từ đây trở đi khi được đề cập đến nếu được sử dụng nhiều trong chương trình, sẽ được nêu rõ trong Phụ lục Các hàm API hữu ích sử dụng trong chương trình Xây dựng hook... 1: Chương trình hoạt động khá tốt nhưng ta vẫn chưa đề cập đến các phím chức năng (ví tổ hợp Alt-Tab…) Thật vậy, chương trình hoàn toàn bất lực trước các phím chức năng vì ta không thiết kế chức năng “nhập” các phím chức năng, mà cho dù có, ta cũng không “bắt” được Điều này không chấp nhận được vì ứng dụng ta mong muốn cần phải chặn bắt các sự kiện bàn phím khi người dùng đang sử dụng 90 Hình 3-3 Tinh... làm một cách nào đó mà các dữ liệu ta cần (biến x) có thể dùng cho mọi thể hiện của DLL Điều này có thể thực hiện được bằng cách sử dụng đọan không gian địa chỉ chia sẻ (shared segment), xem thêm chi tiết về vấn đề này trong phần Phụ lục DLL – thư viện liên kết động 89 Khi đó, do các biến ta cần đều được đặt trong đoạn không gian địa chỉ chia sẻ, các thể hiện của DLL được nạp trong mỗi tiến trình đều... ký với người quản trị để sử dụng Một điều thực tế hiển nhiên là các máy tính trong phòng máy phải luôn bật máy sẵn sàng Vì vậy, ta cần xây dựng một màn hình che trên màn hình để người dùng không thể tương tác với máy 3.2.1 Phân tích sơ lược: Ta nhận thấy rằng để tương tác với máy tính, thông thường người dùng sẽ sử dụng hai thiết bị tương tác là mouse và bàn phím Ta không cần quan tâm về các loại thiết... được gởi, 0 nếu ngược lại 87 31 cho biết trạng thái chuyển đổi 0 nếu phím đang nhấn, 1 nếu phím được thả Tới đây, ta đã vượt qua một lượng lớn kiến thức khá thú vị về cơ chế hook Đã đến lúc làm một việc gì đó cụ thể, ta cài đặt bài tóan nêu ở Tinh chế 0: Xây dựng các hàm cài đặt gở bỏ: quy tắc viết hàm theo module DLL, cách nạp một DLL vào bộ nhớ và thực thi, xem chi trong phần mã nguồn chương trình Ở. .. một keylogger đơn giản, ít phức tạp hơn nhiều Hình 3 -4 Tinh chế 2 3.1.5 .4 Tinh chế 3: Xây d•ng m•t •ng d•ng cài ••t m•t hook toàn c•c Khi •ng d•ng ch•y, xu•t ra màn hình ký t• ng••i dùng gõ Ta cần lưu ý kỹ thuật lập trình truyền thông điệp chứa dữ liệu ký tự phím gõ từ hook procedure đến cửa sổ xử lý Điều này có thể thực hiện được khi lúc ban đầu 94 khởi tạo hook ta cần cho hook biết cần kiểm sóat bao... dụng máy tính là đánh văn bản Trong phòng máy tính Café Internet, bàn phím được dùng để chat, nhập thông tin người dùng trong lúc lướt web… Chỉ có một số nhỏ người dùng am hiểu rõ và ghi nhớ các phím tắt do Windows gán để tương tác với desktop Chẳng hạn, xem bảng so sánh các thao tác bằng mouse và bàn phím qua hai thao tác hay dùng là mở Control Panel và shutdown máy: Bằng mouse Bằng bàn phím 98 1 Mở . Visual Studio 6.0 2.3.2 Thử nghiệm: Chương trình được cài đặt thử nghiệm trên phòng máy của trung tâm mạng Máy Tính Nhất Nghệ - đường Bà Huyện Thanh Quan - với kết quả như sau:. STT. và các dịch vụ liên quan Tốt 3 Quản trị từ xa Tốt 4 Chụp màn hình tĩnh Tốt 5 Chụp màn hình động Tốt 6 Policy Tùy thuộc vào thiết lập máy phía Client 81 Chương 3 Các kỹ thuật lập trình. kiểm soát các thông điệp cho mọi tiểu trình trên cùng desktop với tiểu trình gọi hook. Một hook riêng cho tiểu trình (thread- specific hook) kiểm sóat các thông điệp cho chỉ riêng tiểu trình đó

Ngày đăng: 07/08/2014, 05:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN