Estoy tratando de asegurar que una aplicación solo se ejecute desde un disco USB específico. Tengo un código para obtener el número de serie del dispositivo, pero la única forma en que puedo hacer que esto funcione como quiero es codificar manualmente el número de serie en el binario. ¿Hay alguna manera de que yo pueda hacer una aplicación de código auxiliar que modificaría el binario existente para insertar el número de serie en él después de compilarlo? He visto esto hecho en C++ en el pasado, pero eso fue hace mucho tiempo y no puedo recordar cómo lo hicimos en ese entonces.¿Cómo registrar un número de serie en un archivo ejecutable?
Respuesta
Almacenarlo en el conjunto es una mala idea. Esto es lo que haría (y lo he hecho en el pasado):
- Asegúrese de firmar sus ensamblajes.
- Cree un documento XML que contenga los datos de su licencia, en su caso, el número de serie del dispositivo USB.
- Utilice la biblioteca SignedXml en .NET (implementa XMLDSIG) para firmar el documento XML de licencia que contiene el número de serie. Utilizará la misma clave privada que se utiliza para firmar el ensamblaje.
- Cuando se inicia la aplicación, verifica que la firma del archivo XML sea válida utilizando la clave pública con la que se firmó (y está incorporada en el ensamblado).
Obviamente, usted no envía su clave privada, por lo que si la aplicación necesita generar el archivo de configuración XML en sí (en lugar de ser un archivo que envíe al usuario) deberá implementar un servicio web.
Muy bien, gracias por los comentarios, creo que usaré este método. Lo que intento hacer es crear un programa que solo se pueda ejecutar desde una unidad de almacenamiento específica que he autorizado. ¡Gracias por todos los buenos comentarios! –
Bueno, entonces siéntase libre de marcar esto como la respuesta :-) –
No lo sé, pero eso no me ha impedido responder antes.
Quizás descubra dónde desea almacenar el SN en el ejecutable (debe ser solo un lugar, ¿no?) Y simplemente trate el archivo ejecutable como un blob binario gigante, y use el programa de inserción para insertarlo donde lo necesite ¿ir?
Tal vez usted quiere obtener una clave de licencia USB independiente como éstas:
http://www.bhphotovideo.com/c/buy/USB-License-Keys/ci/12454/N/4294550039
???
¿Por qué alguien querría guardar algo dentro de un ejecutable? Si planea firmar el ejecutable para la distribución, el cambio del ejecutable de alguna manera rompería la firma y guardar algo en binario en el ejecutable no evitará que alguien saque el valor del ejecutable.
Lo mejor que puede hacer es almacenar el número de serie en un archivo, registro u otro lugar y luego cifrar el valor para que no se pueda modificar sin romperlo. Uso una biblioteca que se envía con License Vault desde una compañía relativamente nueva llamada SpearmanTech. Puede usar su biblioteca para almacenar valores encriptados en el archivo .NET machine.config en forma encriptada para que no se altere. De esta forma, puede extraer la información del archivo .config cuando se inicia su aplicación.
¿Está escribiendo una aplicación .NET en C++ o en C++ nativo, de cualquier manera, debería ser capaz de comunicarse con .NET Framework para que esta solución funcione.
Me gustaría ver su producto en http://www.spearmantech.com. Espero que funcione para ti.
- 1. Cómo registrar la excepción en un archivo?
- 2. Incluyendo un archivo XSLT en un archivo ejecutable
- 3. Embalaje de un archivo en un archivo ejecutable ELF
- 4. Cómo cargar un archivo ejecutable ELF ejecutable dinámicamente?
- 5. ¿Cómo obtiene programáticamente el número de serie de un iPhone?
- 6. Usando dlopen() en un archivo ejecutable
- 7. ¿Cómo puedo dejar de registrar accidentalmente un archivo en TFS
- 8. ¿Cómo crear un archivo jar ejecutable desde un proyecto clojure?
- 9. Cómo crear un archivo .exe ejecutable desde el archivo .m
- 10. serie de Windows - eliminar un archivo oculto
- 11. ¿Cómo registrar errores y advertencias en un archivo?
- 12. ¿Cómo se establece MOTW en un archivo ejecutable
- 13. ¿Cómo busco un archivo ejecutable usando python en Linux?
- 14. Incrustar un archivo ejecutable externo dentro de un programa C#
- 15. Cómo hacer un ejecutable phar?
- 16. Generando un número de serie específico del dispositivo
- 17. ¿Cómo puedo registrar un enlace?
- 18. Generar un archivo ejecutable usando wix
- 19. Compilar un archivo ejecutable estático independiente
- 20. compruebe si un archivo es ejecutable
- 21. ¿Cómo incrustar recursos en un solo ejecutable?
- 22. número de páginas en un archivo pdf
- 23. Archivos de objeto en un archivo ejecutable en Linux
- 24. registrar un tipo de archivo personalizado en iOS
- 25. Cómo crear un archivo de instalación que instalará un archivo ejecutable Jar
- 26. Cómo construir un ejecutable de scala independiente
- 27. ¿Cómo hacer un archivo ejecutable desde un archivo de objeto c?
- 28. ¿Cómo crear un archivo ejecutable para una aplicación Qt?
- 29. Uso de Powershell para registrar un archivo en el Gac
- 30. Registrar la salida Unittest en un archivo de texto
Cualquier técnica que lo permita es probablemente menos segura (es decir, no permite la firma de código) que colocar el S/N en un archivo separado con un hash criptográfico.¿Cuál es tu objetivo real aquí? –
¿Está compilando su C# a código nativo? –