2012-05-04 68 views
1

這是Win32相關的問題,所有的代碼都是原生的。追蹤本地電話

我有3層編譯爲視對方DLL庫:

[模塊1] - > [模塊2] - > [模塊3] - > [我的模塊4]

模塊1是一個應用程序加載模塊2.模塊2的負載模塊3.模塊3裝入我的模塊4.

每當一個呼叫被從模塊1由它通過所有層到模塊4

在模塊4 I想要以某種方式跟蹤它從Module的Module 2中的Module 3調用1通過獲取例如HMOUDLE句柄爲他們每個人或任何其他唯一標識他們。我想不出任何Win32 API允許我執行這樣的跟蹤,你能建議嗎?

回答

2

簡短的回答 - 樣的,但是你可能不希望這樣做:)

稍長的答案 - 該Debug Help Library可以用來生成一個堆棧跟蹤(通過StackWalk64),其中你可以在演唱會使用通過PSAPI獲取模塊信息來獲得你想要的。

基本的方法是獲取您的進程中每個模塊的基址和大小,然後查看每個堆棧幀的返回地址,並按範圍進行匹配。如果你想要做的就是確定模塊4中的函數調用是否來自模塊1內,那麼這將使你得到你想要的位置。

編輯:如果您可以訪問相關模塊的符號,那麼Steve T的答案會更強大一點。