检测内存侵入

时间:2009-12-21 21:48:51

标签: delphi memory

有些软件应用程序,例如ArtMoney,可以编辑其他应用程序的内存。

有没有办法检测其他应用程序何时编辑应用程序的内存?

5 个答案:

答案 0 :(得分:6)

防止基本内存修改的基本思想是加密你关心的内存部分,并进行冗余检查以确保不被修改。

这些都不能阻止一个坚定的黑客,但只要将脚本小子放在地址空间之外就足够了。

答案 1 :(得分:3)

许多病毒检查程序使用的一种方法是执行可执行文件或内存的校验和并保存。运行时,偶尔会计算一个新的校验和并与原始校验和进行比较。大多数程序不会故意修改其可执行文件。

答案 2 :(得分:3)

简短的回答是否定的,在一般情况下是不可能的。即使你实现了一些已经给出的建议,也没有什么能阻止某人修补执行检查的代码。

我不知道ArtMonkey如何工作的具体细节,但如果它作为调试器运行,你可以尝试定期检查DebugHook<>如果是,则适当地作出反应。 (只需确保将该代码放在{$ IFNDEF DEBUG}块中,这样就不会给造成麻烦!)

你可能想问问自己为什么要阻止人们修补你的记忆。除非有真正的安全问题,否则你可能不应该尝试。请记住,您的程序将运行的用户计算机是他们的财产,而不是您的财产,如果您过多地干涉用户对其财产的选择,那么您的程序在道德上与恶意软件无法区分。

答案 3 :(得分:1)

我不知道它是如何工作的,我认为可以通过三种方式完成:

  • ReadProcessMemory和WriteProcessMemory Windows API
  • 使用调试器(检查debughook,但这太容易了,所以不会使用它)
  • 注入一个dll,以便它可以访问所有内存(因为它在同一个进程中)

最后一个更容易(检查注入的dll或类似的东西)。第一个比较棘手,但我发现了一些关于它的文章:

答案 4 :(得分:1)

我问了一个类似的问题,结论基本上是你不能阻止这个。 How can I increase memory security in Delphi