2013-04-26 8 views
1

我需要這樣做,以避免從注入的代碼調用我的過程的函數。如何從同一個進程中掛接一個函數並獲取調用者函數的地址?

所以想掛鉤這個函數來檢查這個調用是來自當前模塊還是來自外部模塊,那麼我將進行調用的指令地址與模塊地址範圍進行比較。

感謝

+2

你不能在標準C++中做到這一點。你需要指定一個平臺。 – 2013-04-26 19:13:08

+0

我不明白爲什麼我不能在標準的C++!我認爲有一些API允許函數掛鉤,並且可能給出一些關於堆棧的信息 – 2013-04-26 20:00:02

+0

如果我必須使用一些額外的庫,所以它應該是免費和穩定的庫 謝謝 – 2013-04-26 20:04:11

回答

0

MSVC有一個內在_ReturnAddress,這給函數的調用者的返回地址, 這樣你就可以在保護功能的最開始調用這個並將它與指定模塊(基地,長度)來檢測比較是否允許執行該函數的左側部分。

+0

感謝您的回覆, 在我掛鉤函數的情況下,在調用掛鉤函數後調用掛鉤回調函數時,該函數在回調函數中將返回什麼?它是掛鉤函數的地址還是調用者 我無法測試,因爲我仍然不知道如何掛鉤函數。 謝謝 – 2013-04-28 02:49:25

相關問題