Code Injection trên Windows là gì?

Code Injection là một kỹ thuật rất phổ biến trên Windows. Các ứng dụng sẽ “tiêm” các đoạn mã riêng của chúng vào một tiến trình đang chạy khác để thay đổi hành vi của tiến trình đó. Kỹ thuật này có thể được sử dụng cho các mục đích tốt hoặc xấu, nhưng dù bằng cách nào đi chăng nữa nó cũng có thể gây ra vấn đề không mong muốn. chẳng hạn như các phần mềm chống virus, đưa mã vào Chrome để sửa đổi hoạt động của ứng dụng này. Điều này dẫn đến việc các sự cố trên trình duyệt xảy ra thường xuyên hơn.

Code injection cũng thường được gọi là DLL injection vì các đoạn mã được đưa vào các tiến trình khác thường ở dạng tập tin DLL - Dynamic Link Library (thư viện liên kết động). Tuy nhiên, các ứng dụng đôi khi cũng có thể tiêm các loại mã khác không phải là dưới dạng các file DLL vào một tiến trình khác.

Code Injection là một kỹ thuật rất phổ biến trên Windows

Code Injection được sử dụng với mục đích gì?

Code Injection (mã tiêm) được sử dụng để thực hiện tất cả các thủ thuật và chức năng trên Windows. Code Injection được cả những phần mềm hợp pháp và các phần mềm độc hại sử dụng, ví dụ:

  • Các chương trình diệt vi-rút thường chèn các đoạn mã vào trình duyệt web, và sử dụng các mã này để giám sát lưu lượng mạng và chặn các nội dung web nguy hiểm.
  • Các chương trình độc hại có thể thêm mã vào trình duyệt web của bạn để theo dõi lịch sử và các thông tin duyệt web của bạn, sau đó đánh cắp các thông tin được bảo vệ như mật khẩu, số thẻ tín dụng và thay đổi cài đặt trên trình duyệt của bạn.
  • WindowBlinds của Stardock, tiêm mã để sửa đổi cách các cửa sổ được mở ra.
  • Stardock’s Fences tiêm mã để thay đổi cách thức hoạt động của Windows.
  • AutoHotkey chèn các mã để cho phép bạn tạo các tập lệnh và gán các Hotkey trên toàn hệ thống.
  • Trình điều khiển đồ họa như của NVIDIA gửi các file DLL để thực hiện một loạt các nhiệm vụ liên quan đến đồ họa.
  • Một số chương trình tiêm các file DLL để thêm các tùy chọn bổ sung vào một ứng dụng.
  • Công cụ gian lận trò chơi trên PC thường đưa mã vào các trò chơi để sửa đổi đặc tính của các trò chơi này, qua đó giúp người sử dụng cheat giành được lợi thế, không công bằng với những người chơi khác.

Code Injection có xấu không?

Kỹ thuật này được sử dụng liên tục bởi nhiều ứng dụng khác nhau trên Windows. Đó thực là duy nhất để thực hiện nhiều tác vụ khác nhau. So với một nền tảng hệ điều hành di động hiện đại như iOS của Apple hoặc Android của Google, Windows mạnh mẽ hơn rất nhiều bởi nó cung cấp tính linh hoạt này cho các nhà phát triển.

Tất nhiên, cũng có một số nguy hiểm kéo theo. Code injection có thể gây ra các sự cố và lỗi trong ứng dụng. Google cho biết người dùng Windows có chứa các phần mềm gửi mã vào Chrome sẽ có nguy cơ gặp phải các lỗi trên Chrome cao hơn 15% so với thông thường và đó là lý do tại sao Google đang nỗ lực ngăn chặn Code Injection.

Microsoft thậm chí còn cung cấp các hướng dẫn để người dùng có thể kiểm tra xem các file DLL của bên thứ ba có đang được load trong Microsoft Outlook hay không vì các file này sẽ gây ra rất nhiều sự cố trong Outlook.

Một nhân viên của Microsoft đã chia sẻ về vấn đề này trên một blog vào năm 2004:

Các file DLL được tiêm vào các ứng dụng khác là không bao giờ an toàn, bới các mã này xâm nhập trái phép vào một quy trình không được thiết kế, xây dựng hoặc thử nghiệm bởi tác giả của quy trình đó. Bạn sẽ có nguy cơ gặp phải các vấn đề về đồng bộ hóa hoặc tài nguyên mà trước đây chưa từng gặp phải hoặc các file này sẽ làm trầm trọng thêm các vấn đề hiện hữu trên ứng dụng.

Nói cách khác, Code Injection là một hành vi hack trái phép. Tuy nhiên, Code Injection cũng chỉ là một kỹ thuật thường thấy trên nền tảng ứng dụng Windows ngày nay. Nó liên tục được sử dụng trong chạy nền ở Windows trên PC của bạn.

Cách kiểm tra các file DLL đã được tiêm vào ứng dụng.

Bạn có thể kiểm tra Code Injection trên hệ thống của mình bằng ứng dụng Process Explorer của Microsoft. Về cơ bản, ứng dụng này là phiên bản nâng cao của Trình quản lý tác vụ Task Manager được tăng cường thêm các tính năng bổ sung cần thiết.

Đầu tiên bạn tải xuống và chạy Process Explorer. Sau đó nhấp vào View> Lower Pane View> DLLs hoặc nhấn tổ hợp phím Ctrl + D.

Cách kiểm tra các file DLL

Chọn một tiến trình trong ngăn trên cùng và nhìn vào khung bên dưới để xem file DLL nào đang được load. Cột Company Name sẽ cung cấp cho bạn một cách lọc hữu ích cho danh sách này.

Ví dụ: Khi bạn thấy một loạt các file DLL được tạo bởi Microsoft Corporation, điều này là hoàn toàn bình thường vì chúng là một phần của Windows. Việc các tệp DLL có nguồn gốc từ các công ty chủ quản của ứng dụng được tìm thấy trong ứng dụng đó (ví dụ như “Google Inc” ở ảnh chụp màn hình bên dưới) là hoàn toàn bình thường.

Theo như hình ảnh bên dưới, chúng ta cũng có thể phát hiện ra một vài file DLL được tạo bởi “AVAST Software” trong danh sách này. Điều này cho thấy ứng dụng chống phần mềm gián điệp Avast trên hệ thống đang tiêm các mã như "Avast Script Blocking filter library" vào Chrome.

Một vài file DLL được tạo bởi “AVAST Software”

Ngay cả khi bạn tìm thấy code injection trên hệ thống của mình bạn cũng chẳng thể làm được gì nhiều, ngoài việc gỡ cài đặt các chương trình đang tiêm mã để ngăn không cho nó gây ra thêm các sự cố. Ví dụ: nếu Chrome của bạn thường xuyên gặp sự cố, bạn có thể kiểm tra xem có chương trình nào đang tiêm mã vào Chrome không, nếu có thì gỡ cài đặt các chương trình đó để ngăn chúng can thiệp thêm vào tiến trình của Chrome.

Code Injection hoạt động như thế nào?

Code injection không tác động vào các ứng dụng cơ bản được lưu trên ổ đĩa của bạn. Thay vào đó, nó chờ đến khi ứng dụng đó được khởi chạy sau đó chèn thêm mã vào tiến trình đang chạy để thay đổi cách thức mà tiến trình đó hoạt động.

Như chúng ta đã biết, Windows có chứa một loạt các giao diện lập trình ứng dụng (API) có thể được sử dụng để tiêm mã. Một tiến trình có thể tự gắn nó vào một tiến trình mục tiêu, cấp phát bộ nhớ, sau đó viết một DLL hoặc mã khác vào bộ nhớ đó, và hướng dẫn cho tiến trình đích thực thi các mã. Windows hoàn toàn không ngăn chặn việc các tiến trình trên máy tính của bạn can thiệp vào nhau như thế này.

Trong một số trường hợp, ai đó có thể thay đổi các mã cơ sở trên ổ đĩa, ví dụ, bằng cách thay thế tệp DLL đi kèm với trò chơi trên PC bằng một đoạn mã khác đã được sửa đổi người ta có thể gian lận hoặc vi phạm bản quyền trò chơi. Về mặt kỹ thuật, đây không phải là code injection bởi các mã này không được đưa vào các tiến trình đang chạy, nhưng thay vào đó tiến trình này lại bị lừa bằng một file DLL khác có cùng tên.

Xem thêm:

Thứ Tư, 30/01/2019 11:43
51 👨 576