2008-11-22 41 views
33

Tóm lại: Tôi muốn theo dõi các cuộc gọi được chọn từ một ứng dụng đến một DLL.Giám sát các cuộc gọi ứng dụng tới DDN

Chúng tôi có một ứng dụng VB6 cũ mà chúng tôi đã mất mã nguồn (công ty không sử dụng kiểm soát nguồn sau đó ..). Ứng dụng này sử dụng một DLL bên thứ 3.

Tôi muốn sử dụng tệp DLL này trong ứng dụng C++ mới. Thật không may DLL API chỉ là một phần tài liệu, vì vậy tôi không biết làm thế nào để gọi một số chức năng. Tôi có chữ ký chức năng.

Vì ứng dụng VB6 sử dụng DLL này, tôi muốn xem cách nó gọi một vài hàm. Cho đến giờ tôi đã thử hoặc xem xét -

  1. APIHijack - yêu cầu tôi viết mã C++ cho từng chức năng. Vì tôi chỉ cần đăng nhập các giá trị, nó có vẻ như quá mức cần thiết.
  2. EasyHook - giống như 1, nhưng cho phép viết bằng mã bằng ngôn ngữ .NET.
  3. OllyDbg với uHooker - Tôi vẫn phải viết mã cho từng chức năng, lần này bằng Python. Ngoài ra, tôi phải thực hiện nhiều chuyển đổi bằng Python sử dụng mô-đun struct, vì hầu hết các hàm đều chuyển giá trị bằng con trỏ.

Vì tôi chỉ cần ghi thông số chức năng Tôi muốn có giải pháp đơn giản. Có công cụ tự động nào không, tôi có thể cho biết chức năng nào để theo dõi và chữ ký của chúng, sau đó lấy một tệp nhật ký chi tiết?

Trả lời

10

Một số chi tiết Google tìm kiếm tìm thấy những gì tôi đang tìm kiếm: WinAPIOverride32. Nó cho phép bằng văn bản tập tin văn bản như:

CustomApi.dll|void NameOfFunction(long param1, double& param2); 

Sau đó, những tập tin này có thể được sử dụng bên trong chương trình để ghi lại tất cả các cuộc gọi đến NameOfFunction. Bây giờ tôi chỉ cần tìm ra cách để ghi lại các tham số mảng và cấu trúc.

+2

Bah. Đối với tôi nó không phải là dễ dàng như vậy.Tôi đang cố gắng _find_ chức năng mà Outlook đang gọi, nhưng tôi không biết chức năng của nó là gì: / –

25

Giải pháp "tĩnh" (theo nghĩa nó có thể ghi lại theo dõi ngăn xếp theo yêu cầu) sẽ là Process Monitor.

Process Monitor

Một giải pháp năng động hơn sẽ ApiMonitor, nhưng nó có thể quá cũ để tương thích với các ứng dụng để theo dõi. Đáng thử mặc dù.

http://www.rohitab.com/gallery/api-monitor-2-0/main-window.png

+4

Dường như nó chỉ giám sát các chức năng của Windows API. Tôi cần theo dõi một DLL API không phải Windows. Tui bỏ lỡ điều gì vậy? – kshahar

+0

Không, thực sự. Ngay cả Process Monitor cũng sẽ hiển thị stack DLL của bạn, nhưng với "Unknown" cho phương thức này. – VonC

+2

ApiMonitor thật tuyệt vời. – expert

3

Visual Studio Addin Runtime luồnghere:

Runtime dòng chảy trong màn hình thời gian và bản ghi cuộc gọi chức năng và các thông số chức năng thực trong ứng dụng NET của bạn đang chạy và cho thấy một chồng dấu vết cây. Không cần thiết bị đo đạc hoặc mã nguồn để theo dõi.

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