BÁO CÁO MÔN HỌC CƠ SỞ NGÀNH MẠNG ĐỀ TÀI : NGUYÊN LÝ HỆ ĐIỀU HÀNH: Tìm hiểu kỹ thuật lập trình Hook. Xây dựng ứng dụng hỗ trợ soạn thảo và tra cứu từ vựng tiếng anh LẬP TRÌNH MẠNG: Xây dựng ứng dụng trên máy điện thoại quản lý quản lý lịch làm việc cá nhân. Chương trình cho phép kết nối với Google Calendar để đồng bộ dữ liệu.
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO MÔN HỌC CƠ SỞ NGÀNH MẠNG ĐỀ TÀI : NGUYÊN LÝ HỆ ĐIỀU HÀNH: Tìm hiểu kỹ thuật lập trình Hook Xây dựng ứng dụng hỗ trợ soạn thảo tra cứu từ vựng tiếng anh LẬP TRÌNH MẠNG: Xây dựng ứng dụng máy điện thoại quản lý quản lý lịch làm việc cá nhân Chương trình cho phép kết nối với Google Calendar để đồng liệu MỤC LỤ CHƯƠNG 1: NGUYÊN LÝ HỆ ĐIỀU HÀNH .1 1.1 1.2 Giới thiệu đề tài Cơ sở lý thuyết 1.2.1 Khái niệm Hook 1.2.2 Cơ chế hoạt động Hook .2 1.2.3 Phân loại Hook 1.2.4 Cách cài đặt Hook 1.2.5 Cách giải phóng Hook 1.2.6 Ứng dụng Hook 1.3 Giải toán 1.3.1 Các bước giải toán 1.3.2 Kết thực .7 CHƯƠNG 2: LẬP TRÌNH MẠNG 2.1 2.2 Giới thiệu đề tài Cơ sở lý thuyết 2.2.1 Use-case .9 2.2.2 Client-Server 10 2.2.3 SQL Server .11 2.3 Giải toán 12 2.3.1 Các bước giải toán 12 1) Phân tích vẽ sơ đồ use-case hệ thống 12 2) Phân tích bảng sở liệu 12 3) Phân tích xây dựng cấu trúc server client 13 2.3.2 Kết thực .14 CHƯƠNG 3: PHỤ LỤC + MÃ NGUỒN .18 3.1 Nguyên lý hệ điều hành 18 3.1.1 Đọc liệu từ file: 18 3.1.2 Cài đặt Hook: 19 3.1.3 Khởi tạo hình gợi ý: 22 3.2 Lập trình mạng 25 3.2.1 Server .25 3.2.2 Client 38 DANH SÁCH HÌNH ẢNH STT Hình Nội dung 1.1 Mơ hình Hook 1.2 Hiển thị gợi ý soạn thảo Excel 1.3 Hiển thị gợi ý soạn thảo Notepad 1.4 Hiển thị gợi ý soạn thảo Chrome browser 2.1 Sơ đồ use case hệ thống quản lý công việc 2.2 Màn hình hiển thị danh sách cơng việc 2.3 Màn hình xem chi tiết chỉnh sửa cơng việc 2.4 Màn hình tạo cơng việc 2.5 Dữ liệu công việc đồng lên Google Calendar DANH SÁCH TỪ VIẾT TẮT Từ viết tắt Diễn giải ID Identity ADD Adding API Application Programming Interface SQL Structured Query Language IIS Internet Information Services HTTP SYNC Hyper-Text Transfer Protocol Synchronize MỞ ĐẦU Tổng quan đề tài - Nội dung đề tài gắn liền với thực tiễn công việc học tập sinh viên - Việc vận dung kiến thức học để giải toán sống nhằm giúp nâng cao khả xử lý giải vấn đề thực tiễn Mục đích ý nghĩa đề tài 2.1 Mục đích - Đi sâu nắm vững cách có hệ thống kiến thức thu nhận q trình học lí thuyết, làm tập thực hành - Từng bước làm quen với cơng tác khoa học có định hướng giáo viên hướng dẫn hình thành hành vi nghiên cứu độc lập có trợ giúp tài liệu tham khảo - Gắn q trình học lí thuyết với cơng tác nghiên cứu thực tế - Trình bày rõ ràng khoa học vấn đề thuộc lĩnh vực nghiện cứu 2.2 Ý nghĩa - Kết cơng việc phản ánh cơng sức, tài năng, trí tuệ người làm đồ án phải trình bày văn đồ án môn học theo chuẩn mực yêu cầu giáo viên hướng dẫn - Đồ án môn học phản ánh công sức nghiên cứu nên cần phải trình bày trước mơn đánh giá điểm số Việc trình bày đúng, rõ ràng, ngắn gọn khoa học có sinh viên có q trình lao động nghiêm túc cho đề tài có chuẩn bị đầy đủ kiến thức lĩnh vực nghiên cứu đề tài Bố cục đồ án Báo cáo đồ án bao gồm nội dung sau: Mở đầu Chương 1: Nguyên lý hệ điều hành Chương 2: Lập trình mạng Chương 3: Phụ lục Kết luận hướng phát triển Tài liệu tham khảo Báo cáo đồ án sở ngành mạng CHƯƠNG 1: NGUYÊN LÝ HỆ ĐIỀU HÀNH 1.1 Giới thiệu đề tài Đề tài: Tìm hiểu kỹ thuật lập trình Hook Xây dựng tra cứu hỗ trợ tra cứu từ điển soạn thảo văn tiếng Anh Mô tả vấn đề: - Việc soạn thảo văn tiếng anh thường gây lỗi tả, sai ngữ nghĩa câu hay người thường khó khăn ghi nhớ từ vựng, để giúp đỡ người soạn thảo nhanh chóng làm việc xác, ta cần cơng cụ nhằm hỗ trợ tra cứu thông tin từ ngữ ngữ cảnh Yêu cầu toán: - Phải tự động truy xuất đến liệu có liên quan đến nội dung người soạn thảo sử dụng để hỗ trợ , gợi ý từ ngữ phù hợp với ngữ cảnh - Kĩ thuật sử dụng để giải vấn đề đặt sử dụng Hook Hình 1.1: Mơ hình Hook SVTH: Dương Quỳnh Quang GVHD: PGS.TS Nguyễn Tấn Khôi Báo cáo đồ án sở ngành mạng 1.2 Cơ sở lý thuyết 1.2.1 Khái niệm Hook Trong Windows, thực thao tác nhấp chuột, nhấn phím… hệ điều hành chuyển kiện thành thông điệp (message) đưa vào hàng đợi (queue) hệ thống Sau đó, thông điệp trao lại cho ứng dụng cụ thể để xử lý Hook chế mà ứng dụng chặn kiện, thơng điệp, thao tác chuột, bàn phím Hàm dùng để chặn loại kiện riêng biệt gọi hook procedure/ Hook function (thủ tục hook / hàm hook) Filter Function (hàm lọc) Mỗi nhận kiện, hookprocedure thay đổi chí hủy bỏ kiện Các mơ hình Hook: - Local hook: Là kỹ thuật Hook dùng để bẫy kiện tiến trình cài đặt - Remote hook: Là kỹ thuật Hook cho phép bẫy kiện thuộc tiến trình ứng dụng khác Trong mơ hình lại tồn hai kiểu hook khác : + + Thread-specific : Kiểu Hook bẫy kiện luồng cụ thể System-wide : Bẫy kiện tất luồng tất tiến trình thi hành hệ thống Hook kỹ thuật xử lý thông điệp mạnh cho phép can thiệp sâu vào tiến trình khác nhau, làm ảnh hưởng tới tốc độ hệ thống, hook system-wide Vì tất kiện hệ thống định hướng tới hàm đó, rõ ràng điều làm hệ thống chậm đáng kể Vì ta hên hook thông điệp thật cần thiết kết thúc việc hook không dùng đến 1.2.2 Cơ chế hoạt động Hook Có nhiều loại hook (như chuột, bàn phím) hệ điều hành ln trì danh sách hook procedure cho loại Mỗi danh sách Hook procedure gọi hookchain(chuỗi hook) Bản chất hook chain dãy trỏ hàm trỏ đến Hook procedure SVTH: Dương Quỳnh Quang GVHD: PGS.TS Nguyễn Tấn Khôi Báo cáo đồ án sở ngành mạng Khi hệ thống thực kiện đó, tìm kiếm hook chain tương ứng với kiện Nếu hook procedure phù hợp tìm thấy, hệ thống thực lấy lại quyền điều khiển sau hook chain kết thúc Vì hook procedure thực xong, phải thực việc chuyển quyền điều khiển cho hook procedure hook chain Tuy nhiên chế tùy thuộc vào loại hook Như số loại hook theo dõi thơng điệp, cho dù hook procedure có chuyển quyền điều khiển cho hook procedure hay không, hệ thống tự động làm việc Một điểm cần lưu ý hook làm chậm hệ thống, bạn nên cài đặt hook cần thiết loại bỏ hồn tất cơng việc 1.2.3 Phân loại Hook Có nhiều loại hook phân biệt dựa vào kiện, thông điệp mà Hook procedure can thiệp vào Danh sách liệt kê loại hook: WH_CALLWNDPROC and WH_CALLWNDPROCRET : cho phép bạn theo dõi thông điệp gởi đến thủ tục cửa sổ (window procedure) WH_CBT : Hệ thống gọi thủ tục hook WH_CBT : trước activating, creating, destroying, minimizing, maximizing, moving, hoặcsizing cửa sổ ; trước hoàn thành lệnh hệ thống, trước loại bỏ kiện chuột bàn phím từ hàng đợi thông điệp hệ thống … WH_DEBUG : Hệ thống gọi thủ tục hook WH_DEBUG trước gọi thủ tục hook kết hợp với hook khác hệ thống WH_FOREGROUNDIDLE: Các hook WH_FOREGROUNDIDLE cho phép bạn thực tác vụ ưu tiên thấp thời gian tác vụ chế độ foreground idle WH_GETMESSAGE : Hook WH_GETMESSAGE cho phép ứng dụng theo dõi thông điệptrả hàm GetMessage PeekMessage SVTH: Dương Quỳnh Quang GVHD: PGS.TS Nguyễn Tấn Khôi Báo cáo đồ án sở ngành mạng WH_JOURNALPLAYBACK : Các hook WH_JOURNALPLAYBACK cho phép ứng dụng chèn thêm thông điệp vào hàng đợi thông điệp hệ thống WH_JOURNALRECORD: Các hook WH_JOURNALRECORD cho phép bạn giám sát ghi lại kiện đầu vào WH_KEYBOARD_LL : Các hook WH_KEYBOARD_LL cho phép bạn theo dõi kiện bàn phím hàng đợi ứng dụng WH_KEYBOARD : Hook WH_KEYBOARD cho phép ứng dụng theo dõi lưu lượng truy cập thông điệp WM_KEYDOWN WM_KEYUP điệp trả thông hàm GetMessage PeekMessage WH_MOUSE_LL : Các hook WH_MOUSE_LL cho phép bạn theo dõi kiện chuột hàng đợi ứng dụng WH_MOUSE : Các hook WH_MOUSE cho phép bạn theo dõi thông điệp chuột trả hàm GetMessage PeekMessage WH_MSGFILTER and WH_SYSMSGFILTER : Cho phép theo dõi thông điệp xử lý menu, scrollbar, dialog… 1.2.4 Cách cài đặt Hook Một thủ tục hook cài đặt vào chuỗi hook việc gọi hàm SetWindowsHookEx kiểu hook gọi thủ tục, việc cài đặt hook thực tiến trình hệ thống Nếu sử dụng hook tồn cục phải đặt thư viện liên kết động (DLL) Ứng dụng muốn sử dụng thư viện liên kết động phải lấy handle thư viện Để nhận Handle thư viện liên kết động ta sử dụng hàm LoadLibrary với tham số tên thư viện Sau có Handle DLL, ta lấy địa thủ tục hook thư viện liên kết động thông qua hàm GetProcAddress Sau có thủ tục hook, sử dụng hàm SetWindowsHookEx để cài đặt thủ tục hook vào chuỗi hook SVTH: Dương Quỳnh Quang GVHD: PGS.TS Nguyễn Tấn Khôi Báo cáo đồ án sở ngành mạng 1.2.5 Cách giải phóng Hook Một hook nên bỏ không cần thiết cách sử dụng hàm UnhookWindowsHookEx Với thread-specific hook, việc sử dụng hàm UnhookWindowsHookEx giải phóng thủ tục hook Tuy nhiên với hook tồn cục (system-wide hook) hàm khơng thể trả tự cho hàm DLL Việc gọi hàm LoadLibrary gọi ngữ cảnh tất tiến trình, nhiên hàm FreeLibrary khơng thể thực với tiến trình khác Vì vậy, khơng có cách để giải phóng DLL Hệ thống giải phóng DLL tất tiến trình liên kết tới DLL phải kết thúc gọi FreeLibrary Giải pháp đặt cho vấn đề xây dựng hàm cài đặt thư viện DLL Bằng việc liên kết tới DLL, ứng dụng cài đặt hook Và DLL phải có hàm giải phóng hook để giải phóng khơng cần đến 1.2.6 Ứng dụng Hook Hook cung cấp khả mạnh cho ứng dụng chạy Windows, ứng dụng dùng hook để : Xử lý định nghĩa tất thông điệp cho dialog box, message box, scroll bar, menu ứng dụng (Sử dụng hook WH_MSGFILTER) Xử lý định nghĩa tất thông điệp cho dialog box, message box, scroll bar, menu hệ thống (Sử dụng hook WH_SYSMSGFILTER) Xử lý định nghĩa tất thông điệp (bất chấp thông điệp gì) hệ thống GetMessage PeekMessage gọi (Sử dụng hook WH_GETMESSAGE) Xử lý định nghĩa tất thông điệp (bất chấp thông điệp gì) hệ thống SendMessage gọi (Sử dụng hook WH_CALLWNDPROC) Thu (Record) phát lại (Playback) kiện keyboard mouse (Sử dụng hook WH_JOURNALRECORD, WH_JOURNALPLAYBACK) SVTH: Dương Quỳnh Quang GVHD: PGS.TS Nguyễn Tấn Khôi