Есть ли способ однозначно идентифицировать компьютер, даже если программное обеспечение запущено на виртуальной машине?

#virtual-machine #software-distribution

#виртуальная машина #программное обеспечение-распространение

Вопрос:

Есть ли способ проверить реальный компьютер, на котором запущено программное обеспечение, даже через виртуальную машину, например, использовать черный ход для связи с реальным компьютером, пока программное обеспечение работает на виртуальной машине?

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

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

Комментарии:

1. большинство виртуальных машин размещаются даже не на настольных компьютерах, а на специализированном оборудовании. И весь смысл виртуализации в том, чтобы обеспечить работу «как в реальности», чтобы программное обеспечение, работающее на виртуальной машине, не заметило, что оно больше не на голом металле. Кроме того, как вы сказали, даже если вы можете определить, что программное обеспечение запущено в виртуальной среде, это может быть совершенно законным использованием для этой организации.

2. Честно говоря, вы не совсем ясно объяснили это, но похоже, что они обеспокоены тем, что люди размещают экземпляры своего программного обеспечения на виртуальных машинах, а затем делятся им между пользователями, чтобы обойти лицензионные ограничения? Если да, то это то, что лучше всего решить с помощью надежного лицензирования, прочных отношений с клиентами и некоторых активных мер проверки и принудительного исполнения, если это возможно. Другими словами, это юридическая и технологическая проблема, а не техническая.

3. Я предлагаю вам прочитать о виртуальной машине. Вы узнаете, что вы можете очень легко создать идеальные клоны виртуальной машины, и вы не увидите ни единой разницы. Лучшим решением остается добавление защиты в ваше приложение, например, входа в систему. Вы можете запретить многократный вход в систему с использованием одной учетной записи, но это все равно не мешает другому пользователю использовать учетную запись, в то время как другой пользователь ее не использует. Вы можете усложнить это, но не можете полностью защитить от этого.

4. @itsme86 Я предполагаю, что OP надеялся на фрагмент C #, подобный bool result = IsMachineVirtual(); .. :-). Но, честно говоря, судя по всему, рассматриваемая проблема едва ли связана с программированием любого рода, если вообще касается. Или, по крайней мере, это не та проблема, которая лучше всего решается с помощью кода.

5. Спасибо вам всем, у меня сложилось впечатление, что это будет невозможно сделать, но, тем не менее, они попросили меня сделать это, я просто скажу им, что это неосуществимо. Мне просто нужно было подтверждение.