Autor
|
Tema: Cuando se pase de fecha, borrar el propio ejecutable. (Leído 4,248 veces)
|
Meta
|
Hola:
He hecho ejecutables a clientes en el cual al final no paga y se van, eso si, por Internet.
Mi idea, se que hay muchas y mejores de las que voy a contar, el mio es simple, no de hacer pero si de explicar.
Si hoy es día 15-01-2016 hora 15:30. Le entrego un ejecutable hecho con Visual C#, el que sea, simple como el propio Form1 con un botón que al pulsar dice Hola mundo. Si el día 29-01-2016 a la misma hora o la que sea, desde que ejecutes la aplicación haga lo siguiente.
Que borre el propio ejecutable.
Antes de eso, hace otra cosa, por ejemplo, el ejectubale se lo envio en .zip o .rar. ¿Qué hacer? Que se ponga a buscar primero en el área local para que borre dichos archivos llamado nombre.zip o nombre.rar. Si no lo encuentra, acto seguido borra el nombre.exe.
Parece complicado a la hora de programar. Me conformo que se borre el propio ejecutable.
Se puede sugerir mejores métodos, eso si, tampoco quiero complicarme la vida.
¿Alguna sugerencia, ejemplos?
Saludos.
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
Olvida TODO eso, esa no es la manera de solucionarlo. Siempre hay que acordar que el cliente pague ANTES de entregar el programa (ya sea el primer día o el último dia, pero ANTES), los que no valoren el trabajo de esta manera pues buenas tardes y adiós...¿me entiendes?, se más selectivo. De todas formas si por el motivo que sea el cliente dice de pagar antes y luego cuando ya has terminado la app dice de pagarte despues, entonces lo que debes hacer es tan simple cómo entregarle una demo del programa, es decir, la aplicación con funcionalidad muy limitada, para que el cliente tenga la certeza de que el programa está hecho y cumple con los requisitos, pero que no podrá hacerla funcionar del todo hasta que te pague el trabajo que le hiciste. Esa es la solución más simple y también la más efectiva, por que directamente le estarías entregando al cliente la "porción" del código fuente a la que tendrá acceso, mientras que al usar soluciones rebuscadas de sistemas de protección se podrían bypassear con ciertas herramientas de ingeniería inversa.
Te he dado mi opinión y sinceramente te aconsejo que lo soluciones de la forma que acabo de explicar, ahora, solamente como información adicional te indicaré un par de buenas herramientas para proteger ensamblados .Net y añadirles un periodo de evaluación o expiración o trial o como quieras llamarlo...: Puedes usar cualquier otro software para añadirle el periodo de evaluación trial cómo por ejemplo WinLicense, pero los que mencioné son para .Net. Saludos!
|
|
« Última modificación: 15 Enero 2016, 17:31 pm por Eleкtro »
|
En línea
|
|
|
|
Meta
|
Gracias, no he querido hacerlo así por el poco tiempo que me dio. Bueno. Lo de retrasar el reloj si lo hace, lo detecta y se borra. En cuanto a que no se borre el propio ejecutable cuando está corriendo. Se puede hacer que al ejecutarlo, crea otro ejecutable que no hace nada, solo una ventana invisible que cierra el ejecutable principal y luego borra, a parte de localiza el nombre.zip o nombre.rar si lo tienen lo más cerca posible. El proceso sería así. Dentro del programa principal lo que he hecho es crear otro ejecutable de prueba, en el cual cualquier antivirus me detecta, hay que tener cuidado. El ejecutable puedo ponerlo llamado así nombre.dll. Al ejecutar el programa principal, crea copia dll (en realidad es un .exe que le cambié la extensión a .dll) como cebo y lo copia en lo más profundo del disco duro, donde le indiques. Entrego estos dos programas. Programa principal.exe nombre.dll El nombre.dll se copia en el disco duro donde quieras, se llamará como quieras pero con el nombre.exe. Ese nuevo archivo copiado se ejecuta, comprueba hora y fecha, si se pasó el tiempo, se ejecuta cerrar la aplicación del programa principal y el borrado. Espero que se entienda.
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
Bueno, ya veo que una vez más todo lo que te he dicho no ha servido de nada para que sigas el consejo, y yo me niego a ayudar en algo así por que es exageradamente innecesario, pero te diré una cosa para ver si consigo que al menos lo veas más simple:
La solución que propones, aparte de ser muy rebuscada y completamente desaconsejable e innecesaria bajo mi criterio, la manera en la que quieres que se efectue el procedmiento también es algo muy rebuscado, mira, solo deberías asegurarte de evaluar la fecha o lo que quieras evaluar al inicio de la aplicación, en el evento Application.Startup por ejemplo o en el evento Form.Load y la almacenas en una clave de registro o cómo prefieras, y luego para auto eliminar la aplicación es tan simple como finalizar la ejecución de la app no si antes iniciar una instancia de la CMD pasándole el comando DEL con la ruta de tu executable y el comando PING para retrasar la ejecución de la orden de eliminación unos cuantos segundos asegurando así que tu app está completamente cerrada, est significa que no necesitas manejarte con varios executables y archivos camuflados y... en fin, nada de lo mencionado tiene sentido hacerlo, ni de lo que tu has dicho ni tampoco de lo que yo acabo de decir, por que repito de nuevo: es algo completamente innecesario implementar seguridad, le pasas una demo de tu programa al cliente y listo, esa es la mayor seguridad y efectividad, pero bueno, ¡tu mismo!.
Saludos.
|
|
« Última modificación: 15 Enero 2016, 18:00 pm por Eleкtro »
|
En línea
|
|
|
|
Meta
|
Hola:
Mejor hacer una parte del programa y el resto cuando paque todo.
Saludos.
|
|
|
En línea
|
|
|
|
nevachana
Desconectado
Mensajes: 61
|
Por que no creas un servidor que guarde toda la source con un string obfuscado,y si el cliente quiere usar el programa envia un paquete con datos,pago,datetime etc y si todo es correcto le respondes con el string y lo compilas.
|
|
|
En línea
|
|
|
|
Meta
|
Hola: ¿Crear un servidor? No suena nada fácil. Me han sugerido que le saque información de la máquina como el MAC tanto PC como el use habitualmente, si la MAC no coincide, no se ejecutará. https://msdn.microsoft.com/es-es/library/system.net.networkinformation.physicaladdress%28v=vs.110%29.aspxSe compara con el MAC o dos MAC o los que tenga en esos PC con el programa, si no coincide, no se ejecuta o sale un mensaje que no corresponde al PC correspondiente, por poner un ejemplo. Saludos.
|
|
« Última modificación: 16 Enero 2016, 13:45 pm por Meta »
|
En línea
|
|
|
|
nevachana
Desconectado
Mensajes: 61
|
Yo creo que si el server solamente tuviese ese packet unico que te digo seria "muy facil" de hacer
|
|
|
En línea
|
|
|
|
kondrag_X1
Desconectado
Mensajes: 157
|
Coincido con Elektro en el tema si quieres ser profesional haz una demo, en tal caso de que te resulte muy complicado graba un video usando las funcionalidad de la app y envíaselo para que el cliente se quede mas tranquilo.
PD: Consejo que recibí por parte de electro hace algún tiempo se selectivo en los trabajos.
|
|
|
En línea
|
|
|
|
Meta
|
Lo que me han contado y gracias los consejos, este es otra forma. - Crea un nuevo proyecto de formularios (el clásico)
Ve a Proyecto > Propiedades de WindowsAplicattion1 (o como se llame el proyecto) Ve a Configuración En donde dice "setting" escribes "licencia" y le das enter En la misma columna, donde dice "String" le das click y lo cambias por "Double" En la misma columna, donde dice "Usuario" lo dejás así En la misma columna, donde hay un espacio vació, le pones 10 Haces click en "Guardar Todo" (ya sabes donde está) Vuelves al formulario y le das doble click en lo gris Ahora, en la ventana de código, borras todo el contenido y escribes:
Public Class Form1 Sub Form1_Load (sender as object, e as EventArgs) handles MyBase.Load If My.Settings.licencia = 0 Then MsgBox("TIENES QUE COMPRARME EL PROGRAMA (NO TE LO REGALE)") END Else My.Settings.licencia = My.Settings.licencia - 1 MsgBox("Te quedan " & My.Settings.licencia & " arranques en este programa. Tendrás que comprame el programa.") End If end sub end class
Listo. Cada ves que se ejecute tu programa se le restará un arranque al por defecto que le asignamos 10, si le quedan 0 se muestra un menssaje y se cierra tu programa, NO SE BORRA PERO TAMPOCO SE EJECUTA. Debería de ser una solución. Salu2.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
¿Alguna mejor idea para esta "chapucilla"? (Borrar el propio ejecutable)
.NET (C#, VB.NET, ASP)
|
baZZ
|
0
|
2,079
|
6 Junio 2007, 16:03 pm
por baZZ
|
|
|
Pase lo que pase este 2012, siempre los recordare!
Foro Libre
|
Di~OsK
|
0
|
1,734
|
20 Enero 2012, 06:34 am
por Di~OsK
|
|
|
Borrar ejecutable en ejecucion
Análisis y Diseño de Malware
|
nts94
|
2
|
3,136
|
26 Marzo 2012, 11:51 am
por nts94
|
|
|
validar una fecha que no se pase del dia actual
PHP
|
luiferrr
|
2
|
3,415
|
12 Enero 2014, 21:02 pm
por engel lex
|
|
|
YouTube matará su propio editor de vídeo y pase de diapositivas en septiembre
Noticias
|
wolfbcn
|
0
|
1,399
|
21 Julio 2017, 21:51 pm
por wolfbcn
|
|