2010-09-29 59 views
15

Tôi đã duyệt internet gần đây, khi tôi tình cờ gặp Dll Injection.Dll Injection - Điều gì có thể với nó?

Tôi nghĩ rằng nó là một chủ đề thú vị nhưng, tôi không có đầu mối mục đích của nó là gì?

Tôi đã đọc rằng nó có thể được sử dụng cho các trò chơi và phần mềm bẻ khóa/hack, nhưng nó cũng có thể làm điều gì đó tích cực với nó?

nếu có, nó có thể được sử dụng để làm gì?

Và ngôn ngữ nào hỗ trợ điều này?

Để ghi lại, tôi sẽ không thử và Crack/hack bất kỳ trò chơi nào có kiến ​​thức đã đạt được, không có ý định làm gì đó bất hợp pháp!

Cảm ơn thời gian,

Emerion

ps: Trang web/cuốn sách mà là về chủ đề này sẽ được đánh giá!

Trả lời

18

Có rất nhiều công dụng mà tôi suy nghĩ của tôi:

  • Hot vá: Cho phép bạn cập nhật/phần vá mã của bạn mà không thực sự tắt quá trình hoặc khởi động lại. Bản thân Microsoft đã đảm bảo các phần lớn của Windows có thể vá nóng bằng cách thêm tiền tố vào các hàm với khối NOP 5 byte. Tại sao? Bởi vì bạn có thể JMP đến bất kỳ phần nào khác của mã của bạn trong 5 byte, do đó, vá nóng về cơ bản sẽ ghi đè các byte tiền tố bằng JMP vào mã được cập nhật/vá và thì đấy, mã của bạn thực hiện một điều gì đó hoàn toàn mới. Điều này thường được sử dụng cùng với hệ thống phun DLL để tải mã mới vào quá trình mục tiêu, và trong khi không bắt buộc, đó là một trong đó là sử dụng

  • Logging: Theo tinh thần đó, detouring code được thường được sử dụng tiền tố một chức năng cho các mục đích ghi nhật ký, tức là để xem các tham số được gọi là gì. Ngoài ra, một số ứng dụng ghi lại đầu ra màn hình từ các ứng dụng DirectX thực hiện điều này bằng cách hủy bỏ các cuộc gọi DirectX, một lần nữa liên quan đến việc tiêm một DLL vào quá trình giám sát các cuộc gọi.

  • Phân lớp: Không theo nghĩa OOP, nhưng theo nghĩa Windows, tức là cung cấp WndProc mới cho cửa sổ hiện có để thay đổi hành vi của nó.Trong khi bạn chỉ có thể thiết lập một thông báo xử lý thông báo khác nhau thông qua SetWindowLongPtr, thì yếu tố giới hạn cho điều này là hàm cần phải nằm trong không gian địa chỉ tiến trình đích. Đây là nơi tiêm đến một lần nữa - bạn cung cấp một thực hiện mới trong một DLL, tiêm này vào quá trình mục tiêu và gọi SetWindowLongPtr. Điều này có thể được sử dụng để cung cấp tùy chỉnh, bản vẽ bổ sung trên một cửa sổ nước ngoài, ví dụ.

Tôi có cá nhân đã phải đối phó với tất cả các trường hợp sử dụng nêu trên trong quá khứ, trong các ứng dụng kinh doanh thông thường, từ việc sử dụng vá nóng để đảm bảo thời gian hoạt động trên một hệ thống thông báo quan trọng trong dịch vụ y tế để sử dụng đường vòng/đăng nhập để cho phép quản lý bản ghi độc quyền (bởi một cửa hàng phần mềm đã chết) để nói chuyện với một giải pháp CRM toàn diện trong thời gian thực.

Như mọi khi, nó chỉ là một công cụ trong hộp của bạn, và không có gì là "ác" về nó. nó cho bất kỳ mục đích gì bạn sử dụng nó mà đếm.

3

Trong lập trình máy tính, tiêm DLL là một kỹ thuật sử dụng để chạy mã trong không gian địa chỉ của quá trình khác bằng cách buộc nó để tải một dll. [1] Việc tiêm DLL thường được các nhà phát triển bên thứ ba sử dụng để tác động đến hành vi của một chương trình theo cách mà tác giả của nó không lường trước được hoặc có ý định. Ví dụ, mã tiêm có thể bẫy các cuộc gọi hàm hệ thống, hoặc đọc nội dung của hộp văn bản mật khẩu, không thể thực hiện theo cách thông thường.

Nguồn và biết thêm ở đây: http://en.wikipedia.org/wiki/DLL_injection Bạn có thể tìm thấy một số tài liệu tham khảo cũng tốt để các nguồn bên ngoài.

Dll Injection có thể được sử dụng vì một lý do chính đáng khi bạn có một hệ thống cũ không có mã nguồn cho nó và bạn cần phải thay đổi hành vi của nó. Đó là một hack bẩn mặc dù và nên được sử dụng như là một phương sách cuối cùng, IMO.

4

Có một dự án rất hay được thực hiện trong Microsoft Research về chủ đề này, tập trung vào việc chặn các cuộc gọi đến các chức năng của WinAPI bằng cách sử dụng dll injection.

Đây là liên kết, nó sẽ giữ cho bạn bận rộn trong một thời gian: Detours

+1

Đường vòng là tốt đẹp, nhưng đối với sự phát triển mới có lẽ bạn nên thích http://easyhook.codeplex.com/ thay - cho phép x64 cũng như kernelmode hooking, và cho phép móc được viết dưới dạng mã được quản lý (!) – snemarch

+0

@snemarch - đẹp !! Tôi biết rằng Detours đã cũ, nhưng tôi không biết ai đó đã giữ khái niệm này - tôi sẽ thích chơi với nó. – slugster

Các vấn đề liên quan