2011-02-11 13 views
7

Estoy tratando de crear un simple eliminador de virus. El algoritmo he desarrollado está destinado a:Simple Virus Remover

  • inspeccionar el archivo original y el archivo infectado
  • separar el virus del archivo infectado
  • uso mismo algoritmo para la reparación de otros archivos infectados con el virus

Sé que esto es posible, ya que esta es la misma forma en que se crean los parches, pero estoy un poco perdido sobre cómo hacerlo.

¿Alguna ayuda?

+0

Si tiene acceso al archivo orignal, ¿por qué no simplemente copiarlo sobre el dañado? Parece mucho menos trabajo. – driis

+0

Creo que el objetivo es obtener una "solución" general que funcione en cualquier archivo infectado con el mismo virus. – Flynn1179

+0

@driis: Sí, es más fácil, pero no quiero hacer eso. Quiero que el programa pueda desarrollar un algoritmo para eliminar otros archivos infectados con el mismo virus. –

Respuesta

3

Tendrá que poner más inteligencia que simplemente hacer una coincidencia de patrones y eliminar el código de virus aislado.

Los virus a los que se dirige son files infectors que rara vez se utilizan en nuestros días. mayoría de las veces su proceso de replicación es la siguiente:

  1. Ellos copian a sí mismos al principio o al final de la PE files
  2. Localizar el punto de entrada de los archivos PE
  3. Ponga una instrucción de salto a esta ubicación apuntando a su código

Desinfectar un archivo es la parte más difícil para cualquier antivirus. Se basa en la calidad del código del virus: si tiene errores, el archivo host será irrecuperable.

En cualquier caso, está ingresando un mundo de instrucciones de la máquina donde los desensambladores (IDA, PE Explorer ...) y los depuradores serán sus amigos más queridos.

+0

Bueno, esta es una respuesta muy útil. Gracias. Sé acerca de los virus infectados y también sobre el tipo de infección que agrega datos a la secuencia ntfs alternativa. Parece que tengo que hacer esto por mí mismo, ya que parece que solo puedo obtener consejos aquí. –

+0

Luego descubrí el proceso de desinfección y fue todo lo contrario al proceso de infección. Y sí, depende de la calidad del código del virus, pero como un archivo infectado ya es inútil, realmente no importa si perdemos el archivo tratando de repararlo ...: -/ –

+0

Es por eso que la desinfección es decepcionante. Se requiere una gran cantidad de trabajo para un resultado aleatorio ... Combinado con el hecho de que los virus infectados ya no están "en la naturaleza" (http://www.wildlist.org/WildList/201101.htm) por un momento, es un arte perdido – Roubachof

0

Haga una diferencia de los dos archivos, la idea básica sería comparar los caracteres originales y los infectados carácter por carácter hasta y guardar discrepancias a alguna estructura de datos. Luego, en el futuro, podría buscar el "virus" que hipotéticamente sería una colección de las diferencias, en otros archivos y eliminar el "virus".

El único problema con esto es que probablemente existan discrepancias entre los dos archivos que no tienen nada que ver con el "virus", p. el archivo infectado se modificó de alguna manera diferente al original, que no tiene nada que ver con el virus.

EDIT *** La comprobación de otros archivos para el virus no sería demasiado difícil, pero estoy corriendo bajo la suposición de que está tratando con algún tipo de archivo de texto sin formato, para archivos binarios propiciatorios, no creo que sería capaz de eliminar el "virus".

+0

Básicamente ha juzgado su solución como incorrecta: -O –

+0

Estaba tratando de decir que depende del tipo de archivo que está revisando. Cualquier algoritmo que intente eliminar un virus de un archivo va a tener un problema con los archivos compilados. – checkandy

+0

No si el virus que estamos eliminando también está compilado. Solo piense en un sistema de parche y cómo funciona. O mejor piense en cómo un virus infecta un programa ya compilado. –

Cuestiones relacionadas