1. Trang chủ
  2. » Công Nghệ Thông Tin

Gameguard hệ thống phần mềm bảo vệ trò chơi trực tuyến trên nền windows chống lại các hacker

100 455 0

Đ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

Cấu trúc

  • TRANG BÌA

  • LỜI CẢM ƠN

  • LỜI CAM ĐOAN

  • MỤC LỤC

  • DANH MỤC HÌNH VẼ

  • DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ SỬ DỤNG

  • PHẦN 1: MỞ ĐẦU

  • 1.LÝ DO CHỌN ĐỀ TÀI

  • 2.LỊCH SỬ NGHIÊN CỨU

  • 3.MỤC ĐÍCH NGHIÊN CỨU

  • 4.TÓM TẮT

  • 5.PHƯƠNG PHÁP NGHIÊN CỨU

  • PHẦN 2: NỘI DUNG ĐỀ TÀI

  • CHƯƠNG I. TỔNG QUAN VỀ HỆ THỐNG TRÒ CHƠI TRỰC TUYẾN

  • CHƯƠNG II.

  • CHƯƠNG III.

  • PHỤ LỤC VÀ CÁC VẤN ĐỀ THAM KHẢO

  • A.QUẢN LÝ BỘ NHỚ WINDOW

  • B.BẢO MẬT TRONG HỆ ĐIỀU HÀNH WINDOWS

  • C.GIƯÓI THIỆU VÀI NÉT VỀ DIRECTX

  • D.GIỚI THIỆU CÁC ĐOẠN CODE

  • E.GIỚI THIỆU CƠ BẢN VỀ LẬP TRÌNH HOOK

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI BÙI THẾ LUÂN GAMEGUARD: HỆ THỐNG PHẦN MỀM BẢO VỆ TRÒ CHƠI TRỰC TUYẾN TRÊN NỀN WINDOWS CHỐNG LẠI CÁC HACKER Chuyên ngành : Công nghệ thông tin LUẬN VĂN THẠC SĨ KHOA HỌC CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC : TS Nguyễn Khanh Văn Hà Nội – Năm 2010 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn LỜI CẢM ƠN Để hoàn thành chương trình cao học viết luận văn này, nhận hướng dẫn, giúp đỡ góp ý nhiệt tình quý thầy cô thuộc Viện công nghệ thông tin, trường Đại học Bách Khoa Hà Nội Trước hết, xin chân thành cảm ơn đến quí thầy cô thuộc Viện công nghệ Thông tin, trường Đại học Bách Khoa Hà Nội, đặc biệt thầy cô tận tình dạy bảo cho suốt thời gian học tập trường Tôi xin gửi lời biết ơn sâu sắc đến Tiến sĩ Nguyễn Khanh Văn dành nhiều thời gian tâm huyết hướng dẫn nghiên cứu giúp hoàn thành luận văn tốt nghiệp Đồng thời, xin cảm ơn quí anh, chị ban lãnh đạo Công ty đầu tư phát triển công nghệ thông tin (VTC Intecom), Tổng công ty Truyền thông đa phương tiện (VTC) … tạo điều kiện dành cho thời gian nghiên cứu để thực luận văn Mặc dù có nhiều cố gắng hoàn thiện luận văn tất nhiệt tình lực mình, nhiên tránh khỏi thiếu sót, mong nhận đóng góp quí báu quí thầy cô bạn Mọi ý kiến góp ý xin gửi địa luanbt@gmail.com Xin chân thành cảm ơn! Hà Nội, ngày tháng Học viên Bùi Thế Luân Trang 1/99 năm 2010 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn LỜI CAM ĐOAN Tôi xin cam đoan công trình nghiên cứu riêng tôi, không thực chép nội dung từ nguồn tài liệu, tư liệu Nội dung luận văn hoàn toàn tác giả nghiên cứu thực hướng dẫn Tiến sĩ Nguyễn Khanh Văn, thuộc Viện Công nghệ Thông tin, trường Đại học Bách Khoa Hà Nội Ngoài ra, nội dung luận văn có tham khảo thông tin đăng tải website, báo công trình nghiên cứu có danh mục tài liệu tham khảo luận văn Tác giả luận văn Bùi Thế Luân Trang 2/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn MỤC LỤC PHẦN 1: MỞ ĐẦU   7  Lý chọn đề tài Lịch sử nghiên cứu Mục đích nghiên cứu luận văn, đối tượng, phạm vi nghiên cứu 10 Tóm tắt cô đọng luận điểm đóng góp tác giả 12 Phương pháp nghiên cứu 13 PHẦN 2: NỘI DUNG ĐỀ TÀI   15  CHƯƠNG I TỔNG QUAN VỀ HỆ THỐNG TRÒ CHƠI TRỰC TUYẾN 15 1.1 Giới thiệu tổng quan trò chơi trực tuyến 15 1.2 Giới thiệu loại trò chơi trực tuyến 16 1.3 Mô hình, tính chất trò chơi trực tuyến 17 1.3.1.Mô hình game trực tuyến 17 1.3.2.Tính chất trò chơi trực tuyến 21 1.4 Ưu điểm, nhược điểm tính bảo mật trò chơi trực tuyến 22 CHƯƠNG II KHẢO SÁT CÁC LOẠI TẤN CÔNG, LỪA DỐI ĐỐI VỚI TRÒ CHƠI TRỰC TUYẾN 24 2.1 Khảo sát hình thức công, lừa dối trò chơi trực tuyến 24 2.2 Các loại hình công, lừa dối trò chơi trực tuyến 25 2.2.1 Tấn công, lừa dối tác động vào nhớ (Memory attack) 25 2.2.2 Tấn công, lừa dối tác động vào đồ họa (DirectX attack) 27 2.2.3 Tấn công, lừa dối tác động vào phần cứng (Hardware attack) 30 2.2.4 Tấn công vào máy chủ (Server attack) 31 2.3 Các kỹ thuật sử dụng hack game 32 2.3.1 Kỹ thuật hooking: 32 2.3.2 Kỹ thuật DLL Injection 34 2.3.3 Kỹ thuật đón, nhận sửa gói tin kết 35 CHƯƠNG III NGHIÊN CỨU GIẢI PHÁP VÀ XÂY DỰNG MÔ HÌNH FRAMEWORK CHỐNG TẤN CÔNG LỪA DỐI TRONG TRÒ CHƠI TRỰC TUYẾN 36 3.1 Định hướng nghiên cứu giải pháp, công nghệ chống công, lừa dối 36 Trang 3/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn 3.2 Xây dựng mô hình framework chống công, lừa dối trò chơi trực tuyến 40 3.3 Giới thiệu thành phần chi tiết chức mô hình framework 43 3.4 Quy trình hoạt động mô hình framework 50 CHƯƠNG IV: CÀI ĐẶT, TÍCH HỢP VÀ THỬ NGHIỆM HỆ THỐNG 52 4.1 Mô hình cài đặt tích hợp hệ thống 52 4.2 Mô hình triển khai hệ thống 53 4.3 Mô hình triển khai phân tải hệ thống: 54 4.4 Kết thử nghiệm hệ thống 56 CHƯƠNG V: KẾT LUẬN 59 5.1 Những kết luận 59 5.2 Đóng góp kiến nghị tác giả sử dụng kết nghiên cứu 60 PHỤ LỤC VÀ CÁC VẤN ĐỀ THAM KHẢO 63 A Quản lý nhớ window (Window memory management) 63 A.2 Paging in x86 Processor 63 A.3 Windows Page Table Management 64 A.4 Memory Protection 66 A.5 Windows Logical Memory Layout (sự xếp đặt) 67 B Bảo mật hệ điều hành windows 71 B.1 Các vòng bảo vệ hệ điều hành windows (Protection Rings) 71 B.2 Chức tầng hệ điều hành Windows 72 C Giới thiệu vài nét DirectX 73 D Giới thiệu đoạn code có khả thực thi độc lập ko phụ thuộc vào “nơi cư trú” (independence code section) 83 D.1 Mở đầu 83 D.2 Kỹ thuật “Delta offset “ 85 D.3 Các thị chuyển hướng điều khiển: 87 D.4 Định hướng biên dịch ASM để tính tổng số Bytes đoạn code 91 E Giới thiệu lập trình hook 92 E.1 Hook ? 93 E.2 Cơ chế hoạt động Hook 93 E.3 Ứng dụng Hook 94 E.4 Cài đặt Hook 94 Trang 4/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn DANH MỤC HÌNH VẼ Hình 1: Mô hình cung cấp dịch vụ game trực tuyến NCC.   17  Hình 2: Mô hình WebGame   18  Hình 3: WebGame Linh Vương chạy web browser.   18  Hình 4: Mô hình GameConsole   19  Hình 5: Game Console chơi máy client   19  Hình 6: Mô hình công hacker vào hệ thống game trực tuyến   24  Hình 7: Cấp phát quản lý nhớ hệ điều hành Windows.   25  Hình 8: Mô công nhớ   26  Hình 9: Hacker dùng công cụ để dò tìm biến game thay đổi giá trị   27  Hình 10: Mô công đồ họa DirectX   28  Hình 11 : Ví dụ hack tàng hình trò chơi CrossFire.   28  Hình 12: Một số API bị thay đổi hacker.   29  Hình 13: Minh họa tác động vào đồ họa DirectX   30  Hình 14: Mô công phần cứng  . 31  Hình 15: Mô công máy chủ (Server)   31  Hình 16: Ví dụ công máy chủ   31  Hình 17: Kỹ thuật đón nhận sửa gói tin kết quả.   35  Hình 18: Mô hình hai giải pháp chống công cụ hack.   39  Hình 19: Tác động tới window nhằm hidden thông tin monitor hệ thống.  . 40  Hình 20: Mô hình hệ thống Client-Server trò chơi trực tuyến   41  Hình 21: Mô hình tổng thể hệ thống GameGuard   42  Hình 22: Mô hình tương tác thành phần hệ thống GameGuard  . 43  Hình 23: Mô hình cấu trúc hệ thống GameGuard phía Client   45  Hình 24: GG tác động vào nhân window nhằm che dấu(hidden) thông tin giám sát hệ thống.   46  Hình 25: Tổ chức module chức frameword GameGuard.  . 46  Hình 26: Cơ chế đồng tương tác GG GC   47  Hình 27: Cơ chế xác thực chéo thành phần hệ thống   48  Trang 5/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn Hình 28: Cơ chế xác thực so sánh mẫu để nhận biết tiến trình hack.   49  Hình 29: Khả bảo vệ nhiều trò chơi chạy lúc.   50  Hình 30: Sơ đồ khối hoạt động mô hình framework.   51  Hình 31: Mô hình cài đặt hệ thống GG với hệ thống GC VTC.   53  Hình 32: Mô hình triển khai hệ thống.   54  Hình 33: Mô hình triển khai phân tải hệ thống.  . 55  Hình 34: Mô hình kết nối phân tải site hệ thống   56  Hình 35: Bảng kết thử nghiệm khả nhận biết công cụ hack game   57  Hình 36: Bảng kết so sánh GG X-Trap, NProtect   58  Hình 37: Ánh xạ (mapping) địa xử lý X86   64  Hình 38: Bảng xếp đia chỉ   67  Hình 39: Minh họa Ring kiến trúc x86  . 71  Hình 40: Cấu tạo đường ống Driect3D 11   76  Hình 41: Tạo đối tượng với cấu trúc đường ống tại   77  Hình 42: Hull Shader tiến trình   78  Hình 43: Hoạt động công cụ phủ Tessellator   79  Hình 44: Hoạt động Domain Shader  . 80  Hình 45: Tạo đối tượng với cấu trúc đường ống mới   81 Trang 6/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ SỬ DỤNG Game online : Trò chơi trực tuyến CCU : Đơn vị người chơi game(communication control unit) NPP : Nhà phân phối NCC : Nhà cung cấp Client-Server : Giao thức client-server GG : GameGuard GC : GameClient Syn/Alarm : Cơ chế đồng cảnh báo Hack tool : Công cụ công Native API : Thư viện hàm window NT DirectX : Thư viện hỗ trợ đồ họa âm Trang 7/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn PHẦN 1: MỞ ĐẦU Lý chọn đề tài Trò chơi trực tuyến, tức Game Online, trở thành ngành công nghiệp dịch vụ giải trí có mức độ phát triển nóng Hình thức dịch vụ cung cấp trò chơi tập thể người chơi ngồi nhà với máy tính nối mạng, tham gia vào giới trò chơi ảo, xây dựng nhà cung cấp game Máy chủ nhà cung cấp làm nhiệm vụ liên tục thu nhận hành vi chơi người chơi, xử lý thông tin đồng từ tập thể người chơi cập nhật trạng thái cho máy chơi Sự tham gia tập thể nhiều người chơi dù mặt vào trò chơi có kịch công phu, thu hút, làm nên sức nóng Game Online, loại hình dịch vụ hứa hẹn trở nên sức hút lớn đầu tư cho công nghiệp dịch vụ IT Điều thúc đẩy nghiên cứu lĩnh vực với hai quan tâm chính: cải thiện chất lượng trò chơi xây dựng phương pháp phát ngăn chặn lừa gạt, dối trá (cheating) game online Lừa dối Game Online đa dạng phổ biến với nhiều kỹ thuật từ thô sơ công phu Kẻ lừa dối thường hacker với kiến thức tin học định, tìm cách can thiệp vào yếu tố chương trình trò chơi để đạt lợi định đối thủ chơi, vi phạm luật lệ tính công trò chơi Một hình thức lừa dối điển hình can thiệp vào nhớ liệu chương trình để thay đổi trạng thái trò chơi theo hướng có lợi cho kẻ lừa dối Các nhà cung cấp trò chơi cố gắng xây dựng phương pháp bảo vệ phần mềm để ngăn cản hình thức lừa dối, thực tế cho thấy cố gắng nhiều hạn chế, chưa thu nhiều hiệu Đặc biệt số nước chưa có công nghiệp game online nội địa phát triển Việt nam, nhà cung cấp thường từ nước công ty nước làm nhiệm vụ phân phối tổ chức dịch vụ thiết bị cho người chơi Vì việc bảo vệ chống lừa dối thêm khó khăn khác nhà cung cấp không Trang 8/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn thể chủ động khảo sát môi trường chơi để phát công lừa dối nhà phân phối nội địa khả thay đổi ảnh hưởng đáng kể vào thân phần mềm cung cấp để chống lại công lừa dối Cụ thể hơn, nhà cung cấp/xây dựng (NCC) trò chơi thiếu điều kiện để nắm đặc thù dạng công, công cụ lừa dối (hack tool ) phát triển địa phương; ngược lại nhà phân phối (NPP) địa phương trực tiếp phát triển mã nguồn kiểm tra môi trường máy chơi game client Hiện thị trường game Việt Nam có nhiều nhà cung cấp dịch vụ, phải kể đến nhà cấp dịch vụ lớn VTC-Game, với trò chơi VTCGame cung cấp chiếm thị phần lớn (khoảng 55%) người chơi (CCU) nước, lượng người chơi lúc cao điểm lên tới khoảng 10 ngàn CCU game thời điểm Tuy nhiên thời gian qua lượng CCU giảm đáng kể lượng người chơi sử dụng công cụ hack game lớn, làm cho doanh thu lượng người chơi giảm xuống nhanh chóng, nạn hack game trở thành vấn đề gây đau đầu nhà phát hành game nước Một câu hỏi lớn đặt “Làm ngăn chặn nạn hack game diễn phức tạp nước ta thời điểm nay?”, câu hỏi bỏ ngỏ dường chưa có câu trả lời thực đắn cho Chính để trả lời cho câu hỏi mà tác giả lựa chọn đề tài để nghiên cứu, việc bám sát bước tiến nghiên cứu giới có, tác giả đưa số đóng góp phân tích ý tưởng xây dựng mô hình (framework) mang tính tổng quát hóa lĩnh vực chống hack game Đề tài có ý nghĩa thực tiễn lớn việc mang tính ứng dụng cần thiết cung cấp cho người làm bảo mật tài liệu nghiên cứu có tính tổng quát cao sát với thực tế thời điểm lĩnh vực bảo mật Lịch sử nghiên cứu Trên thực tế nay, lượng báo nghiên cứu lỗ hổng, điểm yếu hệ thống game trực tuyến từ xây dựng giải pháp bảo vệ Game trực Trang 9/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn Nó ko chạy với lý thứ là: IMPORT section ko giống như (các bạn nên đọc tut PE format để hiểu vấn đề này) Tôi xin nói thêm chút, Mirosoft phát hành hệ điều hành Windows có chế độ bảo vệ là: đoạn code nằm vùng nhớ (ring3 mode) phải phụ thuộc vào process Đồng thời Mirosoft tạo thư viện hàm APIs động để imports vào process hàm mà process cần dùng Làm hạn chế Vxer (người viết virus) công hệ thống thiếu hàm APIs để code Microsoft tưởng với chế độ bảo vệ “mẹ bồng con” khó có virus ăn bám theo Nhưng hoàn toàn bất ngờ Vxer dùng kỹ thuật “độc lập hóa” đoạn code virus mà họ muốn “tiêm chích” vào hệ thống Đồng thời đoạn code độc lập họ sử dụng hàm APIs Windows Trong tìm hiểu kỹ thuật “độc lập hóa” đoạn code nhất, với kỹ thuật ứng dụng vào điều có ích programming HOOK , reversing virus để khống chế nó, hay nói khác học anti-virus Mặc dù kiến thức có từ lâu, tài liệu tiếng Việt chưa thấy , việc tìm hiểu khó khăn D.2 Kỹ thuật “Delta offset “ Như bạn thấy, đoạn code thực thi tham chiếu đến địa VA mang chổ khác khó mà thực thi Vì , tòan đoạn code độc lập phải sử dụng thị asm ko phụ thuộc vào địa VA (địa ảo mà Windows mapping đoạn code vào memory) hay thị tham chiếu đến VA thực thông qua RVA (VA=RVA+ Image Base) RVA khỏang cách từ địa tham chiếu đến điểm thường gọi Image Base Image Base đoạn code độc lập địa thị đoạn code Hay nói cách khác, đoạn code sử dụng kỷ thuật “tham chiếu qua địa tương đối” Do kỹ thuật đầu Trang 85/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn tiên cần tìm hiểu kỹ thuật tìm lưu giữ Image Base đoạn code Kỹ thuật mang tên “DELTA OFFSET” Sau toàn phần dịch từ “PE INFECTION TUTORIAL FOR BEGINNER” LiTlLe VxW kỹ thuật “DELTA OFFEST”: Tôi giải thích cho bạn DELTA OFFSET trước tiên ta hảy xem chương trình WIN32 program (hello.EXE) Nếu bạn biết file PE EXE tạo bạn hiểu code section bắt đầu offset 00401000h (entry_point+image_base)(trong file standard PE, linked bình thường) OFFSET | OPCODE IN HEX VALUE | CODE | | -00401000h | 6A00 | push byte 00401002h | 681A104000 | push dword caption 00401007h | 6834104000 | push dword text 0040100Ch | 6A00 | push byte 0040100Eh | E8ED0F0000 | call MessageBoxA 00401013h | 6A00 | push byte 00401015h | E8EC0F0000 | call ExitProcess 0040101Ah | 596F757220666972737420 | caption db "Your first | 57494E33322070726F6772616D6D00 | WIN32 programm",0 00401034h | 48454C4C4F00 | test db "HELLO",0 Bây giờnhìn vào offset 401002h,bạn se thấy: 68 1A104000 | | + + | | | + + + -+ | push on stack the dword | | 0040101Ah | + -+ + + -+ | push dword | | caption | + + + -+ Bạn hình dung bạn đặt phần code đoạn cuối file khác (giống virus) , code ko chạy address "caption" label bị thay đổi Nó ko chạy với lý thứ là: IMPORT section ko giống như Delta offset technique sử dụng sau: Trang 86/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn call delta ; (push eip) delta: pop ebp ; (ebp=eip) sub ebp,offset delta Khi bạn thực thi hàm CALL , giá trị EIP register (lúc EIP offset delta) push stack bạn pop ra(pop ebp) sub với dword 'offset delta' ebp trỏ đến delta label (ebp=offset delta) ta muốn code sau: mov eax,dword label1 mov ebx,dword[label2] code phải thay đổi thành: call delta delta: pop ebp sub ebp,offset delta lea eax,[label1+ebp] mov ebx,dword[label2+ebp] Bạn làm sau: call delta delta: pop edx sub eax,offset delta lea eax,[label1+edx] mov ebx,dword[label2+edx] ghi register edx ko thay đổi tất code bạn D.3 Các thị chuyển hướng điều khiển: Khi lập trình code độc lập , nên ý thị chuyển hướng điều khiển, hiểu rỏ phạm sai lầm coding Để tìm hiểu xin mô tả ví dụ sau: Trang 87/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn Tôi bật chương trình Olly lên load file exe vào Olly Sau modify assember (nhấn phím space addr cần modify) để thay đổi code sau: Tại offset 00401000 ta thay đổi: jmp 00401004 Sau lần lượt: push eax push ebx push 0040100A ret call 0040100F pop ebp sub ebp,0040100F Sau thay đổi xong có code cửa sổ CPU sau: My Label: Offset: Opcode: Code: -00401000 > EB 02 JMP SHORT seh_exp.00401004 00401002 50 PUSH EAX 00401003 53 PUSH EBX Delta1: 00401004 68 0A104000 PUSH seh_exp.0040100A 00401009 C3 RETN Delta2: 0040100A E8 00000000 CALL seh_exp.0040100F Delta: 0040100F 5D POP EBP 00401010 81ED 0F104000 SUB EBP,seh_exp.0040100F Bây khảo sát lệnh Lệnh chuyển hướng điều khiển JMP: Lệnh chuyển hướng điều khiển cần tìm hiểu lệnh jmp Như ta thấy : 00401000 > EB 02 JMP SHORT seh_exp.00401004 | | + + + -+ | | + -opcode jmp (1 bytes) + - 02 : distance (1 bytes) Trang 88/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn Lệnh jmp có byte opcode : EB opcode lệnh jmp 02 distance (khoảng cách) jump, ta có: offset cần jmp đến = offset lệnh jmp + distance +2 Khỏang cách jump “là số âm” nhảy ngược thị phía Vậy thị ko ảnh hưởng đến vấn đề fixed offset (offset cố định) opcode chương trình biên dịch code file exe Các lệnh jnz, jz, tương tự Các bạn cần tìm hiểu thêm Cặp lệnh chuyển hướng điều khiển PUSH/RET: Ngoài thị jump chuyển hướng điều khiển Còn có cặp thị sau dùng để chuyển hướng điều khiển cặp lệnh PUSH/RET Đây cách dùng cặp lệnh này: hook: push offset delta2 ret delta2: Như ta biết, ta push giá trị vào stack , sau cho thực thị ret, lúc eip nhảy đến offset lấy từ stack lưu trước lệnh push Vì vậy, chuyển điều khiển chương trình đến offset mà ta push vào stack offset delta2 Ta phân tích 00401004 68 0A104000 PUSH seh_exp.0040100A | | + + + + | | + -opcode push (1 byte) + - 0040100A : offset of delta2 (4 bytes) Như ta thấy, fixed offset tồn Opcode thị này, ta ko thể dùng thị code độc lập Nhưng lại có ứng dụng tuyệt vời, lợi dụng tính fixed offset, cặp lệnh sử dụng lập trình hook Tức copy đoạn code có cặp lệnh vào offset hàm API cần hook sau patch bytes fixed offset thành bytes offset mà muốn chuyển hướng điều khiển hàm API Nhưng câu chuyện khác tìm hiểu sau Trang 89/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn Còn bây giờ, hảy dùng phím F8 Olly để thực lệnh thị RET Sau thực thị ret, stack gở bỏ dword lưu offset push trước Chúng ta hảy nhớ điều Ngoài bạn cần tìm hiểu thêm lệnh sau “RETN 4“,”RETN 8”, Ví dụ: Lệnh “RET 4” có nghĩa chuyển điều khiển EIP đến [esp+4] tức bỏ qua bytes addr stack để lấy addr cho EIP Chú ý: Trong lập trình code độc lập, dùng lệnh push fixed offset Vậy push tham số cho stack? Để giải vấn đề dùng cặp lệnh sau ghi tạm: lea esi,[ebp+szUser32dll push esi call [ebp+_LoadLibrary] Chuyển hướng điều khiển cặp lệnh CALL/POP: Ta có: 0040100A E8 00000000 CALL seh_exp.0040100F | | + + + + | | + -opcode call (1 byte) + - 00000000 : distance (4 bytes) Lệnh call có byte opcode : E8 opcode lệnh call 00000000 distance (khoảng cách) call, ta có: offset cần call đến = offset lệnh call + distance + bytes Như ta thấy lệnh call tương tự lệnh jump, có nhiều bytes thực hiện, push giá trị trả offset sau thị call vào stack Vì để cân lại stack sau chuyển điều khiển đến label Delta, cần POP dword khỏi stack Như bạn thấy thị sub có fixed opcode sau biên dịch file exe: 00401010 81ED 0F104000 SUB EBP,seh_exp.0040100F Trang 90/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn Vì copy bytes sang addr khác memory, opcode ko thay đổi Tức thị có giá trị “sub ebp,0040100F” Nhưng lúc ebp lại offset vị trí label delta Do ebp khác , khác với trường hợp bạn trace Olly Vì ebp chứa độ lệch giửa offset biên dịch đoạn code lúc đầu với offset current run vị trí D.4 Định hướng biên dịch ASM để tính tổng số Bytes đoạn code Trong lập trình ASM, lập trình “đoạn code độc lập”, thường cần tổng số byte đoạn code để lưu vào biến Để làm điều này, dùng thị định hướng biên dịch “$” Chỉ thị đại diện cho offset label sử dụng Để tính size đoạn code ta dùng $ sau: Label_01: inpendence code Size_Label_01 = $ - Label_01 Label_01 ; offset Size_Label_01 trừ cho offset Chú ý: Size_Label_01 ko phải biến mà giá trị để chương trình biên dịch tham chiếu đến Chúng ta hảy xem đoạn code sau: Vidu.asm begin .586 model flat, stdcall option casemap:none include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib data code start: push size_label01 ; = push bytes into stack push call ExitProcess code_sec segment label01: push eax ; byte Trang 91/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn push ebx ;1 byte push ecx ;1 byte size_label01 = $ - label01 ; size from label01 to size_label01 = bytes code_sec ends end start -end Sau dùng MASM biên dịch, thấy section tạo có tên code_sec ta dùng cặp lệnh sau để tạo ra: code_sec segment code code_sec ends load file exe vừa biên dịch vào Olly, thấy : 00401000 >/$ 68 03000000 PUSH 00401005 | 6A 00 PUSH ; /ExitCode = 00401007 \ E8 00000000 CALL ; \ExitProcess Vậy thị lệnh push giá trị vào stack, giá trị size đoạn code cần tính tổng từ label label01 đến label size_label01 E Giới thiệu lập trình hook Có bạn đặt câu hỏi gõ tiếng Việt Microsoft Word phần mềm soạn thảo văn khác hay không? Rõ ràng can thiệp vào mã Microsoft Word để sửa thành tiếng Việt muốn soạn thảo văn tiếng Việt Vậy phần mềm VietKey, VNI-TanKy lại làm điều này? Câu trả lời sử dụng Hook Trong viết này, tìm hiểu xem Hook mà làm điều thần kỳ Truớc tìm hiểu Hook , nhắc lại chút trình xử lý thông điệp hệ điều hành Windows Quá trình xử lý thông điệp Windows diễn sau : Đầu tiên từ hành động nguời dùng : click chuột, nhấn phím, hệ điều hành Trang 92/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn chuyển hành động tương ứng thành thông điệp (message) Rồi sau Windows đẩy message vào hàng đợi hệ thống (system queue) từ system queue message đuợc chuyển cho hàng đợi ứng dụng (application queue) Từ lúc ứng dụng lấy message hàng đợi ứng dụng để xử lý (thông qua vòng lặp chờ thông điệp message loop) E.1 Hook ? Hook chế mà nhờ hàm chặn kiện (message, mouse actions, keystrokes ) trước chúng gửi đến hàng đợi ứng dụng Các hàm thực số thao tác kiện, vài trường hợp định nghĩa lại hủy bỏ kiện mà chặn Một điểm quan trọng cần lưu ý hàm gọi Windows ứng dụng Windows hỗ trợ nhiều loại hook khác nhau, loại nhắm đến việc chặn bắt loại thông điệp cụ thể Ví dụ, ứng dụng sử dụng WH_KEYBOARD để giám sát di chuyển thông điệp bàn phím hệ thống Nhờ loại hook mà chương trình can thiệp vào tạo khả gõ tiếng Việt soạn thảo văn Một loại hook khác WH_MOUSE cho phép theo dõi thông điệp liên quan đến hoạt động chuột Hình mô tả trình xử lý thông điệp Windows có sử dụng Hook Thì hình vẽ thấy rõ ràng ,một sử dụng Hook Hook đặt nằm System Queue Application Queue E.2 Cơ chế hoạt động Hook Hệ thống trì chuỗi hook (hook chain) cho loại hook Mỗi chuỗi danh sách liên kết trỏ đặt biệt, trỏ hàm callback ứng dụng có sẵn, gọi hàm hook (hàm lọc, filter Trang 93/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn function) Khi có thông điệp sinh thuộc loại hook đó, hệ thống đẩy vào hàm hook chuỗi, hàm (qua tất hook chuỗi) Công việc hàm hook phức tạp hay đơn giản tùy thuộc vào loại hook Hàm hook cho số loại giám sát, số khác sửa đổi thông điệp dừng lại việc xử lý thông điệp chuỗi hook trước chúng đến hook đến cửa sổ đích E.3 Ứng dụng Hook - Cho phép tạo chương trình hỗ trợ gõ tiếng Việt : Vietkey - Cho phép tạo chuơng trình Test tự động phần mềm (bằng cách phát sinh kiện phím, chuột giống người dùng nhập vào) - Cho phép thay đổi giao diện ứng dụng chạy - Cho phép xem phần trợ giúp ứng dụng việc nhấn phím đó, ví dụ nhấn F1 chẳng hạn - Và nhiều ứng dụng khác tùy vào trí tưởng tượng bạn E.4 Cài đặt Hook Giao diện lập trình ứng dụng (API) Windows cung cấp hàm để thao tác với hook : • SetWindowsHookEx • UnhookWindowsHookEx • CallNextHookEx ¾ Cài đặt Filter Function vào chuỗi Filter Function hook Tác vụ thực thông qua hàm SetWindowsHookEx, khai báo hàm sau : HHOOK SetWindowsHookEx( int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId); Ý nghĩa tham số : Trang 94/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn idHook: Xác định loại hook mà ta muốn cài đặt, tham số giá trị sau : - WH_CALLWNDPROC : đặt thủ tục hook quản lý thông điệp trước lúc hệ thống gởi chúng tới cửa sổ đích - WH_CALLWNDPROCRET : đặt thủ tục hook quản lý thông điệp sau chúng xử lý thủ tục cửa sổ đích - WH_CBT : đặt thủ tục hook nhận thông báo có ích tới ứng dụng huấn luyện sở tính toán (CBT) - WH_DEBUG : đặt thủ tục hook có ích cho việc debug thủ tục hook khác - WH_FOREGROUNDIDLE : đặt thủ tục hook gọi thread foreground ứng dụng trở thành không dùng đến Hook có ích cho hoạt động nhiệm vụ (task) độ ưu tiên thấp thời gian không dùng đến - WH_GETMESSAGE : đặt thủ tục hook quản lý thông điệp post tới hàng đợi thông điệp - WH_JOURNALPLAYBACK : đặt thủ tục hook post thông điệp ghi trước thủ tục hook WH_JOURNALRECORD - WH_JOURNALRECORD : đặt thủ tục hook ghi thông điệp đầu vào post tới hàng thông điệp hệ thống Hook có ích cho việc ghi macro - WH_KEYBOARD : đặt thủ tục hook quản lý thông điệp keystroke - WH_MOUSE : đặt thủ tục hook quản lý thông điệp chuột - WH_MSGFILTER: đặt thủ tục hook quản lý thông điệp kết sinh kết cuả kiện đầu vào dialog box, message box, menu hay scroll bar - WH_SYSMSGFILTER : đặt ứng dụng thông điệp kết sinh kết kiện đầu vào dialog box, message box, Trang 95/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn menu hay scroll bar Thủ tục hook quản lý thông điệp cho tất ứng dụng hệ thống - Mỗi giá trị xác định loại hook mà ta muốn cài đặt, loại hook có ý nghĩa tình sử dụng khác - lpfn : Địa Filter Function mà ta muốn gắn với hook - hMod : Handle module chứa Filter Function Nếu ta cài đặt hook cục (nghĩa thực thi Filter Function ảnh hưởng tiến trình cài đặt hook), tham số phải NULL Còn muốn có hook với phạm vi toàn hệ thống (tức tiến trình hữu chịu ảnh hưởng Filter Function chúng ta), tham số Handle DLL chứa Filter Function - dwThreadID : Định danh thread ứng với hook cài đặt Nếu tham số số khác 0, Filter Function gắn với hook gọi ngữ cảnh thread xác định Còn dwThreadID = 0, Filter Function có phạm vi toàn hệ thống, dĩ nhiên, gọi ngữ cảnh thread tồn HĐH Có thể sử dụng hàm GetCurrentThreadId để lấy handle thread muốn cài đặt hook Một hook sử dụng mức hệ thống, mức cục bộ, hai mức vừa nêu Bảng sau mô tả loại hook tầm ảnh hưởng nó: WH_CALLWNDPROC Thread,Global WH_CALLWNDPROCRET Thread,Global WH_CBT Thread,Global WH_DEBUG Thread,Global WH_FOREGROUNDIDLE Thread,Global Trang 96/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn WH_GETMESSAGE Thread,Global WH_JOURNALPLAYBACK Global WH_JOURNALRECORD Global WH_KEYBOARD Thread,Global WH_MOUSE Thread,Global WH_MSGFILTER Thread,Global WH_SYSMSGFILTER Global Với loại hook xác định, hook cục gọi trước, sau hook toàn cục ¾ Gỡ bỏ Filter Function khỏi chuỗi Filter Function hook Windows cung cấp hàm UnhookWindowsHookEx giúp thực việc Khai báo sau : BOOL UnhookWindowsHookEx( HHOOK hhk); Tham số : hhook hàm hook dỡ bỏ Đây giá trị trả vể hàm SetWindowsHookEx hàm Hook cài đặt Chú ý : Hàm UnhookWindowsHookEx phải sử dụng kết hợp với hàm SetWindowsHookEx ¾ Chi tiết Filter Function Filter Function hàm gắn với loại hook mà muốn cài đặt Hàm gọi hệ điều hành Windows không gọi ứng dụng, lý mà người ta thường gọi “Callback Trang 97/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn Function” Tuy nhiên , để thống mặt thuật ngữ, từ sau gọi Filter Function Tất Filter Function có dạng sau : LRESULT CALLBACK FilterFunc(int nCode, WPARAM wParam, LPARAM lParam); Ở “FilterFunc” tên hàm tượng trưng, cài đặt, Filter Function có tên theo ý người lập trình Ý nghĩa tham số truyền cho hàm : nCode : tham số thường gọi “hook code”, Filter Function sử dụng giá trị để định cách thức xử lý kiện Giá trị hook code tùy thuộc vào loại hook cụ thể, loại hook có tập hợp giá trị hook code đặc trưng riêng Có quy luật mà dường Filter Function loại hook cần tuân thủ : Khi Windows truyền cho hàm giá trị hook code âm, Filter Function không xử lý kiện mà phải gọi hàm CallNextHookEx với tham số mà hệ điều hành truyền cho Sau đó, phải trả giá trị trả hàm CallNextHookEx wParam, lParam: Đây thông tin cần thiết cho Filter Function trình xử lý kiện Các giá trị có ý nghĩa khác tuỳ thuộc vào loại hook Ví dụ , Filter Function gắn với hook WH_KEYBOARD nhận mã phím ảo (Virtual-Key Code) từ wParam, đồng thời có từ lParam thông tin mô tả trạng thái bàn phím kiện gõ phím xảy ¾ Gọi Filter Function chuỗi Filter Function Khi hook cài đặt, Windows gọi hàm chuỗi Filter Function, kể từ thời điểm này, trách nhiệm Windows không Filter Function hành phải đảm bảo với hệ thống có lời gọi đến hàm chuỗi Filter Function Bởi lẽ, có ứng dụng khác cài đặt loại hook để thi hành số tác vụ đó, ta không cho Filter Function ứng dụng tham Trang 98/99 Học viên: Bùi Thế Luân GVHD: TS Nguyễn Khanh Văn gia xử lý kiện, có vấn đề rắc rối xảy Vấn đề trở nên nghiêm trọng ứng dụng chương trình thuộc hệ thống, rõ ràng đảm bảo cho an toàn hệ thống Để giải vấn đề trên, sử dụng hàm CallNextHookEx, khai báo sau : LRESULT CallNextHookEx( HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam ); hhk : handle hook hành, giá trị lấy từ hàm SetWindowsHookEx cài đặt hook nCode : định hook code để gởi đến hook Hàm xử lý hook dùng giá trị để định xử lý thông điệp gởi từ hook wParam: định 16 bits thông tin mở rộng thông điệp lParam: định 32 bits thông tin mở rộng thông điệp Giá trị trả : giá trị trả kết trình xử lý tùy thuộc vào thông số nCode Trong số tình huống, Filter Function hành không muốn chuyển kiện cho Filter Function khác chuỗi Lúc này, loại hook cài đặt cho phép huỷ bỏ kiện, Filter Function có định hủy bỏ, gọi hàm CallNextHookEx - HẾT Trang 99/99 ... hàng loạt trò chơi trực tuyến đời theo, làm cho người chơi lựa chọn trò chơi sở thích mình, Nói chung dần trò chơi trực tuyến chở thành ăn tinh thần thiếu hệ trẻ, nhiên trò chơi trực tuyến lúc... hình, tính chất trò chơi trực tuyến 17 1.3.1.Mô hình game trực tuyến 17 1.3.2.Tính chất trò chơi trực tuyến 21 1.4 Ưu điểm, nhược điểm tính bảo mật trò chơi trực tuyến 22... 13 PHẦN 2: NỘI DUNG ĐỀ TÀI   15  CHƯƠNG I TỔNG QUAN VỀ HỆ THỐNG TRÒ CHƠI TRỰC TUYẾN 15 1.1 Giới thiệu tổng quan trò chơi trực tuyến 15 1.2 Giới thiệu loại trò chơi trực tuyến

Ngày đăng: 27/07/2017, 20:26

TỪ KHÓA LIÊN QUAN

w