2009-12-21 33 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