【问题标题】:Detect CreateProcess or who created the process检测 CreateProcess 或谁创建了进程
【发布时间】:2014-04-21 03:10:45
【问题描述】:

如何检测创建我的应用程序进程的应用程序的名称?

例如,如果有人想要,他们可以调用 CreateProcess 并将挂起标志传递给它并注入到我的应用程序中。

有没有办法阻止 CreateProcess 或找出创建我的应用程序实例的进程?

我已经迷上了 loadlibrary、createthread 和所有其他简单的东西,但 CreateProcess 似乎可以绕过它。

我这样做是为了娱乐和学习,而不是为了实际使用。我只是没有看到任何检测 CreateProcess..

有什么想法吗?

【问题讨论】:

  • CreateProcess 是 NtCreateProcess 的包装器,需要进行一些检查。
  • 您希望它如何工作?假设有人向您的应用程序注入代码并覆盖任意 API 函数。进一步假设有一个神奇的WhoLaunchedProcess 函数。为什么不有人替换这个函数来返回“Windows Explorer”?
  • 我不知道..我只是想知道是否有办法..我确实说过它不适用于现实世界/实际用途..

标签: c++ winapi


【解决方案1】:

您可以使用工具帮助库找到父进程ID:

  • 致电CreateToolhelp32Snapshot
  • 调用Process32FirstProcess32Next枚举进程。
  • 有时您会遇到一个PROCESSENTRY32 结构,其中th32ProcessID 是您的进程的进程ID。
  • 读出th32ParentProcessID 成员以查找您父级的进程ID。
  • 现在您知道父进程,您可以再次枚举以获取有关它的信息。

准备好在到达这一点之前终止父进程。

【讨论】:

  • 当然,调用者可能已经修补了这些函数以返回虚假信息。
猜你喜欢
  • 2010-11-16
  • 1970-01-01
  • 2019-05-17
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多