【问题标题】:Find Hidden Miners in Go (Hidden windows + commandlines)在 Go 中查找隐藏的矿工(隐藏窗口 + 命令行)
【发布时间】:2019-01-03 22:24:38
【问题描述】:

我发现了这个 C#,我想在 Go 中改进它:https://github.com/roachadam/MinerKiller/blob/master/MinerKiller/MinerKiller.cs

我的第一个问题是如何检测进程窗口是否隐藏。即这段代码:

if (p.MainWindowHandle == IntPtr.Zero )

我的第二个问题是如何获取进程的命令行。即这个C#代码

private string GetCommandLine(Process process)
{
     string cmdLine = null;
     using (var searcher = new ManagementObjectSearcher("SELECT CommandLine FROM Win32_Process WHERE ProcessId = " + process.Id))
     {
          var matchEnum = searcher.Get().GetEnumerator();
          if (matchEnum.MoveNext())
          {
              cmdLine = matchEnum.Current["CommandLine"]?.ToString();
          }
      }
      return cmdLine;
}

【问题讨论】:

  • 您无法迁移,但您想改进。您当前的 GO 经验可能会带来挑战。使用 C# 改进它有意义吗?

标签: go process mining


【解决方案1】:

虽然 go 标准库的 os 包提供了许多很好的实用程序来连接操作系统功能,但它们比您从 .NET System.Management 类中引用的要“低级”得多。您很可能必须自己实现这些类的行为才能达到预期的结果(使用 Go 的 os 包中的工具作为您的主要“构建块”)

也就是说,Go 中有一个 psutil 端口 (gopsutil - https://github.com/shirou/gopsutil/),它提供了用于检索有关正在运行的进程以及系统利用率的信息的实用程序。这很可能会提供更高级别的抽象,您可以使用它来实现您的程序。

如果gopsutil 太自以为是或太高而无法满足您的需求,我还会查看 golang 子存储库中的操作系统特定包。

在此处记录:https://godoc.org/golang.org/x/sys

来源:https://github.com/golang/sys/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 2015-09-13
    相关资源
    最近更新 更多