-1

我正在尝试用C#制作一个安全软件,它监视其他进程上的所有单词并在找到特定单词时采取行动。示例:当任何其他正在运行的进程包含单词“ torrent ”时,我的应用程序会显示一个消息框,上面写着“小心病毒! ”。我希望有人能理解我的想法。

更新:
哦,谁知道呢,这仍然是一个粗略的想法。这就是为什么我给出了一个非常简单的例子(我知道这在实际程序中是无用的)。

更新 2:为什么
我知道一个叫做Block Free 4的软件。它阻止包含列入黑名单的单词的程序。这是一个轻量级的软件,运行良好。但我想改进这些功能并制作更好的程序。

4

3 回答 3

0

Windbg 等调试器具有内存中字符串搜索功能。

相关:https ://stackoverflow.com/a/10602366/2855568

除了现有的答案,WinDBG 是 DbgEng API 的 GUI 前端。您可以使用此 API 编写 WinDBG 扩展或其他独立应用程序。WinDBG SDK 附带了两者的示例,可以在 WinDBG 安装的 \sdk\samples\dumpstk 子目录中找到示例独立应用程序。

更多信息,我写了一篇关于 DbgEng 的文章在这里写扩展:

http://www.osronline.com/custom.cfm?name=articlePrint.cfm&id=559

其中大部分内容也适用于您编写独立应用程序的方式,因为它主要关注 DbgEng 接口的编程模式。

于 2014-03-10T03:20:51.253 回答
0

这听起来不是一个好主意,除了可能是一个笑话程序。它会非常缓慢,并且会被归类为恶意且无用。然而,这至少有一些教育价值。

只要您以管理员身份运行,就应该可以请注意,即使管理员也无法对某些系统进程执行此操作。

首先,您需要获得 SeDebugPrivilege。请参阅示例。

然后,您需要枚举所有进程。请参阅此示例: http: //msdn.microsoft.com/en-us/library/windows/desktop/ms682623 (v=vs.85).aspx

然后,使用 PROCESS_ALL_ACCESS 在每个 PID 上使用Open Process 。如果你得到 ERROR_ACCESS_DENIED,你可能没有正确获得 SeDebugPrivilege。

使用ReadProcessMemory读取进程的内存并将其存储在缓冲区中。某些进程将具有大量内存,您可能需要将其分成块。您还需要在错误处理方面保持稳健。

然后,扫描缓冲区以查找您想要的字符串,如果找到它,请执行一些操作。

您可能每 10 秒左右重复上述所有操作。

注意:在 C# 中,您需要对这些 API 进行 p-invoke。C# 不是处理这类废话的最佳语言,但有可能……不过,我推荐使用本机代码。

于 2014-03-10T02:59:47.213 回答
0

好吧,VoidStar对我最初的问题给出了正确的答案,而且我认为它对未来的其他人无论如何都会有用。但这对我来说并不是很有用,因为我不想要涉及的所有问题。我发现我必须坚持使用更简单的方法来实现这一目标。经过:

获取窗口标题: 如何使用 c# 获取当前活动窗口的标题?

从 Web 浏览器获取 URL(有帮助,但没有解决): Get URL from browser to C# application

这两个动作看起来是你可以做的所有事情,以根据我的目标制作一个好的应用程序。

我希望我有所帮助。感谢所有真正提供帮助的人。

于 2014-03-17T03:05:01.467 回答