Tienes varias opciones.
Ciertamente puede hacer lo que está planeando y vincular la licencia a una dirección MAC. No se requieren habilidades de super hacker para reasignar una dirección MAC, o para asignar la misma dirección MAC a un adaptador virtual, pero es un inconveniente hacerlo. También rompería su red si esos adaptadores estuvieran todos en la misma LAN. Este enfoque hará que sus usuarios tengan un ajuste cuando cambian las computadoras y su software se rompe.
Hay una clave de seguridad en la que le vende al cliente una mochila USB. Estos cuestan mucho dinero cada uno, y pueden ser derrotados por un hacker, que luego puede vender copias. Son inconvenientes para los usuarios con licencia.
Hay productos de licencias de seguridad, donde usted le vende al cliente una clave y un servidor de claves con licencia. Como usuario final, estos son extremadamente difíciles y costosos de configurar y ejecutar; Aunque menos inconvenientes que los dongles de hardware. Una vez más, muy caro por licencia; una vez más, no es muy seguro contra los piratas informáticos.
Puede crear una parte crítica de su aplicación como un "servicio" y vender "claves API" a sus usuarios. Sólo una clave válida les permitirá utilizar su servicio. Tiene otras opciones, a un precio por uso o por suscripción. Pero no funcionará para sus clientes cuando están desconectados de su servicio. Y te cuesta dinero continuo para alojar un servidor.
Puede usar un servicio de distribución de terceros, como Steam, y aprovechar sus servicios para instalar y ejecutar su aplicación. Pero eso está orientado a los jugadores, y no ha sido aceptado por los entornos corporativos. Y también te costará una cantidad significativa de dinero.
Puede marcar el software con marca de agua, para que cada copia se identifique de forma única para cada cliente. Si descubre copias compartidas en la naturaleza, puede identificar quién fue el origen de la fuga y demandarlos. La distribución se vuelve un poco complicada, pero en general es bastante barata.
Puede actualizar continuamente su software, distribuyendo nuevas funciones y arreglos solo para los clientes que pagan. Esto proporciona un incentivo para que los clientes no utilicen copias pirateadas, o que se actualicen a una versión con licencia si realmente quieren sus nuevas funciones.
Y usted puede comunicarse con sus compradores. Puede forzar el "clic para acordar" con los EULA densos y difíciles de leer que los amenazan con demandas legales si permiten copias. O bien, puede pedirles amablemente que lo apoyen como desarrollador de software independiente y que no compartan copias.
Lo principal es que probablemente no estés preocupado por nada. La mayoría del software falla comercialmente porque no tiene suficientes usuarios, no porque los piratas lo estén copiando. Primero debe concentrarse en distribuirlo sin preocuparse por copiar. Si es tremendamente exitoso, y copiar está consumiendo tus ganancias, entonces preocupate por los piratas.
Independientemente del enfoque, debe aceptar el riesgo de que su software pueda ser pirateado. Eso ha sido cierto desde el comienzo de la "información como valor", y nada ha cambiado desde entonces.