Pregunta

He escrito un programa que es una especie de complemento independiente no oficial para una aplicación. Permite a los clientes obtener un servicio que es una alternativa de menor precio que la propiedad del proveedor. Mi programa no es ilegal, contra ningún tipo de TOS, y ciertamente no es un virus, adware, ni nada de eso. Dicho esto, el proveedor, por supuesto, no está contento de que yo tome su competencia, y está tratando de bloquear mi aplicación.

Ya ha intentado algunas tácticas para evitar que la gente ejecute mi aplicación junto con la suya. Lo hace así, si se detecta, su aplicación arroja un error falso.

Primero, verificó si mi programa se estaba ejecutando buscando una ventana abierta con el título correcto. Contrarresté esto aleatorizando el título del programa al inicio.

Luego, buscó el nombre del proceso en ejecución. Contrarresté esto haciendo que la aplicación se copiara a sí misma cuando se iniciaba como [cadena aleatoria] .exe y luego la ejecutaba.

De todos modos, mi pregunta es esta: ¿qué más puede hacer para detectar si mi programa se está ejecutando? Sé que puedes leer el texto de la ventana (es decir, la barra de estado, las etiquetas). Estoy preparado para contrarrestar esto reemplazando las etiquetas con imágenes (uf, ¿de alguna otra manera?).

¿Pero qué más hay? ¿Puedes detectar qué .dlls ha cargado un programa? Si es así, ¿podría resolverse esto aleatorizando los nombres dll antes de cargarlos?

Sé que es posible obtener la firma de un programa en la memoria y rastrearlo de esa manera (como un escáner de virus), pero las posibilidades de que lo haga probablemente no sean buenas porque eso suena bastante avanzado.

Aunque esto es un poco horrible de su parte, es divertido. Es como una pelea de puños nerd.

EDITAR: Cuando dije que es un complemento, ese es solo el término (incorrecto) que usé. Es un EXE independiente. La " API " entre mi programa y el otro, el mío es simplemente ingresar datos en los controles (como cuadros de texto, etc.).

¿Fue útil?

Solución

Me siento un poco sucio respondiendo esto, pero es tarde y estoy esperando que termine la copia de la unidad, así que ...

Podría usar una suma de verificación para identificar su ejecutable / dll. Esto evita los trucos de cambio de nombre.

Puede solucionar esto modificando al azar bits en el programa al inicio (por ejemplo, cambiar un recurso, jugar con la versión incrustada, etc.).

Si yo fuera él, también comenzaría a buscar patrones de tráfico de red; por ejemplo, si dirige a los clientes a sus competidores, está buscando esa información desde algún lugar, por lo que elimine el proceso y / o descargue la biblioteca si un complemento accede a un sitio que está en la lista negra.

Si lleva el juego del gato y el ratón lo suficientemente lejos (p. ej., ganchos de shell para volver a crear su ejecutable / biblioteca si se elimina), es probable que el software antivirus lo marque como virus.

Otros consejos

No es muy deportivo de su competidor.

Implemente su proyecto como código fuente cifrado sin compilar. Escriba un programa de descifrado y despliegue que pueda aleatorizar, renombrar clases, reorganizar el código para evitar cualquier detección de firma en particular.

Luego compile el código en la máquina cliente usando CSharpCodeProvider para compilar su código. Puede generar ensamblajes aleatorios, con firmas de funciones totalmente aleatorias (sugiero usar un diccionario grande de palabras reales, comunes, en lugar de ser totalmente aleatorio. Puede concatenarlos juntos para más diversión, por ejemplo, Live, Virtual, Space, Office, Network, Utility. Space.Live.Network.dll, Utility.Virtual.Live.dll).

Cada versión de su programa en cada cliente será diferente. Asegúrese de ocultar su programa de implementación. Tal vez debería eliminarse después de haber instalado su versión personalizada.

  

De todos modos, mi pregunta es esta: ¿qué más puede hacer para detectar si mi programa se está ejecutando?

  • ¿Es su programa un EXE o una DLL?
  • Lo llamas complemento: ¿a qué se está conectando?
  • ¿Cómo se inicia / ejecuta / ejecuta su programa?
  • ¿Qué hace su programa para "enchufar"?
  • ¿Cuál es la API entre su programa y el otro programa?

Esta no es una respuesta a su pregunta final, sino más bien al problema descrito.

¿Qué hay de arreglar la otra aplicación? Encuentre la cadena que está buscando en los títulos y cambie alguna letra en ella.

Informe a sus clientes cuál es el problema proporcionándoles una solución para la otra aplicación en lugar de la suya.

@ryeguy ... La mejor defensa es una buena ofensiva en mi humilde opinión. Haga lo que pueda para deshabilitar su proceso antes de que deshabilite el suyo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top