簡體   English   中英

時間:2019-05-16 標簽:c++hookingws2_32.dllrecv

[英]c++ hooking ws2_32.dll recv

我正在嘗試學習掛鈎,並且只想掛鈎 .exe 的發送/接收功能。

我將項目構建為 .dll,然后將其注入到 .exe

編輯:解決了

據我所知,有 3 種掛接 API 調用的方法:

  1. 在應用程序中注入一個 DLL,它將重寫包含 API 調用地址的導入地址表,以便應用程序調用您的函數;
  2. 編寫一個與 DLL 同名的虛擬 DLL 和您要掛鈎的 API 調用,並將其放置在應用程序的根目錄中,這樣它將加載您的 API 而不是系統的;
  3. 通過使用JMP yourfunc或具有類似效果的東西重寫它的代碼來JMP yourfunc API 調用。

方法 1 是一種非常流行的方法,它甚至在關於 HookingWikipedia 頁面以及各種示例中都有描述,如果您使用 Google 搜索它,例如this onethis one

方法 2 有點棘手,您必須構建一個與您正在模仿的 DLL 具有相同名稱和導出的 DLL,並繞過所有您對掛鈎不感興趣的函數並為您編寫自定義代碼。 我發現這種方法非常干凈,因為您不必修改內存,也不必使用外部程序顯式注入此 DLL,Windows 只會為您完成,而且還有一個優點,它通常在反調試和反黑客檢測。 這是一個如何做到這一點的示例(32 位)。

方法 3 是微軟最喜歡的. 它有一個特別好的優點:您可以掛鈎任何函數、方法或虛擬調用。 它不依賴於外部調用的函數來掛鈎它,因此掛鈎 DirectX 方法非常流行。 這是 FRAPS、Discord Overlay、Overwolf Overlay 以及幾乎所有其他在游戲中放置疊加層或記錄游戲玩法的軟件所使用的方法。 您不需要專門使用 Microsoft Detours,還有通用的替代方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM