Hướng dẫn - Phòng chống keylogger cho ứng dụng của bạn | VN-Zoom | Cộng đồng Chia Sẻ Kiến Thức Công Nghệ và Phần Mềm Máy Tính

Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

We need money to operate the site, and almost all of it comes from our online advertising.

If possible, please support us by clicking on the advertisements.

Please add vn-z.vn to your ad blocking whitelist or disable your adblocking software.

×

Hướng dẫn Phòng chống keylogger cho ứng dụng của bạn

Huỳnh Phúc Huy

Búa Đá Đôi
pexels-photo-249203.jpeg

Keylogger là gì?

Nhắc đến keylogger thì hầu hếu nhiều bạn đã biết rồi nhưng mình cũng muốn nêu lại ngắn gọn về định nghĩa này.

Keylogger hay "trình theo dõi thao tác bàn phím" theo cách dịch ra tiếng Việt là một chương trình máy tính ban đầu được viết nhằm mục đích theo dõi và ghi lại mọi thao tác thực hiện trên bàn phím vào một tập tin nhật ký (log) để cho người cài đặt nó sử dụng. Vì chức năng mang tính vi phạm vào riêng tư của người khác này nên các trình keylogger được xếp vào nhóm các phần mềm gián điệp.

Phòng chống Keylogger cho ứng dụng của bạn

keylogger08132013.jpg

Khi bạn phân phối ứng dụng cho người dùng thì việc yêu cầu người dùng cài đặt trình antivirus để phòng keylogger khi sử dụng ứng dụng của bạn là không khả thi {byebye}

Vì thế mình sẽ cũng cấp một giải pháp để phòng tránh keylogger có thể ghi được thông tin khi người dùng nhập lệu trên ứng dụng của bạn bằng cách sử dụng một hàm đơn giản đã được cung cấp bởi thư viện user32.dll của Windows {hehe}

Windows+Library+Files+--+user32.dll+[answers.com].jpg

Các bạn có thể sử dụng mọi ngôn ngữ chỉ cần ngôn ngữ đó có thể làm việc với các thư viện của windows, ngôn ngữ mà mình demo trong bài viết này là C# và ứng dụng nhỏ mình sử dụng là khung đăng nhập đơn giản gồm 2 fields

wxoRtxT.png

Bằng phương pháp tạo ra một Desktop ngẫu nhiên và khởi tạo thread chạy độc lập trên desktop mới này sẽ ngăn chặn được các chương trình khác can thiệp trên nền ứng dụng, kể cả low level hook của keylogger. Chi tiết về tập lệnh, các bạn có thể tham khảo thêm ở đây : https://msdn.microsoft.com/en-us/li...124(v=vs.85).aspx?f=255&MSPPError=-2147217396

Mã nguồn:


>> Khai báo các phương thức, hằng số và import user32.dll
Mã:
[DllImport("user32.dll")]
        public static extern IntPtr CreateDesktop(string lpszDesktop, IntPtr lpszDevice,
        IntPtr pDevmode, int dwFlags, uint dwDesiredAccess, IntPtr lpsa);

        [DllImport("user32.dll")]
        private static extern bool SwitchDesktop(IntPtr hDesktop);

        [DllImport("user32.dll")]
        public static extern bool CloseDesktop(IntPtr handle);

        [DllImport("user32.dll")]
        public static extern bool SetThreadDesktop(IntPtr hDesktop);

        [DllImport("user32.dll")]
        public static extern IntPtr GetThreadDesktop(int dwThreadId);

        [DllImport("kernel32.dll")]
        public static extern int GetCurrentThreadId();

        public static String html;

        enum DESKTOP_ACCESS : uint
        {
            DESKTOP_NONE = 0,
            DESKTOP_READOBJECTS = 0x0001,
            DESKTOP_CREATEWINDOW = 0x0002,
            DESKTOP_CREATEMENU = 0x0004,
            DESKTOP_HOOKCONTROL = 0x0008,
            DESKTOP_JOURNALRECORD = 0x0010,
            DESKTOP_JOURNALPLAYBACK = 0x0020,
            DESKTOP_ENUMERATE = 0x0040,
            DESKTOP_WRITEOBJECTS = 0x0080,
            DESKTOP_SWITCHDESKTOP = 0x0100,

            GENERIC_ALL = (DESKTOP_READOBJECTS | DESKTOP_CREATEWINDOW | DESKTOP_CREATEMENU |
                            DESKTOP_HOOKCONTROL | DESKTOP_JOURNALRECORD | DESKTOP_JOURNALPLAYBACK |
                            DESKTOP_ENUMERATE | DESKTOP_WRITEOBJECTS | DESKTOP_SWITCHDESKTOP),
        }


>> Khởi tạo một Desktop ngẫu nhiên và tiến hành chuyển đổi sang Desktop mới này
Mã:
 // old desktop's handle, obtained by getting the current desktop assigned for this thread
            IntPtr hOldDesktop = GetThreadDesktop(GetCurrentThreadId());

            // new desktop's handle, assigned automatically by CreateDesktop
            IntPtr hNewDesktop = CreateDesktop("RandomDesktopName",
            IntPtr.Zero, IntPtr.Zero, 0, (uint)DESKTOP_ACCESS.GENERIC_ALL, IntPtr.Zero);

            // switching to the new desktop
            SwitchDesktop(hNewDesktop);


>> Đóng Desktop sau khi kết thúc phiên làm việc và trở về desktop hiện tại
Mã:
 // if got here, the form is closed => switch back to the old desktop
            SwitchDesktop(hOldDesktop);

            // disposing the secure desktop since it's no longer needed
            CloseDesktop(hNewDesktop);

Các bạn có thể kiểm tra thành quả bằng cách mở một chương trình theo dõi bàn phím hoặc thử nhấn nút chụp hình (PrintSceen), nếu không thể log nội dung nhập trên ứng dụng hay không thể chụp hình được nghĩa là thành công rồi nhé {sexy_girl}

Tải project mẫu
Các bạn có thể tải project mẫu ở file đính kèm để tiện ngâm cứu và áp dụng {byebye}
 

Attachments

  • Antikeylogger.zip
    62.6 KB · Lượt xem: 14


Top