c# - 检测进程的内存访问

标签 c# process

我正在尝试检查应用程序是否试图操纵特定进程(例如,将自身 Hook 到它)。我找不到合适的方法来完成这个。是否可以计算正在运行的进程的校验和?如果不是,我如何检测到这种情况?

最佳答案

其他进程不能在你的进程中创建钩子(Hook),可以修改内存但是要创建钩子(Hook)这段代码必须在你的地址空间中,这可以在启动时将 DLL 注入(inject)你的进程(在运行时注入(inject) dll 是一个困难的),您可以通过在您的进程中列出 DLL 并搜索一些 ReadProcessMemoryWriteProcessMemoryOpenProcessCallNextHookEx< 来轻松检查这一点 在他们的代码中调用函数。为此,获取函数的地址 ( GetProcAddress ) 和代码中的搜索值(您可以添加一些 asm call 预测以获得小范围结果)。

您可以检查磁盘和内存中的 PE 文件有什么问题,当启动时发生 DLL 注入(inject)时,您的 PE 文件从文件复制到内存后应该已损坏,之后最后一个 dll 库,你应该用额外的 dll 导入覆盖调试符号。这种修改可以在文件上完成,就像在内存中一样。

当您使用 C# 语言时,最好但对您来说可能并不容易的方法是混淆您的代码。我认为这是一个很好的方法,因为你不会 Hook 一些你不知道如何工作的东西,因为你不知道你必须做什么以及在哪里 Hook 。但是对于良好的混淆 C# 代码,您必须为此找到好的软件,并且可能支付不低的价格。

关于c# - 检测进程的内存访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8679280/

相关文章:

c# - String.Format 和 TimeSpan 问题

c# - iOS 14.2 更新后打开模式时 KeyWindow NavigationController 为 null

c# - react 性扩展 - AsyncLock.Wait 抛出 ArgumentNullException

asp.net - 通过非个性化从 .NET Web 应用程序启动流程

c# - C# 中是否有泛型数字类型?

c# - VS2010 COM 互操作错误解决方法? (INetFwMgr)

node.js - NodeJS - 管道多个 FFMPEG 进程

c - 使用 Ctrl+C 停止在前台启动的进程时出现段错误

java - 如何使用pid杀死进程

javascript - 在不终止子进程的情况下终止 node.js 程序