2009-12-21 31 views
2

有些軟件應用程序(如ArtMoney)可以編輯其他應用程序的內存。檢測內存入侵

有沒有辦法檢測其他應用程序何時編輯我的應用程序的內存?

回答

3

許多病毒檢查程序使用的一種方法是執行可執行文件或內存的校驗和並將其保存。在運行時,偶爾會計算一個新的校驗和並與原始數據進行比較。大多數程序不會有意修改其可執行文件。

+0

適用於不可變內存。但是大多數內存不是不可變的 – 2009-12-22 09:30:29

6

防止基本內存修改的基本思想是加密您關心的內存部分,並進行冗餘檢查以確保不被修改。

這些都不會阻止一個確定的黑客,但足以讓腳本小子保持在您的地址空間之外。

3

簡短的答案是否定的,在一般情況下是不可能的。即使你實現了一些已經給出的建議,也沒有任何東西阻止某人修補執行檢查的代碼。

我不知道ArtMonkey是如何工作的細節,但是如果它作爲一個調試器的功能,你可以試着定期檢查DebugHook <> 0,如果是的話適當反應。 (只要確保將該代碼放在{$ IFNDEF DEBUG}塊中,以免對產生影響!)

您可能想問問自己,爲什麼要阻止人們修補你的記憶,雖然。除非有真正的安全問題,否則你可能不應該嘗試。請記住,用戶的計算機,即您的程序將運行的是他們的財產,而不是您的財產,如果您對用戶的選擇產生過多幹擾,應如何處理他們的財產,您的計劃在道德上與惡意軟件無法區分。

1

我不知道它是如何工作的,我認爲它可以通過三種方式來完成:

  • ReadProcessMemory和WriteProcessMemory的Windows API的
  • 使用調試器(檢查debughook,不過這簡直太容易了這樣它不會使用)
  • 注入一個dll,因此它可以存取權限的所有內存(因爲它是在同一個進程)

最後一個是容易(檢查注入DLL或類似的東西)。第一個是棘手,但我發現一些關於它的文章:

+3

不,「DebugHook」對於檢查進程是否正在被調試完全沒有用處,它只被IDE調試器使用。在Windows API中有IsDebuggerPresent()(或直接訪問PEB),但它非常容易被愚弄,請參閱http://www.teamfurry.com/wordpress/2007/02/25/avoiding-debugger-detection 。 – mghie 2009-12-22 07:40:53