我有程序 B,它被设计为在程序 A 启动时不运行。我需要克服这个限制。B 显示一个消息框“A 正在运行”,指向程序 A 的进程名称和 PID。我假设 B 开始从进程列表中搜索 A,因此从进程列表中删除 A 可能会有所帮助。两个进程都有窗口并需要用户输入。
到目前为止已尝试过的方法:
- 重命名进程A
- 查看证券政策以限制某些用户列出某些流程
- 按其他顺序运行
- 检查了许多实用程序,但它们都只有助于隐藏窗口
- 找到了这个https://www.codeproject.com/Articles/32744/Driver-to-Hide-Processes-and-Files但不能保证在Win10上运行,需要从源代码编译
我有 Windows 10。
答案1
TL;DR:这听起来是个坏主意
B 被设计为在 A 运行时不运行,这可能有充分的理由。首先想到的是,它们共享一个数据库、注册表项或其他二进制数据源,如果同时由两个线程处理,这些数据源可能会被破坏。无论如何,如果不提供有关程序的更多信息以及 B 如何检测 A,任何人都只能猜测。如果这是一个 Windows 程序,程序 A 可能会写入某种注册表项,B 在启动期间会检查这些注册表项。但它也可能关闭某种临时文件。从任何类型的进程列表中隐藏内容的可能性会让我非常谨慎地继续使用该系统,因为这将带来非常严重的安全后果。你基本上是在问如何对系统进行 rootkit。
答案2
我假设 B 开始从进程列表中搜索 A......
场景 1: 检查其他程序的程序不需要管理权限即可运行。
如果程序 B 不需要管理员权限即可运行(包括不使用以管理员权限运行的服务),请在计算机上的另一个用户帐户上下文中执行它没有管理员权限。为此,Shift+右键单击该程序以获取以不同用户身份运行选项。
该程序将在其他用户帐户的上下文中运行,并且由于该帐户没有管理员权限,因此它无法枚举在其他用户。因此它将无法“看到”其他程序的进程。
如果您需要程序共享对文件系统或注册表资源的访问权限,只需授予两个用户帐户对上述资源的访问权限即可。这样做不会允许一个程序看到另一个程序。
场景 2:检查其他程序的程序确实需要管理权限才能运行。
在具有管理权限的帐户上下文中运行的应用程序可以执行任何事物它可以随意地在你的电脑上执行任何操作,因此要想破坏它行使这些权限的特权就变得非常困难。唯一的办法就是知道精确的测试程序正在执行的操作以确定其他应用程序是否正在运行,然后挂接所涉及的各种 API 函数调用,以从返回的数据中删除目标程序的存在。这就是 rootkit 在计算机上隐藏其存在的方式。这样做远远超出了此特定答案的范围(以及一般的超级用户网站)。