我试图创建一个程序,如果某个程序打开,它将不会让你继续。在这种特殊情况下,如果Cheat Engine.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:",我得到一个错误,说Cheat Engine.exe不是一个有效的目录。 任何帮助将不胜感激!感谢。
答案 0 :(得分:1)
这几乎完全不可能(请参阅防病毒和反黑客注入),但您可以查看流程名称是否显示在流程列表中。
这样的事情会使进程暂时处于活动状态
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
答案 1 :(得分:0)
当你的代码检查另一件事时(你能成功打开一个文件来阅读它),你的问题会问一件事(是一个程序“正在运行”)吗?你的错误信息和问题的文字正在讨论另一件事(是一个给定的可执行文件“已安装”。
在你理解这些不同问题之间的区别之前,你不可能编写一个程序去做你想要的事情(实际上是什么)。
打开文件会告诉您某个给定位置的文件是否存在,并且具有允许您访问它的权限。这对于阻止在程序/游戏运行时使用“作弊”实用程序毫无用处。
通过检查PATH以查看“cheat.exe”程序是否在任何地方,您可能会获得一些非常有限的成功。然而,这将是相当蹩脚的。重新命名程序并将其保存在不在PATH上的某个目录中的智能和教育条件非常低。我认为在MS Windows上玩平均10岁玩游戏可能会在大约五分钟或更短的时间内解决这个难题(“成就解锁!”)。
诸如“魔兽世界”之类的程序具有相当复杂的“看守”技术,这些技术试图阻止程序(例如“Glider”或“Shadowbot”)在WoW打开时运行。当然,这些程序可以以任何名称安装在任何目录中,并且可以在运行时在进程列表中重命名。这些“作弊”程序使用与调试器使用的基本相同的OS工具(MacOS X下的ptrace接口以及MS Windows下的模拟)。这些允许像gdb和strace这样的程序“窥视”到另一个程序的地址空间并向其“捅”值。因此,他们通过窥视程序存储关于用户界面的某些模型信息(例如,目标所在的位置)的位置,并将事件戳到缓冲区中,操作系统通常会放置键盘和鼠标事件(从而模拟用户交互)并自动化它们。)
可以想象,“warden”可以尝试扫描进程表中的某些签名(类似于防病毒),甚至可以尝试使用类似的“调试”接口来查找verbotten程序的痕迹。
然而,如果没有硬件的支持(比如臭名昭着的TPM ---可信赖的平台模块),最终这不是一款游戏,目前商用消费市场的游戏作者无法使用它(通用PC)和麦克斯,例如)。
但是,嘿,尝试尝试。