【问题标题】:How to access MainModule of a game with anti-cheat?如何使用反作弊访问游戏的MainModule?
【发布时间】:2019-06-29 06:17:02
【问题描述】:

大约一个月前,我为自己编写了一个 python 脚本来自动记录正在运行的程序及其相关信息,然后我使用了一个 C# 程序来获取这些信息。

我今天下载了一个游戏,当我运行它时,我得到了一个System.ComponentModel.Win32Exception 错误对话框。

我打开 Visual Studio 来调试我得到错误的地方。当我尝试访问 Process.MainModule 时出现错误。

当我在编写该程序时遇到错误时,我在互联网上搜索答案,我将 C# 程序设为 64 位以访问 64 位进程并请求管理员权限以访问以管理员身份运行的进程。我能找到的关于 MainModule 错误的所有问题都与这两个问题有关。

游戏正在使用 Easy Anti Cheat,我猜这可能会阻止我访问该进程。

我还使用WMI 尝试至少获取文件路径,以便我可以从FileVersionInfo.GetVersionInfo 函数中获取一些信息,但 wmi 也没有返回文件路径或命令行。

我在 python 中使用psutil 来获取命令行,因为如果不使用 WMI 就无法从 C# 获取它,所以我尝试从那里获取一些信息,但是我尝试做的任何事情都会出错,我甚至无法获取文件名,而我可以从 C# 中获取。

C#代码的相关部分是

int pid; //I get this from command line arguments
Process p;
p = Process.GetProcessById(pid);
var filename = p.MainModule.FileName ?? "";

有没有一种方法可以让我至少获得 exe 路径,这样我就可以使用 FileVersionInfo 而不会触发反作弊程序并可能让自己被禁止? 甚至 Windows 10 任务管理器也没有显示命令行(但是当我右键单击游戏并选择打开文件路径时它会打开文件夹)。

【问题讨论】:

    标签: c# process anti-cheat


    【解决方案1】:

    我找到了a working example in C++,并用它构建了一个可执行文件来获取进程的路径,并用返回的路径调用FileVersionInfo.GetVersionInfo来获取我想要的信息。

    【讨论】:

      猜你喜欢
      • 2017-01-04
      • 2018-12-21
      • 2012-03-16
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 2017-04-20
      相关资源
      最近更新 更多