如何检查其他程序是否正在运行?使用“打开”不会

2024-04-28 14:56:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个程序,如果某个程序已打开,则不允许您继续。在这种情况下,如果作弊引擎.exe已打开,无法继续。在

我以为密码应该是这样的:

def openedprogram():
with open('Cheat Engine.exe', 'r') as f:
    print("You have Cheat Engine Open! Close and uninstall it before continuing!")
else:
    continue()

这里出现了一些错误,我试着去掉“Else:”,我得到一个错误,说作弊引擎.exe不是有效的目录。 任何帮助都将不胜感激!谢谢。在


Tags: 引擎程序密码defas错误with情况
2条回答

这几乎是完全不可能做到的(请参阅防病毒和反黑客注入),但您可以在大多数情况下查看进程名称是否显示在您的进程列表中。在

像这样的事情会使进程在当前处于活动状态

import os
import psutil # http://code.google.com/p/psutil/
import time

def get_procs():
    while 1:
        procs = psutil.get_process_list()
        procs = sorted(procs, key=lambda proc: proc.name)

        for proc in procs:
            yield proc.name

你的问题问一件事(是一个程序“正在运行”),而你的代码检查另一件事(你能成功地打开一个文件来读取它吗),你的错误消息和你的问题文本正在讨论另一件事(是一个给定的可执行文件“已安装”)。在

在你理解这些不同问题之间的区别之前,你不可能编写一个程序来做你想做的事情(不管实际上是什么)。在

打开文件会告诉您给定位置是否存在具有允许您访问该文件的权限的给定名称的文件。当你的程序/游戏正在运行时,这对于阻止“作弊”工具的使用是没有用的。在

通过检查路径查看作弊.exe“程序就在上面的任何地方。然而,那将是相当蹩脚的。重新命名程序并将其保存在某个不在路径上的目录中的智能和教育门槛非常低。我估计,平均10岁的孩子在微软Windows上玩游戏,大概能在5分钟或更少的时间内解决这个难题(破解这个策略)(“成就解锁!”)。在

像“魔兽世界”这样的程序有相当复杂的“守护者”技术,它们试图阻止程序(如“滑翔机”或“暗影机器人”)在魔兽世界打开时运行。当然,这样的程序可以安装在任何目录下,以任何名称安装,并且可以在运行时在进程列表中重命名自己。这些“作弊”程序使用的操作系统工具与调试器基本相同(MacOSX下的ptrace接口和MS Windows下的任何模拟接口)。这些允许像gdb和strace这样的程序“窥视”另一个程序的地址空间并“戳”出其中的值。因此,他们通过窥视程序存储有关用户界面的某些模型信息的位置(例如,基本上是目标所在的位置),并将事件插入操作系统通常放置键盘和鼠标事件的缓冲区(从而模拟用户交互并使其自动化)。在

可以想象,“管理员”可以尝试扫描进程表中的某些签名(类似于反病毒),甚至可以尝试使用类似的“调试”接口来查找冗长程序的痕迹。在

然而,最终这不是一款没有硬件支持的游戏(比如臭名昭著的TPM可信平台模块),而目前在商品消费市场(例如,通用PC和Mac)中,游戏作者无法获得硬件的支持。在

但是嘿,试着玩得开心。在

相关问题 更多 >