2010-08-12 37 views
5

Tôi đang cố gắng móc các cuộc gọi phương thức ExtTextOut và DrawTextExt GDI của một ứng dụng khác.Cách gọi các cuộc gọi api trong một ứng dụng khác

Tôi biết rằng tôi cần sử dụng GetProcAddress để tìm địa chỉ của các phương thức đó trong gdi32.dll và ghi đè lên địa chỉ trong quá trình tôi muốn móc bằng địa chỉ hàm của tôi. Sau đó, trong chức năng của tôi tôi làm những gì tôi cần, sau đó gọi chức năng ban đầu.

Tôi muốn tạo chức năng móc này cho các ứng dụng .net, và rõ ràng điều này là có thể thực hiện bằng cách tạo một dll trung gian 'không quản lý' có khả năng hooking và có khả năng kích hoạt sự kiện ở bên .net, để chức năng mới có thể đặt cược được viết trong môi trường được quản lý. Tôi chỉ không chắc chắn làm thế nào để thực hiện điều này. Có ai có bất kỳ mẫu mã hoặc liên kết đến thông tin?

Trả lời

5

Tôi muốn giới thiệu Microsoft Detours (C++ x86 only) hoặc EasyHook (C++ & C#, x86/x64).

http://easyhook.codeplex.com/

Tôi đã sử dụng nó trước đây, hoạt động khá tốt. Bạn phải vượt qua một chức năng hoặc địa chỉ và nơi bạn muốn nó chuyển hướng đến, và bạn có thể có tất cả các cuộc gọi (cho tất cả các quá trình hoặc một cụ thể) gửi vào chức năng của bạn. Các hướng dẫn bao gồm hầu hết các khái niệm cơ bản, nhưng tôi có thể chỉnh sửa mã vào câu trả lời này nếu bạn muốn.

Một chút thông tin là nó cũng hoạt động theo cách khác. Chuyển con trỏ tới hàm của bạn và bạn có thể chuyển hướng cuộc gọi sang mã bên ngoài. Làm cho một số tích hợp thú vị với các ứng dụng cũ hoặc các ứng dụng nguồn đóng.

+0

FWIW phiên bản chuyên nghiệp của Detours hỗ trợ ia/x64 –

+0

EasyHook âm thanh tốt hơn cho tôi, vì nó đầy đủ chức năng (có thể làm 64bit) miễn phí ... Có loại hướng dẫn nào có sẵn để đi qua việc lấy mẫu nhỏ không? Tôi không thấy gì trong phần tài liệu. – Jeremy

+0

Trang bị ẩn trên trang tải xuống: http://easyhook.codeplex.com/releases/view/24401 Tài liệu API được quản lý, Hướng dẫn và Giới thiệu. Không phải là hướng dẫn tuyệt vời nhất, nhưng chúng sẽ đủ để bạn bắt đầu. :) – ssube

4

Bạn có thể sử dụng Deviare API Hook, sử dụng DeviareCSharpConsole là công cụ có trong gói cho phép bạn nối bất kỳ API nào và xem các giá trị tham số trong điều khiển giống như lượt xem. Bí quyết duy nhất mà nó cần trong Windows7 là tải như quản trị viên, tôi báo cáo.

+0

Rất hay. Miễn phí quá. – Jeremy

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