elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Cuando se pase de fecha, borrar el propio ejecutable.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cuando se pase de fecha, borrar el propio ejecutable.  (Leído 3,854 veces)
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Cuando se pase de fecha, borrar el propio ejecutable.
« en: 15 Enero 2016, 15:20 pm »

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 Desconectado

Mensajes: 9.810



Ver Perfil
Re: Cuando se pase de fecha, borrar el propio ejecutable.
« Respuesta #1 en: 15 Enero 2016, 17:00 pm »

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


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Cuando se pase de fecha, borrar el propio ejecutable.
« Respuesta #2 en: 15 Enero 2016, 17:32 pm »

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 Desconectado

Mensajes: 9.810



Ver Perfil
Re: Cuando se pase de fecha, borrar el propio ejecutable.
« Respuesta #3 en: 15 Enero 2016, 17:52 pm »

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


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Cuando se pase de fecha, borrar el propio ejecutable.
« Respuesta #4 en: 15 Enero 2016, 18:28 pm »

Hola:

Mejor hacer una parte del programa y el resto cuando paque todo.

Saludos.
En línea

nevachana

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: Cuando se pase de fecha, borrar el propio ejecutable.
« Respuesta #5 en: 16 Enero 2016, 10:29 am »

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


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Cuando se pase de fecha, borrar el propio ejecutable.
« Respuesta #6 en: 16 Enero 2016, 13:42 pm »

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.aspx

Se 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 Desconectado

Mensajes: 61


Ver Perfil
Re: Cuando se pase de fecha, borrar el propio ejecutable.
« Respuesta #7 en: 16 Enero 2016, 15:48 pm »

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.aspx

Se 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.
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 Desconectado

Mensajes: 157


Ver Perfil
Re: Cuando se pase de fecha, borrar el propio ejecutable.
« Respuesta #8 en: 16 Enero 2016, 16:29 pm »

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


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Cuando se pase de fecha, borrar el propio ejecutable.
« Respuesta #9 en: 17 Enero 2016, 14:57 pm »

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:

Código
  1. Public Class Form1
  2.    Sub Form1_Load (sender as object, e as EventArgs) handles MyBase.Load
  3.  
  4. If My.Settings.licencia = 0 Then
  5.            MsgBox("TIENES QUE COMPRARME EL PROGRAMA (NO TE LO REGALE)")
  6.  
  7.            END
  8.        Else
  9.            My.Settings.licencia = My.Settings.licencia - 1
  10.            MsgBox("Te quedan " & My.Settings.licencia & " arranques en este programa. Tendrás que comprame el programa.")
  11.        End If
  12.  
  13. end sub
  14.  
  15. 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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines