У меня есть программа B, которая не предназначена для запуска при запуске программы A. Мне нужно преодолеть это ограничение. B показывает окно сообщения "A выполняется", указывающее на имя процесса и PID процесса программы. Я предполагаю, что B начинает поиск A из списка процессов, поэтому удаление A из списка процессов может помочь. Оба процесса имеют окна и требуют ввода данных пользователем.

Что уже было опробовано:

  • Переименование процесса А
  • Поиск в политике ценных бумаг для ограничения определенного пользователя, чтобы перечислить определенные процессы
  • Запуск в другом порядке
  • Проверено несколько утилит, но все они помогают скрыть только окно
  • Нашел этот https://www.codeproject.com/Articles/32744/Driver-to-Hide-Processes-and-Files, но он не гарантированно работает на Win10 и требует компиляции из источников

У меня Windows 10.

2 ответа2

2

TL; DR: это звучит как плохая идея

Вероятно, есть веская причина, почему B был спроектирован так, чтобы не запускаться, пока A работает. Первое, что приходит на ум, это то, что они совместно используют базу данных, ключи реестра или какой-либо другой двоичный источник данных, который может быть поврежден, если обрабатывается двумя потоками одновременно. В любом случае, без предоставления дополнительной информации о программах и о том, как B мог бы обнаружить A, все, что можно сделать, - это угадать. Если это программа для Windows, программа A, вероятно, записывает какой-то ключ реестра, который B проверяет при запуске. Но тогда он также может отключить какой-то временный файл. Возможность скрывать вещи от любого вида списка процессов заставила бы меня очень опасаться продолжения использования этой системы, поскольку это имело бы очень серьезные последствия для безопасности. Вы в основном спрашиваете, как руткит вашей системы.

1

Я делаю предположение, что B начинает поиск A из списка процессов ...

Сценарий 1. Проверка программы для другой программы не требует прав администратора для запуска.

Если для запуска программы B не требуются права администратора (включая использование служб, работающих с правами администратора), запустите ее в контексте другой учетной записи пользователя на вашем компьютере , которая не имеет прав администратора. Для этого нажмите Shift+ правую кнопку мыши на программе, чтобы получить опцию Запуск от имени другого пользователя .

Программа будет работать в контексте другой учетной записи пользователя, и, поскольку эта учетная запись не имеет прав администратора, она не может перечислять процессы, запущенные в контексте других пользователей. Поэтому он не сможет "увидеть" процесс другой программы.

Если вам нужны программы для совместного доступа к ресурсам файловой системы или реестра, просто предоставьте обеим учетным записям доступ к указанным ресурсам. Это не позволит одной программе увидеть другую.

Сценарий 2. Проверка программы для другой программы требует административных прав для запуска.

Приложение, которое запускается в контексте учетной записи с правами администратора, может делать все, что пожелает, на вашем компьютере, что делает чрезвычайно сложной задачу подорвать его прерогативу для использования этих привилегий. Единственный способ продвинуться вперед - узнать точные тесты, которые выполняет программа, чтобы определить, запущено ли другое приложение, а затем перехватить различные вызовы функций API, чтобы удалить существование целевой программы из возвращаемых данных. Так руткиты скрывают свое присутствие на компьютере. Это выходит далеко за рамки этого конкретного ответа (и вообще сайта Супер пользователя).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .