2010-09-09 43 views
1

我必須在很多地方在非常大的應用程序中攔截執行。在DLL注入後攔截BIG應用程序執行

我可以用什麼程序來做到這一點?有什麼技術存在這個問題?

手動逆向工程並添加掛鉤也許是這個問題不是最優的解決方案,因爲應用程序是非常大的和應用程序的某些部分可以在一段時間內更新,我覺得有一些工具或良好做法對於這個問題我可以做得更快,有誰知道該怎麼辦?

有人幫我嗎?

+0

你可以訪問碼?還有,你如何確定攔截什麼 - 一些特殊的API或模式? – 2010-09-18 17:42:29

+0

@Fasial Ferox:我沒有權限,「你怎麼確定攔截什麼?」 - 我使用IDA解散應用程序,但是這個應用程序非常龐大,很難扭轉,在我之前我有很大一部分工作,我尋找更快的解決方案,也許在這個問題上有一些最佳實踐,一些簡單的提示可以加速我的工作大約月/秒。我掛鉤了內部功能。 – Svisstack 2010-09-18 22:24:30

回答

4

作爲工具的一部分已被覆蓋,這裏是技術的東西。

取決於什麼是你需要掛鉤,以及是否有保護invloved,有幾個方法:

  1. 相對呼叫/ JMP在虛擬的二進制補丁:這是最簡單的,但如果您無法自動查找所有對某個功能的引用,還需要進行大量工作,但由於您的標準,這可能不適用於此原因。 IAT/EAT掛鉤:用於導入(IAT)和導出(EAT),如果您的目標是已知的導入/導出的API函數集合,那麼該方法非常有用。一個很好的例子可以發現herehere

  2. 熱修補:Windows XP SP2中引入了一種叫做「熱補丁」(用於實時系統功能更新),所有它的(的WinAPI的)功能開始'mov edi,edi',允許在每個熱補丁函數(one can do it too)上創建的空閒空間中修補相對跳轉。這通常用於程序,校驗有IAT的或有保護的其他有趣的形式,更多信息可以發現herehere

  3. 代碼放:通過將重定向任意代碼空間抓取執行流程。見hereherehere

  4. VFT/COM重定向:基本上覆蓋條目中一個對象虛擬功能表,用於OOP/COM基於應用是有用的。看到this

有很多第三方庫的,最有名的大概是MS Detours,一方面也可以看APIHijackmini-hook engine

Ofcourse沒有什麼可以替代你需要與像ollydbg調試器做初步戳,但我們知道的方法你會使用可以大大短他們量時間花費的時間閒逛

+0

爲什麼這是低調? downvoting和不離開的原因爲什麼是相當粗魯的... ... - – Necrolis 2010-09-29 04:43:48

1

有關您需要做什麼的一些細節(例如,您如何確定在哪裏斷開)會很好。根據你的情況,像Pin可能工作。

0

如果您對攔截方法調用感興趣,則可以執行API掛接。

或者使用一些反彙編軟件或ollydbgwin32dasm

+0

我使用IDA調試器,但分析大型應用程序的一部分,以找到良好的功能鉤需要時間,我必須鉤住20個可執行文件中的200個函數(這是完全不同的)我尋求加快我的工作的解決方案。 – Svisstack 2010-09-18 22:22:05

1

我建議使用Deviare API Hook。這是最簡單的方法,你可以做你所需要的。它有一些COM對象,可以用來掛鉤來自不同進程的應用程序。在你的過程中,你可以得到完整的參數信息,你可以用任何編程語言來使用它(我使用的是C#,它像一個魅力)。 如果您需要攔截註冊表API,我建議使用Deviare來調試您需要攔截的內容,但是您必須創建自己的鉤子,否則會發現性能問題。