如何访问带有反作弊功能的游戏的MainModule?

How to access MainModule of a game with anti-cheat?

大约一个月前,我自己编写了一个 python 脚本来自动记录 运行 程序及其其他相关信息,并使用 C# 程序获取信息。

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

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

时出现错误

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

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

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

我在 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 任务管理器也不显示命令行(但是当我右键单击游戏并 select 打开文件路径时它会打开文件夹)。

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